misc.log

日常茶飯事とお仕事と

C#でビルド後のファイルを1つに統合する(ILMergeを使う)

先に書いておきますが詳しい使い方とかじゃないです。極力簡単なやりかた。

数年前に、客先でちょっとしたアプリを作ったのですが、顧客があまりPCとかに詳しい人では無かったので、成果物を1ファイルにしたいと言うことでILMergeを利用しました。これは、複数のDLLなどを利用する.NETアプリの、ビルド後アセンブリを統合して1個にするツールです。作るのがちょっと手間でしたが、配布後のといあわせやトラブルは減りますし、楽でした。

今回、新人向けのプログラミング課題で新人に自作DLLを渡すにあたり、Newtonsoft .Json.dllなど他のDLLを含めた複数ファイルでの引き渡しを行いたくなかったので、Visual Studio 2017で初めてILMergeを使ってみることにしました。それも、最もお手軽な手順で。多分またやるときに忘れて調べる事になるので、自分用にメモしておきます。

どうも2017だとILMergeは最初からは入っていないようなので、下記の手順でNuGetパッケージマネージャーからインストールします。

  1. [プロジェクト]-[NuGetパッケージの管理]でNuGetの検索画面を開く。
  2. 参照タブの検索ワードに「ILMerge」を入れて検索。
  3. 結果から次の2つをインストールする → 「ILMerge」「MSBuild.ILMerge.Task」。
NeGetによるILMergeインストール結果
NuGetでILMergeをインストールした結果

これだけです。これで、導入したプロジェクトはビルドすると自動的に全部のDLLやらなにやらを統合して1ファイルにしてくれます。出力フォルダーも「bin/Release」などいつも通りなので、リネームとかいろいろ考えてバッチを組む必要もありません。クラスライブラリープロジェクトでも大丈夫です。複数DLLがまとまって1つのDLLになります。お手軽ですね。

なお、NuGetでインストールしたILMerge本体は、プロジェクトのフォルダーに出来る「Packages」フォルダーに入ってます。そこのILMergeを直接実行して手作業で統合することもできそうです。

TMPGEnc Smart Renderer 6購入するか?

普段から動画編集に使っている、TMPGEnc Video Mastering Worksの製造元、ペガシスから先月、新製品の紹介メールが来ていたので体験版を使ってみていました。製品はTMPGEnc Smart Renderer 6。動画のカット編集に特化したソフトで、動画を別の形式にエンコードするのではなく、元の動画形式を保ったままカットのみを行うソフトです。切れ目に当たる部分以外はエンコード無しで出力するので、15~30分程度の動画であればカット具合にもよりますが1分~数分で不要部分をそぎ落とした動画に加工可能です。値段は税込みで7,313円。

何が良いと思ったかというと、CMカット機能。CMなどに相当する動画の変わり目を自動検出してくれるので、カットすべき部分の候補を探す手間が大幅に省けます。1ヵ月使ってみて非常に良いな……と思ったのですが、ふとおもったのが

「Video Mastering Worksの最新版にはこの機能あるんじゃない?」

調べてみました。無い!でも……CM検出プラグインTMPGEnc Movie Plug-in Commercial Candidates Detector」というものがあります。これ、今使っている古いバージョンのVideo Mastering Works 5でも使えるらしい。

tmpgenc.pegasys-inc.com

値段は税込みで2,913円……。んー迷う!ちょっとこのプラグインの体験版も使ってみます。

TMPGEnc Video Mastering Works 7|ダウンロード版

TMPGEnc Video Mastering Works 7|ダウンロード版

  • 発売日: 2018/11/21
  • メディア: Software Download

プログラミング教育の現場

大変だろうな……とおもいます。なにがって、教える側。

note.com

情報処理 2020年8月号

情報処理 2020年8月号

  • 発売日: 2020/07/31
  • メディア: 雑誌

プログラミングって何かが出来ればそれでOKではなく、いろんな知識や経験の蓄積の上に成り立っている手段の1つなので、最終的な、世間一般の人が思う「プログラミング」に到達するまでにはいろいろと壁があるとおもいます。それを乗り越えていく最初の一歩を義務教育で教えよう、というのであれば良いのですが、どうも「世間一般の人が思うプログラミング」がいきなり対象になってるような印象が。

4年生大学を出た新人に教えるのでも結構大変なのに、小中学生に、それも世間からは「プログラミング教育始まったってことは、こうだよね」みたいな勝手な期待を教え付けられた状況での教育って、もう現場に立つ先生が気の毒でなりません。

そういう場に何かしら役立てるような仕事とかないのかな……。かつて、コースアウトしそうになった時に選択肢の1つとして挙がっていた「情報系の教員」という仕事、今なら出来る気がするんですよね。