haphysics blog - 幸福の物理ブログ

みんなに物理と工作と幸福をお届けするのだァ~!

最近rogy内で流行りのNinjaをはじめてみた

ロボット技術研究会で流行ってる

 メインストリームから外れたものがロボット技術研究会の中で流行るのはよくあることです。例えばLinuxディストーションの一つ、Arch Linuxはそのうちの一つです。ちょっと前までWindowsさいこ〜〜〜って人たちがこぞって「シンプルであるべし」と言いながらArch Linuxをいじるようになってしまった。
 で、今回私が勧められるがままに始めたNinjaもまたマジョリティから外れたものです。

Ninjaは速いらしい

 Ninjaとは自動ビルドツールの一つです。自動ビルドツールGNU MakeやOMake,CMakeなどがあります。特にNinjaは他の自動ビルドツールと違ってビルドのスピードに焦点を当てたものらしい。NinjaはChromiumの開発者が既存のビルドツールに不満を抱いていた結果の産物だとかなんとか。
Ninja, a small build system with a focus on speed

とりあえずNinja

 同じディレクトリ内にこんなファイルがあるとします。

 で、ninjaをするためにbuild.ninjaをこんな感じで書きます。Makefileっぽいやつです。リファレンスを見ながら書いてみました。

 後はninjaするだけでビルドが実行されるというワケです。

 Ninjaの特徴は依存関係の指定と実行する処理が明確に分かれているところと言えそうです。

Ninja自動生成スクリプトを書いてみた

 困ったのが依存関係の指定。どうやら自動ではやってくれないらしい。例えばMakefileなら

って書くのだがNinjaは自分でやってねって感じらしい。
 だからNinjaを自動で作ってくれるスクリプトPythonで書いてみた。

 同じディレクトリにあるソースファイルの名前を片っ端から拾い上げてNinjaファイルの依存関係指定に逐次追加することができます。

もうちょっと使ってみる?

 今日初めて使ってみた感じ、makeとの速さが実感できなかったり自動生成スクリプトが突貫だったりと消化不良。Makeでは混ざっていた依存関係指定と実行方法が明確に分けられていたので直感的にわかりやすい、かな。
 ともあれもう少しこのNinjaを触ってみることにします。

└(՞ةڼ◔)」<紹介してくれた部員たちに感謝ァ~~~!