ページ「職業プログラマー」と「Xamarin.MacでNLogを使う」の間の差分

提供: MonoBook
(ページ間の差分)
ナビゲーションに移動 検索に移動
imported>Administrator
 
imported>Administrator
(Administrator がページ「Xamarin.Mac/NLogを使う」を「Xamarin.MacでNLogを使う」に移動しました)
 
1行目: 1行目:
'''職業プログラマー'''とは、[[プログラミング]]を行うことで賃金を得て、ご飯を食べている[[プログラマー]]のことである。
+
[[Xamarin.Mac]]でも[[NLog]]を使えると捗る。
通称'''PG'''。
 
  
日本では[[設計]]を[[システムエンジニア]][[実装]][[コーディング]])を[[プログラマー]]が行うのが一般的となっている。
+
==実装1==
また、本当に[[設計書]]どおりに[[コーディング]]を行うだけの人を[[コーダー]]と呼ぶ。
+
[[Xamarin.Mac]]でも[[NLog]]はなんら問題なく使用できる。[[NuGet]]から一発[[インストール]]である。試してはいないが[[MonoMac]]でも同じだと思う。
さらに、その大多数が[[IT土方]]と呼ばれ、奴隷のような扱いであり出世も安定も得られないことが多い。
 
  
一方、北米などでは自分で[[設計]]したものは自分で[[実装]]することが一般的であり、[[システムエンジニア]][[プログラマー]]の境界がない。
+
ただし[[ファイル]]に出力する場合に注意が必要で、[[Mac OS X]]ではあらゆる[[ファイル]][[アプリ]]の外部に保存する必要があるため、NLog.configファイルの設定例でよく見かける「basedir変数」以下に書き込む設定は使えない。
また、天才プログラマーかつ狂暴な人は[[プログラマー]]ではなく[[チーフアーキテクト]]と呼ばれる。
 
[[設計]]および[[実装]]の両方をできない[[プログラマー]]は人間扱いされず、日本で言われる[[IT土方]]よりも更に酷い待遇となっているが、実績を上げ、昇格するといきなり王侯貴族のような扱いを受ける社会構造となっているため、その向上心たるや桁違いである。
 
  
== 職業プログラマーの待遇の変化 ==
+
===ファイルに出力するNLog.configの設定例===
職業プログラマーは、かつては「20代で庭付き一戸建て現金払い」が当たり前と言われるほどの待遇であり、まるで王侯貴族のような扱いであった<ref>http://www.kh.rim.or.jp/~nagamura/misc/stroustrup-interview.html</ref>。
+
そこで以下の例では[[Mac OS X]]では定番の「~/Library/Logs/」以下に出力してみた。
  
だが、近年では「低賃金」「無保障」「早期退職」などと冷遇され、土木作業員よりも遙かに薄給で、ビルがある限り仕事は無くならないビルメンよりも仕事の保障はされず、通称「[[IT土方]]」と呼ばれるほどに落ちぶれている。
+
<source lang="xml">
 +
<?xml version="1.0" encoding="utf-8" ?>
 +
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
 +
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 +
      xsi:schemaLocation="http://www.nlog-project.org/schemas/NLog.xsd NLog.xsd"
 +
      autoReload="true"
 +
      throwExceptions="false"
 +
      internalLogLevel="Off" internalLogFile="c:\temp\nlog-internal.log" >
  
このような変化の原因としては、[[計算機]]はそこそこ使えるが、計算自体は自分で出来ない「なんちゃってプログラマー」の増加により、自分のお金の計算すらできない者が大多数を占めたことによるものだと言われている。
+
  <variable name="appname" value="monobook"/>
  
それに伴い「[[Write Once, Run Away]]」な[[システム]]も急激に増えている。
+
  <targets>
 +
    <target xsi:type="File" name="logfile"
 +
    fileName="${specialfolder:folder=MyDocuments}/Library/Logs/${appname}/${shortdate}.log"
 +
        layout="${longdate} ${uppercase:${level}} ${message}" />
  
== 主な細分類 ==
+
    <target xsi:type="Console" name="console" />
職業プログラマーと一言でいっても業種ごとに業務内容も待遇も大きく異なっている。
 
* [[医療系システム]]
 
* [[勘定系システム]]
 
* [[組み込みプログラマー]]
 
* [[ゲームプログラマー]]
 
  
また、業種そのものではなく、特定企業間の繋がりを[[ドメイン]]([[インターネット]]でいう[[ドメインネーム]]ではない)と呼ぶこともある。
+
  </targets>
  
== 職業プログラマーの年収 ==
+
  <rules>
職業プログラマーの年収は基本的には業種(ドメイン)ごとに大きく異なる。
+
    <logger name="*" minlevel="Trace" writeTo="logfile" />
また、年収のみならず雇用条件全般も業種(ドメイン)ごとに大きく異なる。
+
    <logger name="*" minlevel="Info"  writeTo="console" />
 +
  </rules>
 +
</nlog>
 +
</source>
 +
NLogに設定するパスは[[絶対パス]]なので、ホームディレクトリのパスの取得は「[[MonoMac/特殊ディレクトリのパスを取得する]]」を用いてMyDocumentsを指定することで取得した。
  
一部では職業プログラマーの年収を[[プログラミング言語]]ごとに分類している資料もあるが、職業プログラマーの年収は[[プログラミング言語]]に依存するものではなく、あくまで業界(ドメイン)で決まるものである。
+
また、NLog.config中でアプリ名を動的に取得する方法がわからなかったので、この例では自前でappname変数を用意している。
  
