小中学生の夏休みの宿題といえば、自由研究と読書感想文が嫌われものの二大巨頭だろうか。筆者の遠い過去を思い返すと、夏休みに突入して最初の2~3日こそ着手を試みるのだが、結局後回しにして毎年8月下旬に泣きながら取り組んだ苦い記憶がよみがえる。なんなら、提出すらしていない年もあるはずだ。
さて、今回筆者らが挑戦する「大人の自由研究」は、かつての苦い思い出に今さらながら抗ってみようという企画である。大人になった今の時間とお金と知恵があれば、当時の自分では想像もできなかった研究ができるに違いない。小学校の体育は苦手でも、大人になってからスポーツにのめりこむ人だって多いし。きっとできるはず。
今回私たちが声をかけたのは、オンラインでプログラミング初心者向けの教材を提供するProgateだ。プログラミングを初めてみたいとはぼんやり思いながらも、これまできっかけが無く手を出していなかったので、絶好の機会だった。Progateの担当者も二つ返事で快諾してくれた。編集部からは、筆者と森の2人が参加した。
なぜ、初心者がいきなりPython?
Progateとは、Webでプログラミングを学べる初心者にも優しい登竜門的なサービスだ。ブラウザで動作するため、開発環境を構築する手間が不要な点も初心者にはとても助かる。HTML / CSSやJavaScript、Ruby、Pythonなど、主要な言語・フレームワークは一通り学べる。一部のレッスンは無料版でも体験可能なので、「何から始めたら良いか分からない」といった場合でもとりあえず試せる。
今回、プログラミング学習に際して、Progate側から「せっかくなら編集部の課題を解決できる何かを作ってみませんか?」との提案をいただいたので、筆者らが興味を持っていて、かつ、業務の自動化に役立てられそうなPythonを学ぶことにした。
ちなみに、この時点でわれわれ編集部2名はプログラミング言語でコードを記述したことがなかった。「Pythonは初心者にも読み書きしやすい」と聞いたことがあるので、そのイメージだけで勉強を始めた。
目標となる成果物は、以下の2つ。
・各社がニュースリリースを配信しているページから、最新のリリースを取得する
・ランチに何を食べて良いかをいつも迷う同僚向けに、ランダムでメニューを提案する
さあ、実際にコードを書いてみよう
早速だが、Progateの初級編である「Python I」を開始してみる。まずは文字列の扱いや四則演算について学ぶようだ。
チュートリアル画面は、スライドをめくるように自分のペースで学べる。1枚のスライドに記載されている情報はそこまで多くないので、スムーズに勉強を進められた。
さて、最初の課題だ。プログラミング学習はすべてここから始まると言っても過言ではない「Hello World」の出力である。
画面の左側にヒントが提示されるので、これに従って作業を進める。
print("Hello World")
おそるおそる「できた!」をクリックしてみると......
たった1行のコードだが、実際に動くとやはり嬉しいものである。この調子で課題を進めていく。この後、「Python I」のコースでは、「変数」「if文」「真偽値」などを学ぶ。
Python Iを終えると、次は「Python II」だ。このコースでは「リスト」、「辞書」、「for」や「while」などの繰り返し処理を学ぶ。
Python IIまで学ぶことで、お買い物プログラムを一通り作れるようになる。入力値を受け取ってから、その数に応じてリンゴの合計金額を計算し、所持金との差額をお釣りとして出力する。
さて、続いては「Python III」だ。このコースでは、ここまで学んできた要素を組み合わせて、「じゃんけんゲーム」を作成するのが目標だ。筆者らは、「関数」や「モジュール」など、これまでには出てこなかった新しい概念に苦戦することになる。
じゃんけんゲームは、自分が出す手(グー・チョキ・パー)を入力し、相手(ロボット)がランダムに出す手と比較して勝ち負けを判定する仕組みだ。条件分岐や繰り返し処理など、ここまで学んだ知識を総動員してコードを記述する。
ちなみに、Progateでは記述したコードが正しくない場合に、どこをどのように直せば良いのかヒントが与えられるので、考え込むことなく作業を進められる。初心者の筆者としては、インデントがずれている場合や、スペースの半角// 全角が誤っている場合、文末にコロン(:)を付け忘れることが多く、何度もヒントに助けられた。
ここまで学んだら、後は目標としていた成果物を自分たちの手で作ってみる工程。Progateではサービスの指示に従って手を動かせばよかったのだが、はたして、われわれは自分たちで一から成果物を作れるのだろうか。その結果は中編と後編でお届けしよう。