そういえばこちらの方ではすっかり書いてませんでしたが、自分はプログラミングというのは、料理に非常に近いなと思ってます。
まず第一にレシピどおりにはいかないということ。
実際に完成したレシピが手元にあったとしても、そのとおりに物が作れるということはなく、何らかの読み替えが発生する。
もう一つは材料に対する考え方。
素材の特徴を知り、どう調理すればいいかを考える。そうすると、いろいろな形で応用が利く。
その流れはプログラミングでも料理でも同じようなものかなと思います。
プログラミングと料理
プログラミングと料理というのは、上で書いたとおり、結構近いところがあると思っています。
以前プログラマーの知人にこの話をしたところうなずかれたので、多分そういう思いを持っている人もいるんじゃないかな。
レシピ通りにいかないとはどういうことか
料理って多分どんなプロが書かれたレシピであっても、そのとおりに料理を作れるということはないと思っています。
例えば二人前のレシピを、一人前で作るというとき。
濃い味がちょっと苦手という人が、味の濃い料理のレシピを参照するとき。
L玉の卵を使うレシピを使いたいものの、自分の家にはM玉の卵しかなかったというとき。
そのほかにも、ガスコンロキッチンとIHキッチンとの中火というのは違うし、地方や天気によって調味料の分量や味が変わってくるということもあるでしょう。
このように、レシピって状況によって、大きく変わってくる。
同じようなことがプログラミングにも言えます。
「これこれこうすればうまくいくよ」という話があったとしても、 OSやバージョンが違えば、そのとおりとはいかないかもしれないし、違う言語の成功事例を取り込むには、それなりの読み替えが必要です。
この辺はすごく、プログラミングにも料理にも共通するところがあるのではないかなと。
材料(モジュール)と食材
そして材料の考え方。
知らない食材を使ったり、あまり使ったことのない組み合わせで何か料理を作ろうというとき。
食材ごとの特性を見て調理方法を決めるということはあると思います。
プログラミングでも同じように、やりたいことからモジュールや言語機能など、使えそうな材料を集めて、どう使えば目的に近いものが作れるのか考えていく。
その工程や考え方は、プログラミングも料理も共通するところがあるのではないでしょうか?
自分は専門的にプログラミングを行う会社で仕事をしたことがありません。
潤沢に環境が整っている開発系企業ならともかく、そうでないところでは、そのときどきで使える環境やツールが違ったりする。
そんなときに、今使える材料を使ってアプリを作るということを、自分はよくやります。
自分はそれを、冷蔵庫プログラミングと呼んでいました。
ありものを適当に使って、とりあえず使えるものを作る。その考え方はとても料理的だなと思っていました。
料理が好きな人、案外プログラミングにも適性があるかもしれないという話
そう考えると、料理好きな人って、ひょっとしたらプログラミングに適性があるかもしれないなんて思ったりします。
自分はプログラミングが先だったわけですが、結果的に今料理もやってますし、どちらもそこそこに好きです。
だから、ひょっとしたら逆も言えるんじゃないかなと。
自分が料理のレシピをGithubにまとめはじめたのは、半分ぐらいそれが意図でもあるわけで。
料理をする人がこのレシピを見て、ついでにプログラミングというものを知る。
逆にプログラマが、ここから料理を知る。
そういう異分野が混ざり合うきっかけにはなり得るかなと、ちょっと思っています。かなりおまけですけど。
ただ以前聞いた、「全く知識がないままUnityのコミュニティイベントに参加して、終わった頃には立派なUnityプログラマになっていた」という主婦の方のお話を思い出すと、そういった、両方の文化に乗っかっている何かというのが、あってもいいのかな と、最近思います。
特に、自分たちまちづくりエージェント SIDE BEACH CITY.は、そういう大規模な越境というものを推し進めたい。
そのための一つの施策になったりしないかななどと思ったりします。
料理は専門職じゃない人もするけど、プログラミングはあんまりそうでもないよね?
ここ最近思うこと。
それは、料理ってそれ自体を仕事にしているという人ばかりではないし、そういう人も脚光を浴びる機会があるけど、プログラミングってそうでもないよね?ということ。
確かに、自分のように本職以外でプログラミングをする人はいます。
でもそういう人が脚光を浴びる機会って、そんなにあるでしょうか?せいぜい有名なソフトを作って、窓の杜などに紹介されるぐらいではないでしょうか?
個人的にはもっと、専門職以外でプログラミングをするという人が脚光を浴びて欲しい。そして、専門職以外でプログラミングをするという人が増えてほしい。
それは、そういう人にしか解けない課題というものがあるから。
専門職でプログラミングをする人が目にも留めない小さな課題を解決するためのプログラム。
それを作るのは専門職以外の人しかいない。もっと言うと、仕事以外でプログラミングをする人しかいないのではないか?
だからこそ、そういう人がもっと一般的になってほしいし、そういう人が活躍する場がもっと増えてほしい。
別にお金に結びついて欲しいとか、そういうことではない(まあ、ちょっと期待してはいるけれど)。
でもそうやって、仕事以外でプログラミングをちょっとやって、ちょっとした課題を解決していく。
そんな人が増えていくことが、プログラミングというものの認知度を上げ、ひいてはプログラマー自体の立場をよくすることにもつながるのではないかなと思ったりします。