makeで確認。幸せを作る方法。
makeについて考えていた時に、ふと閃いたある1つのアイデアを共有したいと思います。エンジニアの卵達から耳にする事の多い「makeに慣れない。」という言葉。
以前からどうすれば楽しく伝えられるかなぁと考えていました。
先ほど少しだけ面白い方法を考えついたので御紹介します。
名付けて「makeで確認。幸せを作る方法。」です。
用意するもの
- GNU make
- テキストエディタ
基本ルール
- Makefileという名前のファイルをテキストエディタで作りましょう。
- コロンを境に、左側に得たい事、右側に必要な事を書きましょう。
- 得たい事と必要な事の組は複数あっても構いません。
- 得たい事を実現するための記述は、組み合わせの下に書きます。
やってみよう(実例)
私は、最終的に「幸せ」を手に入れたいと考えました。基本ルールによると、コロンの左側に得たい事を書きますから以下のようになります。
happy :
次に「幸せ」のために必要な要素を、コロンの右側に書きます。
happy : time dream family friends
私は、幸せの実現のために、時間、夢、家族、友達を挙げることにしました。
次に、幸せに必要な各要素にも、必要な事があるかもしれません。
それについて書いてみます。
time :
dream :
family :
friends :
本当はこれらの要素にも必要な事があるのですが、無尽蔵に広がってしまうので、ここでは「いずれの要素についても、何も必要無し。」という事にします。
実際にmakeを実行した時に楽しくなるように、上記の結果に加えて実際の動作を行うコードを付け加えます。
実際の動作はコロンで結んだ関係図の一行下に記述するようになっています。
この行だけ特別にTABを頭に入れるルールになっています。
完成したのが以下のリストです。 (コードの中の「>-------」はTABに置き換えて下さい。)
happy : time dream family friends >-------cat elm_time elm_dream elm_family elm_friends > my_happy time : >-------echo "The time." > elm_time dream : >-------echo "The dream." > elm_dream family : >-------echo "The family." > elm_family friends : >-------echo "The friends." > elm_friends
それでは実際に動作させてみましょう。
> make
echo "The time." > elm_time
echo "The dream." > elm_dream
echo "The family." > elm_family
echo "The friends." > elm_friends
cat elm_time elm_dream elm_family elm_friends > my_happy
見事に「私の幸せ(my_happy)」が完成しました。
ちょっと幸せの中身を覗いてみましょう。
> cat my_happy
The time.
The dream.
The family.
The friends.
こんな感じで幸せが完成しました。
Makefileは基本的に「コロンで結んだ依存関係」を「解決するための実行」を記述するようになっています。上記の例のように最終的に欲しいものが4つから構成されていても、1つずつ丁寧に依存関係とその解決方法を書いてあげれば良いのです。
ここでもう1つ実験してみましょう。
必要な要素が足りないケースを作ってみます。
先ほどの「幸せ」に必要な要素に「お金」を加えてみます。世知辛いですね。
(コードの中の「>-------」はTABに置き換えて下さい。)
happy : time dream family friends money
>-------cat elm_time elm_dream elm_family elm_friends > my_happy
time :
>-------echo "The time." > elm_time
dream :
>-------echo "The dream." > elm_dream
family :
>-------echo "The family." > elm_family
friends :
>-------echo "The friends." > elm_friends
上記にお金の作り方は示されていません。
この状態でmakeを実行してみます。
> make
echo "The time." > elm_time
echo "The dream." > elm_dream
echo "The family." > elm_family
echo "The friends." > elm_friends
make: *** `happy' に必要なターゲット `money' を make するルールがありません. 中止.
あらら。
幸せの生成が中止されてしまいました。
お金の作り方がわからなかったからです。
実際にお金の作り方を教えてあげます。
(コードの中の「>-------」はTABに置き換えて下さい。)
happy : time dream family friends money
>-------cat elm_time elm_dream elm_family elm_friends elm_money > my_happy
time :
>-------echo "The time." > elm_time
dream :
>-------echo "The dream." > elm_dream
family :
>-------echo "The family." > elm_family
friends :
>-------echo "The friends." > elm_friends
money :
>-------echo "The money." > elm_money
これで改造版の幸せが生成されるはずです。
> make
echo "The time." > elm_time
echo "The dream." > elm_dream
echo "The family." > elm_family
echo "The friends." > elm_friends
echo "The money." > elm_money
cat elm_time elm_dream elm_family elm_friends elm_money > my_happy
> cat my_happy
The time.
The dream.
The family.
The friends.
The money.
幸せの中身に「お金」が追加されていますね。
成功です。
こんな風にmakeはシンプルなルールの組み合わせで多彩な出来事を作り出すことができるようになっています。 プログラムのコンパイルのためだけでなく、様々な事に応用して楽しむことができるのです。
今回の記事では、構造に慣れ親しむ要素に絞って御紹介しました。
上記要素が骨格を成して、様々な便利な機能を実現できるようになっています。
次の機会にそれらについても触れてみたいと思います。
是非みなさんもmakeで遊んでみて下さい。
そして、makeで悩んでいるエンジニアの卵達には、是非楽しい教え方を試してみて下さい。