![見出し画像](https://assets.st-note.com/production/uploads/images/152817920/rectangle_large_type_2_65256ec79f136127778e78eb96dde3ec.png?width=1200)
【シンプルさが魅力!】Pyxelがプログラミング学習に適している理由3選
30年プログラミングをしているムンペイです。
プログラミングを学びましょうという風潮がにわかに高まっていて、周りでもいろいろな議論や、教材や、学校などが増えているという実感があります。
自分がプログラミングを学んだときは、教育(された)という観点は全く無く、ましてや(学生なので)稼ぐための手段と考えたことなどもっとなく、趣味として没頭したことが100%でした。
いまは取り巻く状況がとても高度になったせいで、実用性(経済的実用性)の観点からプログラミング学習をみる論調が多くなっちゃったなあと感じます。
そんな中で、私がかつてそうだったように、学ぶというよりはプログラミングを楽しんで好きになってもらいたいと思い、新しいプログラミング学習サービス『Code and Magic (コードアンドマジック)』を作り始めました。
ゲームプログラムを写経して覚えてもらい、段々とオリジナル開発にも取り組んでもらう仕組みです。
このサービスでは、Pyxelというゲーム開発ライブラリを使わせていただいています。Pyxelは、元プロのゲームプログラマーでもあったkitao氏が開発したもので、ファミコン風のレトロなゲームを作るためのライブラリです。
が、私はこのPyxelに、プログラミング学習用としての高い適性を直感しました。その点について、3つの観点でお話します。
1.ブラックボックス化とデフォルメがちょうどよい
昨今のPCは非常に便利ですよね。画面もウインドウシステムで、多数のアプリを同時に画面に配置して利用できます。ディスプレイには細かい画像や文字がたくさん表示できるし、スピーカーからは色々なアプリの音がミックスされて聞こえます。
ええ、当たり前だと思いますよね。しかし、これだけのことを間違いなく行うためには、OS(WindowsやmacOSやLinuxなどなど)がアプリのプログラム、メモリ、グラフィックデバイス(GPU)、サウンドデバイス、etc.を精密に管理することで実現されています。
こうしたOSの上で動くアプリを作るためには、開発者側もPCやOSのできることを取捨選択して開発しなければなりません。プログラミングの初心者は、PCに対する知識も少ないことが多いはずで、情報過多で身動きがとれなくなってしまうことも多そうです。
一方、Pyxelに出会って、そのアプローチをとても興味深いと思いました。
Pyxelは、レトロゲームエンジンと銘打っているため、できることを大胆に絞り込んでいます。色は16色のみ、同時発音は4まで、2Dのみ、などです。Pyxelは、Windows、Mac、LinuxあるいはWebでも実行でき、どこでも同じスペックの環境が提供されます。
言わば、Pyxelという仮想的なレトロPC+OS上でのプログラミングなのです。こうしたブラックボックス化とデフォルメがもたらすシンプルさが、特に初心者の子供にっとては学びやすい環境を作り出しています。
ちなみに私がプログラミングに最初に覚えたのはBASICという言語でしたが、似たようなレトロな低スペックPCでした。その次は、MS-DOS環境でのC++プログラミングでしたが、何ができるかシンプルでした。まさにその時のような雰囲気を感じます。
2.コードの長さと達成感のバランスがよい
Unity(C#)やらPyGame(Python)など各種のゲームライブラリも、ゲーム開発者向けに、PCの複雑な作法を隠しつつゲームのコーディングに集中させようと作られたものです。
しかし、こういったライブラリの多くは、PCが本来持っている能力をなるべく簡単に引き出そうというというアプローチであるため、PCの機能について理解する必要があったり、機能が多い分ライブラリも複雑で、コード量も結構頑張らねばならなかったりと、あまり簡単ではないと感じていました。
特に、初心者の場合は、なぜその手順があるのかわからずに、理解しないまま本やウェブで拾ったコードをコピペすることでしょう(おまじないと言ったりします)。それで動かなかった場合に理解に努めるでしょうが、複雑な環境を相手にしているので原因と対策を見つけられず、結局諦めてしまう、なんてことが起こってしまうことは想像に難くありません。
一方、1でも述べた通り、Pyxelは、割り切ったブラックボックス化とデフォルメにより、学習期のプログラマーにとっては、やりたいことと、実現までのコーディング量と、結果のバランスがとても良くなっていると感じています。
たとえば、画面にドットを打つのも1行、音を出すのも1行、画面クリアも1行、です。
さらに、グラフィックや音のデータをまとめたリソースというものもあり、この点でも複雑さを隠してとてもシンプルにしています。
リソースは独自形式で、付属の専用エディタで編集するのですが、その分ペイントやPhotoshopのような一般の編集ツールを使いにくいなどちょっと悩ましい部分はあります。(注:Pyxelでは一般の画像形式も使えます)
3.Pythonである
Pythonは、教育的な簡便さとプロの現場での応用力を兼ね備えており、長期的に学び続ける価値のある言語です。
実際に、現在は人気プログラミング言語のランキングを公開しているTIOBE Indexで不動の一位となっているようです。
Pythonの応用範囲は広く、昨今ホットなAIやLLMをはじめとする機械学習分野、ビッグデータの分析と可視化を行うデータサイエンス、ちょっと手元で計算してみる電卓的な利用、もちろんウェブ開発にも使えます。
何かまず覚えるとしたら、Pythonをまず候補に挙げておけば間違いないと思います。
プログラミング学習にせっかく時間を使ってもらうのだから、覚えたことが長く応用が利くようにしたい。PyxelがPython向けのライブラリであるという点は、決め手の一つとなりました。
ゼロから学ぶ子供向けにはScratchが流行していますが、必ず数年以内に卒業し、別の言語を学ぶことになります。
しかし、Pythonならばそのままプロになって活躍しても、使い続けることができます。
私は、子供の入門からPythonというのは十分アリだと思っています。
プログラミング言語を複数使いこなそう
Pyxelでもかなり高度なゲームを作ることができますが、3D CGバリバリのゲームを作りたくなってしまったら別の方法に移るしかありません。たとえばC#を覚えてUnityを使うといいでしょう。
実はプログラミング言語を複数覚えるのは簡単だったりします。言語が変わっても、PCという枠の中で何かするという点は変わらず、書き方が変わるだけなので、意外と理解が簡単なのです。
ちなみに、枠が変わると少し努力が必要です。例えばウェブフロントエンド開発は、ブラウザという仮想マシンに対するプログラミングのような感じがあり、理解に手こずりました(今も)。
思えば、私もいろいろな言語を触ってきましたが・・・その話はまたの機会に。
これにて御免!
いいなと思ったら応援しよう!
![30年プログラマー・ムンペイ](https://assets.st-note.com/production/uploads/images/129099569/profile_7f02f8c2e8c28f03947e5e1815f6cc10.png?width=600&crop=1:1,smart)