基本的なプログラミングスキルとは?
2024/07/16
現役プログラマーとして様々な活動をされている鳥井雪氏による、プログラミング通信をご紹介します。こちらのコラムでは、「実際のプログラマーが毎日どんなことを考えてプログラミングしているか」や「実生活でプログラミング的思考がどのように役立つのか」などを、わかりやすく分解してご紹介いただいています。
★こちらの「こどもプログラミング通信」も合わせてご覧ください!
本記事の筆者:鳥井雪(とりい・ゆき)氏
小学校高学年むけプログラミング入門書『ユウと魔法のプログラミング・ノート』著者。
Railsプログラマーとして活躍し、女性にプログラミングの技術を解放する世界的ムーブメント「RailsGirls」の、日本での普及にも尽力する。その功績を認められ、2013年楽天テクノロジーアワード ルビー賞受賞。
RailsGilrsの創始者の一人である、リンダ・リウカス著のプログラミング教育絵本『ルビィのぼうけん』を翻訳、1カ月経たず3刷2万部のヒットとなり、プログラミング教育必修化にむけての一助となる。
翻訳に『ルビィのぼうけん こんにちはプログラミング』『ルビィのぼうけん コンピューターの国のルビィ』『プログラミングElixir (笹田耕一と共訳)』
コンピューターの得意なことをプログラミングで表現できる
コンピューターには、得意なことがいくつもあります。例えば、次のようなことです。
- ある厳密な条件を守って動く、曖昧な判断をしない
- 繰り返し同じことを(何十万回でも)行える
ですがコンピューターは、人間がそのように指示しなければ動きません。複雑なことをするためには、人間の書いたプログラムでの指示が必要です。ですから、「ある厳密な条件」や「何を何回繰り返すか」をプログラムで表現するのは人間なのです。
たとえば気温が27度を超えたら自動で冷房のつく機能をコンピューターに持たせたい時、「冷房がついていない間、ずっとセンサーから気温を取得する、その気温が27度以上であることを判断する、27度以上であれば冷房を起動する」プログラムを表現できるスキルが必要なのです。
そのためには、まずコンピューターが何が得意で、どのようなことができるかを知っている必要があります。
人間の都合を、コンピューターの出来る仕事に整理できる
冷房の例をさらにみていきましょう。
先ほど挙げた「冷房がついていない間、繰り返しセンサーから気温を取得しつづける、その気温が27度以上であることを判断する、27度以上であれば冷房を起動する」のような条件や動作は、初めからあるわけではありません。言ってしまえば、叶えたい人間の都合は「暑い時に自動で冷房がついてほしいなー」だけです。
このぼんやりした人間の都合を、コンピューターで判断できる論理に言い換えていきます。「暑い時、というのはある温度以上ということにしよう」「ずっとセンサーで温度をモニターしている必要があるな」「冷房がついているときは『冷房をつけるかどうか』のプログラムはいらないから、冷房がついていない間のことだな」などです。
この作業には次のような能力が必要です。
- コンピューターができることへの理解
- あいまいな都合を厳密な条件へと分析し、転換する論理的思考力
- その論理的思考力に支えられた言語能力
先ほどの冷房の例は日本語で書きました。プログラミング言語でプログラムを書く前に、まず自分の言葉で、論理を組み立てて表現できる力が必要になるのです。
これが、プログラミングが論理的思考力を育てるとよく言われる理由です。
冷房の例は複雑なものではありませんが、現実の人間の都合はたいていもっと複雑です。たとえば銀行の振り込み手続きなんて、「この振り込みをするには、口座が存在し、かつ振り込み者が口座に権限を持つ本人であることがAあるいはBの手段で確認できていて、かつ指定された金額が口座に利用可能金額として存在し、かつ振込先口座が存在し、かつ....」と、ちょっと想像しただけでも条件が山のように考えられます。もしロケットを制御するプログラムであれば、もっと複雑な計算や制限があるでしょう。
プログラミングには、さまざまな形があります。
けれど、「コンピューターへの理解」と「論理的思考力・言語能力」の二つのスキルはあらゆるプログラミングの基本であり、どんなプログラムをつくる際にも求められるものなのです。