2016年7月7日木曜日

ninjaのソースコードをみてみた

僕は毎週木曜日にブログを後進する傾向があるらしいのですが、毎週何かしらオープンソースをコンパイルして使っているので、月曜日から勉強し始めて木曜日くらいに勉強し終わるので、木曜に記事を書き終わります。
今週はビルドツールninjaを勉強しています。。

https://ninja-build.org/

最近ソースコードの傾向として、短く、わかりやすく、高速に動作するように書かないといけないようで、ninjaもソースコード自体はとてもコンパクトにできているmakeにかわるビルドツールです。ninja自体はとてもコンパクトなんですが、動作がものすごい高速なので、最も大規模なソースであるChromeやandroidをビルドするために使われています。makeより直感的に依存関係を記述できるし圧倒的に使いやすいです。

このninjaですが、使い方はいろいろなページで紹介されているので置いといて、ソースコードの独立性というか分割というかテストを含めた開発環境もとてもよくできています。

たとえば、構文解析の部分とかはre2cでlexer.hとlexer.ccを生成しているんですが、この二つのファイルとlexter_test.ccで構文解析部分の開発とテストが全部できます。
グラフ部分はgraph.hとgraph.ccとgraph_test.ccで全部テストと開発ができます。
すべてのプラットフォームで動いて、ファイル間の依存関係が最小だし。
コードがコンパクトで美しすぎる。

おじさんのような昔の人間が、C++言語の最新の開発環境やソースの書き方、テストコードの書き方などプログラムの基礎を勉強をするのには最適な教材だと思います。





0 件のコメント:

コメントを投稿