ページ「システムエンジニア」と「Xamarin.MacでNLogを使う」の間の差分

提供: MonoBook
(ページ間の差分)
ナビゲーションに移動 検索に移動
 
imported>Administrator
(Administrator がページ「Xamarin.Mac/NLogを使う」を「Xamarin.MacでNLogを使う」に移動しました)
 
1行目: 1行目:
'''システムエンジニア'''(英語:systems engineer、SE)とは、日本特有の情報システム分野における業種のひとつである。
+
[[Xamarin.Mac]]でも[[NLog]]を使えると捗る。
  
== 概要 ==
+
==実装1==
日本における初期のシステムエンジニアは、[[プログラマー]]のうち、才能がないと見なされた者が「技術のわかる営業職」として配置転換され「システムエンジニア」を名乗らされていた。
+
[[Xamarin.Mac]]でも[[NLog]]はなんら問題なく使用できる。[[NuGet]]から一発[[インストール]]である。試してはいないが[[MonoMac]]でも同じだと思う。
  
その後、徐々に営業職の助手としてシステムエンジニアが顧客の要求を聞き、それをもとに[[設計]]を行い、その設計をもとに[[プログラマー]][[実装]]を行うという流れに変化し、その立場が逆転していった。
+
ただし[[ファイル]]に出力する場合に注意が必要で、[[Mac OS X]]ではあらゆる[[ファイル]]は[[アプリ]]の外部に保存する必要があるため、NLog.configファイルの設定例でよく見かける「basedir変数」以下に書き込む設定は使えない。
  
== 欧米との違い ==
+
===ファイルに出力するNLog.configの設定例===
なお、国防高等研究計画局(DARPA)の偉い人が再三にわたり「[[階層化の有害性]],[[Layering Considered Harmful]]」をうったえている関係か、欧米では責任者ひとりと残り一律で下っ端という体制が一般的であり(階級の階層構造が日本ほど細かくない)、チーフの下は全員[[プログラマー]]となっていることが多い。
+
そこで以下の例では[[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"/>
  
== 英語圏における意味の相違 ==
+
  <targets>
なお、英語圏で「システムエンジニア」という場合は、[[環境システム工学]]の[[研究者]]を意味し、もっと言えば主に[[アメリカ航空宇宙局]]([[NASA]])などで科学研究を行っている天才的な研究員を指す。主に[[地球温暖化]]による[[生態系]]への影響などを[[研究]]している人たちのことである。なお、その手の研究では必須となる[[スーパーコンピューター]]や[[Fortran]]に精通している[[パソコンの大先生]]に近い者も多い。
+
    <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ファイルのプロパティの「出力ディレクトリにコピー」の値を「新しい場合のみコピー」または「常にコピー」に設定する。
 +
 
 +
===不具合===
 +
これは2015年8月3日の情報です。
 +
[[Xamarin.Mac]]において「Debugビルド」を行うとアプリ内(***.app内)のMonoBundleディレクトリにNLog.configファイルが生成(コピー)されるが、「Releaseビルド」では生成されないようだ。たぶん[[不具合]]だと思う。
 +
 
 +
==関連項目==
 +
*[[MonoMac/特殊ディレクトリのパスを取得する]]
 +
 
 +
==参考文献==
 
{{reflist}}
 
{{reflist}}
  
== 外部リンク ==
+
{{stub}}
  
{{stub}}
+
[[category:Xamarin.Mac]]
 +
[[category:MonoMac]]

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ビルド」では生成されないようだ。たぶん不具合だと思う。

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

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