普通は依存のファイルを使ってターゲットファイルを作るコマンドになります。いう規則があるので注意しましょう。先ほどのC言語の例をMakefileにしてみると、このようになります。hello雰囲気が掴めたでしょうか。これでは「hello」の繰り返しがちょっと冗長な気がしますね。様々な省略記法(自動的に定義される変数)があり、これと同じ意味をこのように書けます。いう名前のファイルがあると自動的に読み取ってコマンドを実行します。エコーバックされ、コマンドが実行されファイルが生成されました。省略記法はもっとたくさんあり、より少ない記述でルールを作ることもできるのですが、ここでは省略します。基本的な使い方が分かったところで一歩次に進みましょう。ファイルの更新状態判定makeはターゲットと依存ファイルの更新時刻を自動的に判定します。ターゲットのファイルが存在して、かつ依存ファイルより新しい時、ビルドする必要がないと判断してコマンド実行をスキップしてくれます。コマンドを実行してみましょう。コマンドは実行されずにスキップされました。一瞬で終わるコマンドならともかく、時間のかかるコンパイルなどでは非常に嬉しいですね。ここでのポイントは「ファイルの更新時刻」が判断の元になることです。コマンドが実行されることになります。hello複数のルール1つのMakefileには複数のルールを定義できます。コマンドは第1引数にターゲット名を受け取ります。いうコマンドを実行すればOKです。ルールの連鎖ビルドの内容によっては中間生成物が発生する場合もあります。ファイルを作ってリンクするようなケースですね。ルールを連鎖させられます。ここでAを作るルールを実行すると、makeは依存関係を解決してD→C→B→Aを作る処理を実行してくれます。いう状況を考えてみましょう。JSONを返すAPIの例としてお天気Webサービスを参照させていただきます。これを使うと、私の住んでいる東京の天気は次の要領で取得できます。http://weather.livedoor.com/forecast/webservice/json/v1?city=130010ここで取得できるJSONデータから、直近の天気をCSVにしたいとしましょう。これはjqでこのようなクエリを書くと実現できます。213k"今日","2019-03-06","曇のち雨""明日","2019-03-07","曇時々雨""明後日","2019-03-08","晴時々曇"このワンライナーコマンドは実行するたびにAPIにアクセスしてしまいます。アクセス回数を抑えるため、curlの結果を中間ファイルとして取っておくことにしましょう。いうことで、ここでmakeの出番です。$@複雑になりました。変数が5つ、ルールが2つ定義されています。CSV_FILEの依存としてJSON_FILEが定義されているところに注目してください。"今日","2019-03-06","曇のち雨""明日","2019-03-07","曇時々雨""明後日","2019-03-08","晴時々曇"APIを叩いてCSVファイルが出来上がりました。APIの結果が中間ファイルとしてJSONファイルをローカルに保存しているので、CSVファイルを消して再実行するとAPIにアクセスせずにCSVを再生成できます。前掲のMakefileではAREA_TOKYOとTARGET_AREAの変数定義を分けていました。いうと、実行時にパラメタを与えて動作を変えることができるからです。次の構文で実行してみます。"今日","2019-03-06","雨""明日","2019-03-07","曇時々雨""明後日","2019-03-08","晴時々曇"ルールを変えずに大阪のCSVファイルを生成することができました。いうコマンドも「TARGET_AREAが...のものを作る」と自然に読めて理解しやすいです。このように差し替え可能な部分は適切な変数としておくことで、より分かりやすく柔軟で便利なルールになります。まとめちょいと長くなりましたので、続きは応用編として後日に回そうと思います。makeは汎用的に使えるビルドツールの1つです。*nix系OSであれば最初から使えます。makeというコマンド名がイカしてます。scriptはちょっと分かるけどmakeは知らない。14:40Tweet関連記事2021-05-06ESLintの設定値が期待した値になっているか確認するテストマッチャーを作ろうこんにちは。開発部のcw-sayamaです。前回の投...2019-12-27makeはいいぞ(実践編)こんにちは、あらいです。年の瀬ですが3月に書いた記事の続きで...2019-10-01variantdev/modとmergify.ioで始める依存パッケージの自動管理こんにちは!SREのid:cw-ozakiです。installできるようになったツールをふりかえるこんにちは。サーバサイド開発部の火村(@eielh)です。ロードバランスさせる検証SRE部のcw-sakamotoです。@Chatwork_devメンバーid:cw-oritaid:okuzawatsid:d-hayashiid:shibe23id:cw-jeromechaid:cw-araiid:tinpayid:cw-sakamotoid:rabe1028id:cw-suetakeid:lmdexprid:cw-shinyaid:cw-takaseid:cw-niinumaid:j5ik2oid:tan-yukiid:yamakenji24id:yoshiyoshifujiiid:cw-ayumitakahashiid:cw-furuyaid:kaz3284id:cw-ozakiid:cw-nishikawaid:daiksyid:tasuku43id:louvre2489id:sykt13id:yamatomo73id:cw-kasugaid:cw-mottyid:cw-nishiguchiid:s12btid:cw-sayamaid:cw-moriyaid:cw-makotoikedaid:cw-yoheihayashiid:wakakumaid:cw-sakaguchiid:cw-matsubaid:ymgnid:shige0501id:nottegraid:shinharadid:eielid:cw-michihiroid:crossroad0201id:cw-miyashitaid:agoetcid:at-akaid:cw-chibaid:tenslerid:cw-akatsuid:cw-kajiwaraid:cw-otakeid:TomokoNishinaid:cw-tanakaid:cw-hayashiid:cw-marikoid:cw-shinmenid:cw-masakiid:cw-hayama最新記事モバイルアプリ開発チーム、カンバンはじめました。(1)引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。