株式会社クイックのWebサービス開発blog

HAPPYなエンジニア&デザイナーのブログです

【初心者向け】料理で学ぶプログラマ思考~プログラムの全体像を知る~

アプリケーションエンジニアをしているhamanokamiです。


昨今、オバマ大統領、スティーブ・ジョブズホリエモンが言っているように、
プログラマ思考を知っておくことは、今後ビジネスの世界で戦うために、
必要なスキルの1つになってくるでしょう。

ただプログラミングと聞くと、非エンジニアの人やエンジニア初心者は、
堅苦しく難しいイメージがあると思います。

そこで今回は、その方達を対象に比較的日常になじみのある
料理に例えてプログラマ思考の基礎を説明します。

カレーをつくってみる

まずみなさん料理をつくるとき、何を決められますか?
そうです、「何を作るか」ということです。

「何を作るか」が決まったら、次は何をしますか?
そうです、「それをつくるために必要な材料、道具」を用意します。

最後はその料理をどうつくるかという「料理工程」を把握し、
実際につくります。


みなさんは料理をつくるとき、意識的・無意識に関わらず、
これら3つのことを明確にし、料理をされると思います。

  • 何を作るか
  • それをつくるために必要な材料、道具
  • 料理工程

より具体的にイメージをしてもらうために、
カレーを例に説明していきます。

何を作るか

今回カレーを例にしましたが、カレーと言っても、
夏の野菜をふんだんにつかったカレーやインドカレーなど、
いろいろな種類のカレーがあるので、
どんなカレーを作るのか明確にします。
この例では、夏の野菜をふんだんにつかったカレーをつくることにします。

この「何をつくるか」という部分をプログラマ思考に置き換えると、
最終的に欲しい成果物(アウトプット)になります。
例えば、「某緑色ロゴのようなチャットができる機能」をつくるという具合です。

それをつくるために必要な材料、道具

次にカレーをつくるために必要な材料・道具を用意します。

夏の野菜をふんだんにつかったカレーなので、
夏が旬の野菜を材料として用意しないといけないですよね。

もし大根など冬が旬の野菜を選んでしまうと、
「夏の野菜をふんだんにつかったカレー」という
成果物に見合わないカレーとなってしまうので、
材料の選択は大事です。

また道具に関しても、包丁を用意していないと、
非常につくりづらいため、適切な道具の用意が望ましいです。


■材料

  • カレー粉(スパイス)
  • 豚肉
  • トマト
  • 茄子
  • パプリカ

etc.

■道具

  • フライパン
  • お鍋
  • 包丁

etc.


ここでいう「材料・道具」をプログラマ思考に置き換えると、
入力(インプット)になります。
例えば、「チャット機能で文字を入力するためのテキストボックスを配置する」
という具合です。

また「道具」については、入力補助として用意される場合もあります。
例えば、Goo*leで検索するときの、入力補完機能がそれにあたります。

料理工程

最後は料理工程。

カレーをつくるには、ざっくりと

  1. 具材を切る
  2. 具材を炒める
  3. 具材を煮る
  4. カレールウをつくる
  5. 3にルウを溶かし、煮る

という工程があります。

ただこの工程だけ見ただけはカレーをつくれない人もいるため、
「具材を切る」という工程1つを取っても、
「なすは厚さ1cmで輪切りにする」のように具体的にしてあげる必要があります。

もしつくれる人だったとしても、
より具体的に伝えてあげることで
自分が望んだカレーに近づきます。


料理工程の部分は、料理の知識・スキルが高ければ高いほど、
より具体的で詳細な料理工程を文章化できるため、
料理工程を伝えるには、鍛錬が必要な部分ではあります。


「料理工程」はプログラマ思考に置き換えると、処理になります。
例えば、掲示板に入力された文字を投稿するという機能があった場合、

  1. 入力された文字に、入力禁止ワードがあるか判別する
  2. 入力された文字をDBに格納する
  3. 入力された文字を掲示板に表示する

というように、その機能が実行されたら、
成果物を得るために、どのような工程が必要か明確にし、
プログラムに落とし込む必要があります。

まとめ

ここまで「カレーをつくる」を例に、
プログラマ思考の説明をしてきました。

今回覚えておいて欲しいことは、

  1. プログラムをつくるときは、下記3つを明確にする
  • 何を作るか(成果物)
  • それをつくるための材料、道具(入力)
  • 料理工程(処理)
  1. 「成果物」⇒「入力」⇒「処理」の順番で考える


今回はまだプログラマ思考の入り口なので、
引き続きプログラマ思考について書いていきます。


現在クイックでは、プログラマ思考を身に付けたいという人も大歓迎で募集中なので、
もしご興味があれば株式会社クイックにぜひ応募してください。



社内SE(アプリ開発) | 株式会社 クイック | IT/Web業界の求人・採用情報に強い転職サイトGreen(グリーン) | 2014/08/23 15:53:17更新 | id:27758

インフラ系社内SE | 株式会社 クイック | IT/Web業界の求人・採用情報に強い転職サイトGreen(グリーン) | 2014/08/23 15:51:22更新 | id:9390