ただ特定ドメインが「異常に好む[[プログラミング言語]]」という物も存在するのも事実である。
+
===備考===
 +
NLog.configは初期状態でビルド時にコピーされない設定になっていると思うので修正するのを忘れないこと。NLog.configファイルのプロパティの「出力ディレクトリにコピー」の値を「新しい場合のみコピー」または「常にコピー」に設定する。
  
たとえば素人に毛の生えたような[[プログラマー]][[デザイナー]]の世界では[[オワコン]]と言われる[[Flash]]([[ActionScript]])だが、主に広告業界などでは問題発生率が低くロスの少ないという理由でFlashが根強く生き残っている。そして広告業界自体の年収が高いため、その仕事を請け負う職業プログラマーの年収も比例して高い。
+
===不具合===
 +
これは2015年8月3日の情報です。
 +
[[Xamarin.Mac]]において「Debugビルド」を行うとアプリ内(***.app内)のMonoBundleディレクトリにNLog.configファイルが生成(コピー)されるが、「Releaseビルド」では生成されないようだ。たぶん[[不具合]]だと思う。
  
同様に、世間で[[コボラー]]と呼ばれる[[COBOL]]を主とする職業プログラマーも、そこに目新しさは無いものの、定時出退社、常識的な福利厚生、常識的な年収などと非常に安定した職を得ていると言われている。
+
==関連項目==
 +
*[[MonoMac/特殊ディレクトリのパスを取得する]]
  
=== 転職の重要性 ===
+
==参考文献==
ここで勘違いする人が多いのが、年収の低い職業プログラマーが、年収の高い特定ドメインが好む[[プログラミング言語]]を覚えても無意味であるという点である。職業プログラマーの年収は業界(ドメイン)に依存し、同じ業界(ドメイン)にいる限りは待遇は基本的にかわらない。
+
{{reflist}}
  
つまり待遇の改善には「転職」をする必要がある。
+
{{stub}}
 
 
=== 独立起業 ===
 
ここでさらに間違いを犯す人が多いのが独立起業で、年収の低い職業プログラマーから抜け出そうと独立起業するケースである。独立起業するも年収の低い業界(ドメイン)の繋がり(いわゆるコネ)しかないため失敗するケースが大多数を占める。
 
 
 
待遇改善は特定業界に入り込むパイプがないとどうにもならない問題であり、基本的にはまず転職をしてコネを作る必要がある。
 
  
== 関連項目 ==
+
[[category:Xamarin.Mac]]
* [[IT土方]]
+
[[category:MonoMac]]
* [[システムエンジニア]]
 
* [[プログラマー]]
 
** [[日曜プログラマー]]
 
* [[Bjarne Stroustrup インタビュー]]
 
 
 
== 参考文献 ==
 
<references/>
 
 
 
== 外部リンク ==
 
 
 
{{stub}}
 

2019年5月22日 (水) 05:13時点における最新版

Xamarin.MacでもNLogを使えると捗る。

実装1[編集 | ソースを編集]

Xamarin.MacでもNLogはなんら問題なく使用できる。NuGetから一発インストールである。試してはいないがMonoMacでも同じだと思う。

ただしファイルに出力する場合に注意が必要で、Mac OS Xではあらゆるファイルアプリの外部に保存する必要があるため、NLog.configファイルの設定例でよく見かける「basedir変数」以下に書き込む設定は使えない。

ファイルに出力するNLog.configの設定例[編集 | ソースを編集]

そこで以下の例ではMac OS Xでは定番の「~/Library/Logs/」以下に出力してみた。

<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://www.nlog-project.org/schemas/NLog.xsd NLog.xsd"
      autoReload="true"
      throwExceptions="false"
      internalLogLevel="Off" internalLogFile="c:\temp\nlog-internal.log" >

  <variable name="appname" value="monobook"/>

  <targets>
    <target xsi:type="File" name="logfile" 
    	fileName="${specialfolder:folder=MyDocuments}/Library/Logs/${appname}/${shortdate}.log"
        layout="${longdate} ${uppercase:${level}} ${message}" />

    <target xsi:type="Console" name="console" />

  </targets>

  <rules>
    <logger name="*" minlevel="Trace" writeTo="logfile" />
    <logger name="*" minlevel="Info"  writeTo="console" />
  </rules>
</nlog>

NLogに設定するパスは絶対パスなので、ホームディレクトリのパスの取得は「MonoMac/特殊ディレクトリのパスを取得する」を用いてMyDocumentsを指定することで取得した。

また、NLog.config中でアプリ名を動的に取得する方法がわからなかったので、この例では自前でappname変数を用意している。

備考[編集 | ソースを編集]

NLog.configは初期状態でビルド時にコピーされない設定になっていると思うので修正するのを忘れないこと。NLog.configファイルのプロパティの「出力ディレクトリにコピー」の値を「新しい場合のみコピー」または「常にコピー」に設定する。

不具合[編集 | ソースを編集]

これは2015年8月3日の情報です。 Xamarin.Macにおいて「Debugビルド」を行うとアプリ内(***.app内)のMonoBundleディレクトリにNLog.configファイルが生成(コピー)されるが、「Releaseビルド」では生成されないようだ。たぶん不具合だと思う。

関連項目[編集 | ソースを編集]

参考文献[編集 | ソースを編集]