「Pi STARTER」に愛を~価格改定リリースに寄せて~(3)
「Pi STARTER」に(一方的な)愛を語る連載企画第3弾。それにしても売り場では売れているのかなぁコレ。気になります。
「Pi STARTER」ってナニ?も含め、前回までの記事はこちら。
<「Pi STARTER」に愛を~価格改定リリースに寄せて~過去記事>
(1) 主に「Pi STARTER」とは何なのかについて記載
(2)「Pi STARTER」の何か素晴らしいのかについて記載
カンタンにおさらいすると、「Pi STARTER」というのは小型コンピュータとして人気の高いラズベリーパイ(ラズパイ)でSmileBASICを使用できる言語パッケージ。これさえあればラズパイを買ってきてすぐにプログラミングを楽しむことができちゃう優れモノ。それこそズブのド素人(私)がほぼイチから初めて、こんなの作れるようになっちゃうんですよん。
Pi STARTER(ラズベリーパイ用BASIC言語パッケージ)版
ひとりで遊べるゲームシリーズ
人狼ゲーム&ガイスターを公開中(要ラズパイ&Pi STARTER)
http://www.ne.jp/asahi/chitose/net/download/
興味ある方はぜひ「Pi STARTER」を購入のうえ、ダウンロードして遊んでみてくださいませ(上記のゲームはいまのところ無償公開しています)。私はボードゲームや対人ゲーム好きなのでこういうの作りましたが、スプライトや画像系の機能がとても充実しているため、シューティングやアクションゲームもかなりのクオリティのものが実現可能だと思います。
▲これは「Pi STARTER」を購入すると最初から遊べるシューティングゲーム「SOLIDGUNNER-R 」。これBASICですよ?すごくないですか?
そう、すごいんですよ「Pi STARTER」のSmileBASICは。昔の「ベーマガ」や「プログラムポシェット」の時代にプログラム打ち込みとかやってた世代から見たら、目からウロコがでてドラゴンに変身しちゃうくらいに。「そんな昔のコト分かんないよ!」という現代っ子にしても、プログラミング教育必修化のこの時代にこれを身に着けておけば、他の子より二歩も三歩も先んじられる…かも知れません。百分もとい百聞は一見に如かず。これ見て興味を持ったアナタ、「Pi STARTER」を手元にラズパイ始めてみませんか!さぁ!さぁ!Sir!
…ちょっとセールスっぽかったですかね?(ちょっとじゃない)
ということで、今回は「Pi STARTER」のSmileBASICにスポットを当てて愛を語りたいと思います、OK,Everybody?
Point.01:コードがカラフル!
コードっていっても電源とかのコードのことじゃないよ。正確には「ソースコード」と呼び、プログラミング言語で書かれた内容のことを指します。ソースのかかったコードじゃないからね念のため。ちなみに複雑に絡み合ったコードのことを皮肉を込めてスパゲッティコードと言いますが、スパゲティにソースをかけた食い物じゃないからね重ねて念のため。
▲見事なミートソースですね。まるで私の書いたコードのようだ(泣)
ええいもう脱線し過ぎて話が分からんくなるやん!
これがコードです!
このコードは私が作った「人狼ゲーム」の一部ですが、見てくださいよこれカラフルじゃないですか?
自分で塗ったんじゃないからね。打ち込んでくと勝手にこうなるんですよ。
これすごい!
見やすいし!
いや初心者ってマジこういうのでテンション爆上がりするんですって!
ちなみに昔のBASICのコードはこんなんね。
これはX1(シャープ製)という昔のパソコンで作られたものですが、おおむねコードに色なんてつかなかったのでこんなもんです。「Pi STARTER」のSmileBASICがどんだけ恵まれているかこれ見て刮目してください。
昔のパソコン少年はこれでがんばっていたのですよ、ううう(涙目)。
Point.02:行番号制ではない!
これはちょっと解説が必要ですね。なるべくプログラミングしたことない方にも分かりやすく説明します。
もう一度さっきの画像を使いますが、これが昔のBASICのコードでした。
行の先頭が必ず「10」「20」…って番号で始まってるの分かりますか?
これが行番号制です(ちなみに行番号制っていうのは私が勝手に言ってるだけなので、実際もっと良い呼び名があるのかも)。
何で行番号が必要なのかというと、BASICの命令の中には「GOTO」とか「GOSUB」みたいに「どこそこの行に飛べ」みたいなのがあって、そのときに行き先が指示できないと困るからです。
なので、昔のBASICは(私が知る限り)だいたいみんなこうでした。
でもこれには弊害がありましてね…。
(当時はこれしかなかったから弊害と思ってなかったけど)
それは「後から行を足したいときはどうするの?」という問題です。
上の画像の例だと「10」「20」…と10行刻みになってるから、たとえば10と20の間に何か足したいときは「15」とかの行番号を追加するわけですよ。
でもこれ数行だったらいいけど、10行じゃきかない行数を追加するとかだと大変だすよね?
それに、10行刻みで統一されてるところに15とか入るとコード的ににも何だか煩雑で美しくないです。
当時はこれへの対策として「RENUM」(プログラムを10行刻みにしてくれる命令)というのもありましたが、何だか付け焼き刃的な感がありました。
さぁそこで、「Pi STARTER」SmileBASICのコードを見てみましょう!
画面左に行数を示すためのカウンタはあるものの、コード自体には一切行番号がありません。
じゃあ「GOTO」や「GOSUB」命令の行き先指示はどうしているのかというと、「@」から始まるタグを定義させることで解決しています。
上の画像の例で言うと、5632行目に「GOTO @PLAYER_BANISH」という命令がありますよね?これの行き先は「@PLAYER_BANISH」っていうタグなわけです。
(9/22修正:上の図だと「@BANISH_MAX」となっているもの、これがタグです)
行き先指示が特定の行番号じゃなくタグそのものなので、途中にどんだけ後からプログラムを追加しようが関係なしです。プログラミングって後から後からいろんな思い付きを追加したくなるので、そのたびに行番号をいじらなくて済むこの方式は神にも等しいと感じます。昔からBASICをやっていた方はその恩恵を実感できるはず。
Point.03:入力の使い勝手が神!
行番号制を廃したことも神ですが、入力の使い勝手も神です。こんなに恩恵を与えてくださって神様GoodJob!です。
コード入力画面でできることは次の通り。
●コピー&ペースト(文字単位でも行単位でもコピーして貼り付け可能)
●検索(指定したワードをコード中より検索できる)
●置換(指定したワードを別の任意のワードに書き換えられる)
●単語候補を表示(入力した文字から候補を表示する)
●ヘルプ(入力した命令の意味や使い方、例文などを教えてくれる)
いやもう何度も言うけど神でしょこれ。これらのこと全部昔のBASICじゃできなかったんですからね?(BASICの種類によっては一部出来てたものもあるかも。何せハードメーカーごとにBASIC作ってたからな…)。
さらに私が「もうそれ反則だろ?」と思っているのが次のポイントです。
Point.04:書いたコードをパソコンに持ち込める!
この使い方はもしかしたら公式に推奨されていないのかもですが、ここでは紹介しちゃいます。
「Pi STARTER」では作ったプログラムをMicroSDに保存するのですが、このMicroSDをWindows(試したことないけどMacでもLinuxでもいけると思う)で読み込むと、普通に「Pi STARTER」のフォルダ構造が見れちゃうんです。
で、この中の[SMILEBOOM]>[SMILEBASIC-R]>[workspace]と展開していくと、特に保存場所を変えてなければその中に作ったプログラムが入っています。
これをテキストエディタで開いてみると、じゃーん!
「Pi STARTER」で入力したコードがPCで見れる!
というか、むしろこれPCで編集できちゃうやん!
慣れてきたらむしろ普段使っているPCでコードだけ書いて、動作確認だけ「Pi STARTER」でやる方が圧倒的に効率が良いです。
さらにPCで開けるってことはPC上にバックアップが取れるので、最悪「Pi STARTER」側に何か深刻なトラブルが起きた場合でもデータだけは守られるという意味でもポイント高しです。
ただ注意点として、PCで開いた際に何からの間違いで「Pi STARTER」を壊してしまうリスクがあります。やる方はこのことを十分に認識、注意して行なってください。特にMicroSDを入れた際に次の画面のようなメッセージが表示されたときは、絶対にフォーマットは選ばないようにしてください!
(ここで操作を間違えてフォーマットしてしまった場合でも、当方では補償などは一切いたしかねます)
長くなっちゃったけど、あともうちょいで終わるからね。
Point.05:PCで描いたグラフィックを使用できる!
たとえばこのグラフィック。私の作った「人狼ゲーム」は背景画像やカードなどが出てきますが、これらはPCのPhotoShopなどで作成しています(とはいえフリーの素材を編集しまくっているだけですが…)。
前述したように「Pi STARTER」はMicroSDをPCに挿してファイルのやりとりができるので、作った画像は然るべきフォルダを作って保存し、それをプログラム上で読み込むことができるんです。こんな風に。
▲上の画像の「LOAD"GRP0:/…」で始まる命令で、MicroSD内の任意の場所に保存された画像を読み込んでいます。
これができるってことは、自分で写真撮ってきてオリジナルのサウンドノベル作るとかも出来ちゃうわけですよ!
昔のBASICから見たら夢のような進歩ですよね!?
いやーこれは夢が広がるわ。
(昔のBASICにも画像表示の機能はあったのかも知れませんが、画像は基本的にそのハードで描くしかなかったため、ここまでの使い勝手は実現できなかったと思います。いまみたいに世界的な汎用画像フォーマットもなかったはずですし)
Point.06:容量が神の器!
昔の人はよく言いました。
「プログラミングはメモリ(容量)との戦いである」と。
そう、プログラムって無制限に書けるものじゃないんですよ。
私がBASICを始めたころは16KB~64KBあたりが上限でした(PC-6001mkⅡの場合)。
Bってのはバイトと読み、1Bあたり1文字入力できると解釈してください。
Kはキロ(バイト)で、1KBだったら1,000文字です。
16KBだと、16,000文字入力可能なわけです。
16,000文字って、プログラミングしてたらあっと言う間ですからね?
さらに他のページを使うとかの理由でも使用できる容量は減っていくので、昔はいまから思えば、本当にスズメの涙くらいの容量しか与えられていなかったのですよ。せっかく作っても、容量不足で完成させることができずに泣いたあの夏の思い出。はるかな尾瀬、遠い空。
▲たまには癒される画像入れときましょ。プログラミングとはこのようにかくも果てなき道のりだったのですよ。
では「Pi STARTER」はどんだけ容量持っているのか。
下の画像をご覧あれ。
「66998272 bytes free」だそうな。
66,998,272バイトということなので、キロバイト単位…でも足りないな、次の単位はメガ(1メガ=1000キロバイト)か…。
ん?
えええええ?????
これ約67MB(メガバイト)あるんだけど?
昔のPC-6001で16KB、バイト単位で比べてみましょう。
PC-6001:1,600バイト
Pi STARTER: 66,998,272バイト
差:およそ41,873倍!
昔1,600円だったおこづかいが、いま6,700万円になったと言えばその違いがおのずから分かろうと言うものです。時代の流れってすごいですね。
ちなみに私の作った「人狼ゲーム」の容量を見てみると、だいたい265キロバイト(265,000バイト)。割り算すると「Pi STARTER」限界容量のおよそ252分の1です。ってことは、あと252倍すごいゲームにできるわけですな。いやはやさすがは神。人である我が身が持ちませぬ。
ということで容量との戦いを余儀なくされていた昔のBASIC愛好家の皆様、いまこそ当時の怨嗟を晴らすときです。「Pi STARTER」の容量はBASICとして使うならほとんど無限大に近いです。当時あきらめていたどんなプログラムだろうとたちまち飲み込んでしまうことでしょう。
まとめ
ということで、いかがでしょうか「Pi STARTER」。今回出てきたポイントをまとめておきますね。
Point.01:コードがカラフル!
Point.02:行番号制ではない!
Point.03:入力の使い勝手が神!
Point.04:書いたコードをパソコンに持ち込める!
Point.05:PCで描いたグラフィックを使用できる!
Point.06:容量が神の器!
これらのことならびに前回までの連載で述べてきたことから、私は現時点でプログラミング初学者には「ラズパイ+Pi STARTER」が最良の組み合わせだと信じています。私自身プログラミングについてはほとんどまったくのド素人で、いろんな言語に手を出しては挫折を繰り返し、ようやくたどりついた「Pi STARTER」で自分の作りたいものを完成させられたので、その経験からも自信を持って薦められます。
「Pi STARTER」には他にもGPIO端子を活用した電子工作への道などもあるのですが、そのあたりは『ALL ABOUT Pi STARTER』(電波新聞社刊 松原拓也著)に詳しく述べられているので、「Pi STARTER」を買ったらこちらもぜひご参照くださいませ。
ではでは、私もそろそろ「Pi STARTER」で次の作品を作りたいので(実現するか分からないですが、宣言しとかないとたぶん着手すらしないので笑)、今日の語りはここまでにしたく思います。長文にお付き合いくださり、誠にありがとうございました!
この記事が気に入ったらサポートをしてみませんか?