プログラミングはコードから始めるな!初心者は「概念の理解」からスタートしよう

プログラミングを始めてみたいけれど

これからのビジネスパーソンにとって三種の神器の一つと言われる「プログラミング」。重要性は十分理解していて、始めてみようとは思っていても、いざ書店などで参考書を探してみても「何から始めていいかわからない」「買ってみたが意味がまったくわからない」という人や、そもそもプログラミングが具体的に何をするものなのかさえイマイチ理解できていない人も多いのではないでしょうか。

ここでは超初心者向けIT教室「TechGardenSchool」を設立・運営する高橋与志さんの著書『教えてプログラミング まずはなんとなく分かることが大切よ!』を参考に、本来始めの一歩にするべきプログラミングの概念について解説します。

「プログラミング」ってなんだ?

プログラミングとは、目的達成のために①アルゴリズムを作り、②そのためのデータを扱うためのもの
引用:前掲書p15

高橋さんによれば、プログラミングはこの一文で言い表せます。これをさらにざっくり表現すると下図のように言い換えられます。

●アルゴリズムは料理の手順

これをより具体的に理解するために、料理の場面に置き換えて考えてみましょう。「豆腐とタマネギの味噌汁」を作るためには、例えば次のような手順が必要です。

この手順こそがプログラミングにおける「アルゴリズム」です。言葉のうえでのアルゴリズムは、自分や組織の問題を解決するなどの目的を達成するための手順を定式化したものを指します。この言葉はIT分野だけのものではなく、実は数学や言語学の分野でも用いられています。アルゴリズムと聞くと「Googleの検索アルゴリズム」などのIT用語でかつ複雑そうなイメージがありますが、本来は理系・文系の区別とは無関係の言葉なのです。しかもプログラミングのアルゴリズムを組み立てる要素(制御方法)は以下の3種類だけです。

1.順次実行:順序に沿って処理を実行する。
2.分岐:条件によって実行する処理を場合分けする。
3.繰り返し:同じ処理を繰り返す。

順次実行は料理の手順そのものですし、例えばこの味噌汁を作る家の次男が豆腐好きだったとして、「次男」という条件に対して豆腐を多く盛り付けるのは分岐です。タマネギ半玉がなくなるまで千切りの作業を繰り返すとすると、これがプログラミングにおける繰り返しにあたります。こう考えるとITの世界のものと思いがちなアルゴリズムやプログラミングが、実は身近な存在だったことに気づくのではないでしょうか。

●食材と冷蔵庫、データとデータベース

アルゴリズムを組み立てるためには制御方法以外に、データが必要です。豆腐やタマネギ、味噌などがこれにあたります。料理を始める前には材料を冷蔵庫から出したり、保管したりする必要もあります。

もし以前に買った玉ねぎが腐っていたら、これを捨てて新しいものを買う必要もあるでしょう。これが理解できれば、プログラミングにおけるデータの扱い方も理解できます。プログラミングで使うデータの扱い方は以下の4種類に集約されます。

1.参照:データを取り出す。冷蔵庫から取り出すのと同じ。
2.保存:データを保存する。冷蔵庫に食材を保管するのと同じ。
3.更新:データを修正・上書きする。残った食材や調理済みの料理を冷蔵庫に戻すのと同じ。
4.削除:データを破棄する。腐らせてしまった食材を捨てるのと同じ。

なお、冷蔵庫がプログラミングでの「データベース」、野菜室やチルド室などの分類が「データベーステーブル」と呼ばれます。

●データを扱うためのツールは調理器具と同じ

冷蔵庫から取り出された食材を下ごしらえするためには、調理器具や一時保管のためのボウルなどが必要です。これらをプログラミングに置き換えると、データを扱うためのツールになります。これは全部で3つあります。

1.変数
2.関数
3.配列

プログラミングに置き換えるとボウルが「変数」、調理器具が「関数」にあたります。プログラミングの関数には様々な役割のものがありますが、これは料理でいえば食材を温める電子レンジやお米を炊く炊飯器があるのと同じです。また料理が複雑になると下ごしらえした食材の置き場も乱雑になりがちですが、適度に区分けされたトレイを使えば整理できます。このときのトレイのようなツールをプログラミングでは「配列」と呼びます。

●エンジニアが「突然の仕様変更」を嫌う理由

ここまでの内容をまとめると以下の図のようになります。

プログラミングが何をするもので、それがどのように成り立っているのかがざっくり理解できたのではないでしょうか。プログラミングはつまるところ、作る手順が緻密に決まっている料理のようなものです。

そのため突然「タマネギはみじん切りでお願い!」とか「やっぱりコンソメスープにしてもらっていい?」といった仕様変更が入ると、作り直すのに時間がかかってしまいます。だから突然の仕様変更にエンジニアの人たちが良い顔をしないのです。

どうやって始めればいい?

ゴルフや水泳、スキー、英会話などを思い出してみましょう。「練習場に通ってからコースに出たい人」と「とにかくコースに出てプレーしてみたい人」、どちらの上達が早いか、そしてどちらがゴルフを「好きになるか」は明白です。
引用:前掲書p137

高橋さんは最初に学ぶコンピュータ言語は、どれでも構わないと言います。なぜならプログラミングの根幹にあるのは、冒頭の図で示したような「こんなことがしたい」という目的であり、それを達成するための方法をいかに設計するかだからです。それさえできればあとは緻密に描かれた設計図をコンピュータ言語に翻訳すればいいだけ。そしてそれこそがプログラミングです。

その意味ではブラウザ上でiPhoneアプリが作れる「App Builder」や、ブロックのようなフォーマットを使ってアプリ作成ができる「AppMachine」などのサービスから始めるのも一つの選択肢でしょう。

これらは原則コーディングが不要なので、専門の技術がなくともプログラミングの体験ができます。確かにこれだけではエンジニアと専門的な話をしたり、自由に自分の思い描くプログラムを組み立てるのは無理かもしれません。しかし少なくとも「プログラミングって楽しい」「もっとプログラミングについて知りたい」と思うきっかけになるはずです。

もちろん最初からコンピュータ言語を学んでも構いません。まずはPCで利用するウェブアプリの基礎となるHTMLやCSSから始めるもよし、ウェブアプリでもスマホアプリでも使える汎用性の高いPHPやRubyなどのサーバーサイド言語*から始めるもよしです。

大切なのは「自分のやりたいこと」を先に考えて、それに見合った言語を選び、実際にプログラミングしてみること。まずは、自分の日常生活の中で「面倒だなあ」「不便だなあ」と感じていることを見つけ、それを解決するためにプログラミングを役立てられないか考えてみましょう。それこそがプログラミングの第一歩になるはずです。

※データベースからデータを参照したり、データベースにデータを保存したりするために必要な言語。

とにもかくにも始めてみよう!

難しいコードやコンピュータ言語を覚えるよりも、まずは「自分のやりたいこと」から始めよう。筆者は『教えてプログラミング まずはなんとなく分かることが大切よ!』からそんなメッセージを受け取りました。

同書では他にレシプアプリを例に挙げたアプリの作り方などについても、イラスト入りでわかりやすく解説されています。この記事の内容だけではまだよくわからないという人は、ぜひ手にとって読んでみてください。きっと「とにもかくにも始めてみよう!」と思えるはずです。

参考文献『教えてプログラミング まずはなんとなく分かることが大切よ!』
Career Supli
料理の途中で突然メニュー変更を言われたらイラッときますね。仕様変更の意味がわかりました
[文]鈴木 直人 [編集]サムライト編集部