【書評&写経】まんが版『こんにちはPython』〜38年ぶりにゲームセンターあらしとプログラミング入門してみた
みなさん、ムーンサルトり!事業開発部の塩谷 (@kwappa) です。
預言の書「こんにちはマイコン」
いきなり昔話で恐縮ですが、1982年に発行された「こんにちはマイコン」という本をご存知でしょうか。当時大人気だった「ゲームセンターあらし」というマンガのキャラクターが、ブームに火がつきかけていた「マイコン(今でいうパソコン)」でプログラミングに入門する、という作品です。
同じくこの年から刊行された「ベーマガ」こと「マイコンBASICマガジン」とともに、少年たちをマイコンの道へと導き、現在でも活躍する多くのエンジニアがはじめてプログラミングに触れるきっかけとなった、おおげさにいえば「預言の書」です。もちろんぼくもそのクチで、「こんにちはマイコン」で興味を持つ(取り上げられていたNEC PC-6001は結局入手できなかった)→「ベーマガ」でBASICに入門する(X1turboでした)→現在に至る、というきっかけを作ってくれた、とても思い入れのある本なのです。
現在物理の書籍を入手するのは困難ですが、電子書籍として入手することが可能です(ああよかった)。
あらし、38年ぶりにプログラミングに入門する
それから38年。平成を飛び越え、令和の世の中にあらし・さとる・一平太が帰ってきました。そして、こんどはPythonでプログラミングに入門する。それが、本書「ゲームセンターあらしと学ぶプログラミング入門 まんが版『こんにちはPython』」です。
かっぱ、38年ぶりにプログラミングに入門する
小学校でのプログラミング教育必修化、というのは2020年の大きなトピックです(…が、新型コロナウイルスの流行でそれどころではなくなってしまいましたが)。本書は「預言の書」の続編ですし、ぼくには小学校4年生の息子がいます。これは自分のためにも、そして息子に読ませるためにも、一周読み込んで写経してみるしかあるまい。しばらく手元で眺めていたのですが、この週末に時間をとって実行してみました。
環境構築
本書はWindwos環境を前提にしており、python.orgからインストーラーをダウンロードして環境構築しています。ぼくの手元はMac環境ばかりなので、今回もMacで写経しています。
本書同様にpython.orgからインストールしてもよいですし、おなじみHomebrewでさくっとインストールしてもかまいません。本書のPythonは3.8.2
、この記事の時点でpython.orgから入手できるのは3.8.3
、Homebrewでインストールできるのは3.7.7
ですが、いずれのバージョンでも特に問題なく写経することができました。
Pythonに付属しているIDEの「IDLE」は、手元の環境では日本語入力に若干不具合がありました。日本語入力モードにすると、未確定の文字と変換パレットが見えないのです。ショートカットキーとカンで変換し、確定すればソースコード上に入力はされるのですが、これはちょっと不便でした…。なので、このあとでも出てくるVisual Studio Codeで進めるのもよいでしょう。
写経してみた
技術書に書いてあるコードを自分で入力し、実際に動かして学ぶことを「写経」と呼んだりします。本書は息子にも読ませるために物理書籍で入手したので、写経の定番@t_wadaメソッドでやってみました。
技術書の「写経」の方法。 1.ローカルで使える SCM を用意 2.「ほんたった」などで対象の本を固定 3.ひたすらサンプルコードを写して実行 4.実行するたびにコミット(コミットログにページ番号を含める) 5.疑問点があったらコミットログや本に書き込む 6.章ごとにタグを打つ
— Takuto Wada (@t_wada) February 12, 2010
さすがに小学生でも入門できるレベルですから、コードそのものはスムーズに打ち込んで動かすことができました。ログはGithub : kwappa/hello_pythonにあげています。
少し誤植があり、1か所はそのまま入力すると動かないので(P.66)、こんにちはPython サポートサイトのエラー情報を確認してください(Pythonに慣れてる人ならすぐ気づくレベルのものですが)。
アクティビティ図も描いてみた
単にコードを写経するだけでもいいのですが、本書にはアクティビティ図も登場します。ゲームを作る前にアクティビティ図を描くなんて、さすがさとる意識高いぜ…。
せっかくアクティビティ図を描くなら、prismatix開発チームでもアクティブに使っているPlantUMLを使ってみよう、ということで手元に環境を作ってみました。
PlantUMLはVisual Studio Codeにプラグインを追加することで、リアルタイムでプレビューしながら描くことができます。しかし手元にJDKを入れてGraphvizを入れて…という手順はけっこう手間がかかります。なんとかならんかな…と思ったら、このブログにどんぴしゃな記事がありました。DockerでならPlantUML Serverがワンコマンドで立ち上がるので、あとはlocalhost:8080
で描画するよう設定するだけです。
矢印の向きまで完コピ、というわけにはいきませんでしたが、軽快にテキストで書きつつリアルタイムでプレビューを確認できるのはとてもラクでした。
アレンジしてみた
最後の題材(スカッシュゲーム)で「効果音を鳴らしてみる」という部分があります。本書ではwinsoundを使ってビープ音を再生しているのですが、こちらはMacで、簡単にビープ音を出せるようにはなっていないっぽい。とはいえいろいろインストールするのは面倒だし、可搬性もよくない…。
しばし考えたあと、追加のソフトウェアなしでなんとかしてみました。ここ最近のmacOSなら問題ないと思うのですが、何か不具合があったらお知らせいただければ幸いです。
プログラミング、たのしいね
というわけで、それほど複雑なものではありませんがこの土日はプログラムを書いて過ごしていました。プログラミングの入門書としてはとても気を使った構成になっていて、ちょっとずつ新しいことがでてくる感じはひさしぶりにワクワクしました。もちろん「きれいなコード」ではない部分も多々ありますが、実際にGUIでモノが動くというのはいいものです(tkinterもいいものだ)。こんどは、小学校が休校でゲームとYouTubeざんまいの息子と一緒に写経してみようと思います。
プログラミングって楽しいものですね。そして、本書をきっかけにその楽しさを知る「マイコン少年」が増えてくれるといいな、と思っています。
なお、PythonやPlantUMLも使ってEC / CRMプラットフォーム「prismatix」を開発・運用している我々事業開発部では、一緒にプロダクトを育てていくエンジニアとプロジェクトマネージャーを募集しています。応募職種はこちらからご確認いただけます。また、オンラインで参加可能な会社説明会も月イチ以上の頻度で開催していますので、興味を持った方はぜひご参加ください!
それでは、炎のコマ!