Makefileを書いていると、$@ や $< みたいな記号や、= と := の使い分けで手が止まりがちです。この記事は変数まわりだけを逆引きでまとめたチートシートです。挙動はすべて手元の GNU Make で実行して確認しています。
もっと踏み込んだ仕様は GNU Make 4.4 日本語マニュアル 第6章「変数の使い方」 を参照してください。この記事はその逆引き版です。
Makefileを書いていると、$@ や $< みたいな記号や、= と := の使い分けで手が止まりがちです。この記事は変数まわりだけを逆引きでまとめたチートシートです。挙動はすべて手元の GNU Make で実行して確認しています。
もっと踏み込んだ仕様は GNU Make 4.4 日本語マニュアル 第6章「変数の使い方」 を参照してください。この記事はその逆引き版です。
= と := の違い(ここだけは押さえる)Makefile で「デバッグビルドのときだけフラグを足したい」「OS ごとにコマンドを変えたい」といった分岐をしたいとき使うのが ifeq と ifdef です。書き方に少しクセがあるので、実例つきでまとめました。挙動はすべて手元の GNU Make で実行して確認しています。
仕様の詳細は GNU Make 4.4 日本語マニュアル 第7章「Makefileの条件分岐」 を参照してください。この記事はその実例版です。
ひさしぶりに、まとまった翻訳作業をふたつ仕上げた。ひとつは GNU Make マニュアルの全面更新、もうひとつは ImageMagick 公式ドキュメントの日本語訳だ。どちらも「日本語でちゃんと読めるリファレンスが欲しい」という、自分自身の不満から始めている。
このサイト(ecoop.net) には昔から GNU Make の日本語訳 を置いている。バージョンは 3.77、原典は 1998年5月のもので、訳を仕上げたのが 2002年。かれこれ20年以上、ずっとそのままだった。
その間に GNU Make 本体は止まらず進化していて、最新は 4.4。3.77 の頃とは用語からして変わっている。
&:、順序のみ前提条件 |、.EXTRA_PREREQS、即時展開代入 :::=、!=(shell代入)など、新しい文法がいくつも増えた$(file ...)・$(eval)・$(let)・$(intcmp) といった関数、Guile 連携や動的オブジェクトのロード、ジョブサーバ、出力同期(-O)など、機能面も大きく広がった要するに、20年前の訳はもう「現役のリファレンス」としては古すぎた。そこで 4.4 を一から訳し直すことにした。28年前(1998年)のマニュアルを、ようやく現在に追いつかせた格好だ。
ただ、ただ新しく訳せばいいというものでもない。旧 3.77 訳には、直訳ではなく日本人が読んで自然に理解できるように噛み砕いた意訳という、当時のこだわりがあった。新訳でもそのテイストは引き継ぎたかった。
そこで今回は、訳を始める前に 翻訳辞書(用語集) と 文体スタイルガイド を先に整備した。
target=ターゲット prerequisite=前提条件 recipe=レシピ … と用語を固定全16章+付録A〜Dを、この基準に沿って訳した。旧 3.77 訳も消さずに残してあるので、見比べてもらってもいい。
なお付録D(GFDL)は、ライセンス文書の性質上、英語の原文だけが正式に有効なので、原文をそのまま正本として載せ、日本語は説明の注記にとどめている。
ついでに。というには規模が大きいが、もうひとつ密かに勧めていたプロジェクトのほうも公開した。 ImageMagick だ。画像変換の定番ツールで、コマンドラインからほぼ何でもできる。実際とても便利なのだが、まとまった日本語情報がとにかく少ない。断片的なブログ記事はあっても、リファレンスとして通して読めるものが見当たらない。
一方で、公式ドキュメントはかなり充実している。コマンドラインオプション、各種フォーマット、色管理、アーキテクチャ解説まで揃っている。これだけ良い原典があるなら、訳さない手はない——というのが動機だ。
そこで、公式ドキュメントを翻訳して通読できる形にした。日本語を主軸にしつつ、本家が対応していない多言語(英・中・西・仏・葡)へも展開している。日本語だけで 58ページほどある。
こちらは ImageMagick Studio LLC とは無関係の非公式翻訳なので、各ページに帰属表示・非公式である旨・原文へのリンクを必ず添えている。正確な情報が要るときは原文を参照してほしい。ライセンスページも、正文は英語原文を保持して要約だけを参考訳にしてある。
どちらも「英語で読めば済む」と言われればそれまでだが、母語でスッと頭に入る一次資料があるのとないのとでは、学習や調べ物のしやすさがまるで違う。自分が欲しかったものを作った、というのが正直なところだ。
訳の誤りや読みにくい箇所に気づいたら、ecoop.net まで教えてもらえると助かります。