こんにちは。島根支社の直江です。
先日参加した Ruby に関する勉強会にて、とあるツールに触れる機会がありました。
その名もスモウルビー(Smalruby)。
スモウルビーは、Ruby によって作成されたビジュアルプログラミングツールです。
子供から大人まで楽しめるこのスモウルビーについて、今回はその概要や楽しみ方についてご紹介します!
スモウルビーとは
スモウルビーは島根県で活動している「Ruby プログラミング少年団」の皆様により開発されました。
方向性としては Scratch を代表とするビジュアルプログラミング言語を踏襲しています。
数 10 種類ある命令ブロックを組み合わせるだけでプログラムを作成できるため、小中高生を対象とした Ruby の学習用ツールとして活発に利用されています。
また、最大の特徴として組み立てたブロックを実際の Ruby コードに変換できます。
最初はブロックのみでプログラミングの考え方を学び、段階的に Ruby 言語の学習に移行していく…なんてことも可能です。
余談ではありますが、スモウルビー(Smalruby)という名前は島根県にある湖、宍道湖の特産品である「宍道湖七珍」の覚え方にある「スモウアシコシ」の「スモウ」と「ルビー」を足し合わせたものなんだそうです…!。
スモウルビーを動かしてみる
ではスモウルビーを実際に動かしてみたいと思います。
動作対象 OS は Windows、macOS となります。
Windows のインストール方法については「こちら」、macOS の場合は「こちら」のマニュアルをご参照ください。
起動するとローカルサーバが立ち上がり、ブラウザにスモウルビーのエディタが表示されます。
左側にはプログラムで動かす対象となるキャラクター、その右隣には命令ブロックのカテゴリが並んでいます。
そして、白いキャンバスに配置されているブロックの組み合わせが処理の塊となります。上から順に実行されることについては、普通のプログラミング言語と変わりありません。
初期のサンプルはシンプルで、「プログラムが実行された際に何かが起こる」というブロックのみが配置されています。
プログラムを実行する前に何かが動作するブロックを組み込んでみましょう。
命令ブロックのカテゴリにある「見た目」から「”こんにちは!”と言う」ブロックをドラッグで「実行ボタンがクリックされたとき」ブロックの中にはめ込みます。
このような形ではめ込まれます。ちなみに「〜と言う」ブロックにある「”こんにちは!”」もブロックなので、ドラッグで移動したり中身の文字を変更できます。
それでは実際に実行してブロックの処理をテストしてみましょう。右上にある緑のボタンが「実行」ボタンです。
実行ボタンをクリックすると、組み立てたブロックが Ruby コードに変換され、実行画面が表示されます。「実行ボタンがクリックされたとき」が条件となっているため、画面表示後すぐに「こんにちは!」と吹き出しが表示されました。
次はもう少し踏み込んだ処理を組み立ててみます。
「データ」カテゴリにある「セット [項目] 宛先」ブロックをはめ込みます。このブロックは変数を表現するブロックで、ブロック内の「項目」に変数名を設定し、「宛先」に値を表すブロックをはめて使用します。
変数名を「rand_num」として、値には「演算」カテゴリにある「乱数生成」ブロックをはめ込んでみました。これを用いれば、数字によって吹き出しの内容を変える処理を組み立てられます。
また、吹き出しが出るタイミングは実行ボタンではなくキャラクターをクリックした時に変更しました。
if 文を表すブロックは「イベント」カテゴリにあります。「もし〜ならば」ブロックですね。ドラッグではめ込みましょう。
「もし〜ならば」ブロックの条件には「演算」カテゴリの「=」ブロックをはめます。左辺に「データ」カテゴリの「項目」ブロック、右辺に「演算」カテゴリの「数値」ブロックをはめれば出来上がりです。
ブロックは右クリックでコピーができます。処理をコピーしてしまいましょう。
これでキャラクターをクリックした時、「rand_num」変数の値によって挨拶が変化するプログラムが完成しました。さっそく実行してみましょう。
スクリーンショットではわかりにくいですが、期待通りクリックするたびに挨拶が変化します。
では最後に、ここまでの処理を Ruby コードで見てみましょう。ここがスモウルビーのグッとくるところですね。
Ruby コードに切り替えるには左上の Ruby タブをクリックします。
Ruby タブをクリックすると、ブロックの見た目から Ruby コードに切り替わりました。
内容としては、1行目でスモウルビーのモジュールをロードした後、3行目でキャラクターのインスタンスを生成しています。
Character クラスの引数として costume(画像)、x(X座標)、 y(Y座標)、 angle(傾き) などがありますが、これらのデータはビジュアルモードでも変更できます。
肝心のブロックで組み立てた処理は6行目から始まっていますね。ブロックの処理がそのまま綺麗に Ruby コードに変換されていることが見て取れます。
ちなみに、ブロックには「式」ブロックというものがあり、Ruby のコードをそのまま書けます。
このような感じですね。既存のブロックでは手が届きにくい処理を「式」ブロックで埋め合わせるような使い方となります。
簡単ではありましたが、スモウルビーの動かし方は以上となります。
まだまだ説明が足りない部分がありますが、こちらのチュートリアルに詳しく記載されておりますので、ご参考ください!
スモウルビー・プログラミング甲子園について
さて、ここまでの内容でスモウルビーの魅力は少なからず皆さんに伝わったと思いますが、スモウルビーライフを更に楽しむことができる要素が存在します!
それがこのスモウルビー・プログラミング甲子園です。
これは、スモウルビーで作成した AI プログラムを使用して対戦を行う大会で、高校生以下を対象として毎年開催されています。
今年も7月3日から来年の1月12日まで AI プログラムを募集しています。
対戦を行うゲームはターン制で、 15×15 のマスで構成されるマップに 2人 のキャラクタが配置されます。
勝敗は道中で拾ったアイテムや、ゴールボーナスなどで獲得できるポイントで争います。
対戦マップには障害物やお邪魔キャラクター、トラップなどが配置されているため、AI 作成は一筋縄ではいきません。
アイテムには目もくれずゴールを目指す戦略や、敢えてゴールせずにアイテムを拾い続けてポイントを稼ぐ戦略など、様々なアプローチでの攻略法が存在する、奥が深いゲームとなっています。
甲子園自体は高校生以下の方しか応募できませんが、AI は誰でも作成できます!
公式サイトに導入方法が記載されていますので、実際に試してみることをおすすめします(AI作成、対戦ゲームについては Windows 専用となります)。
おわりに
早足の内容ではありましたがスモウルビーは如何だったでしょうか。
甲子園の AI 作成については大人も頭を唸らせて楽しむことが出来るので、仲間内で自分なりの AI を持ち寄って対戦会を開いてみるのも面白そうです。
小学校のプログラミング科目の必修化は目前となっているため、ビジュアルプログラミングは実際のプログラム言語との架け橋となり、大いに役立つ存在になると確信しています。
そのためにもっともっと島根からスモウルビーを盛り上げていこうと思います!
Ruby World Conference 2017 のスポンサーとなりました
Ruby World Conference は毎年島根で開催される Ruby の大規模イベントです。
創始者であるまつもとゆきひろ氏を始め、Ruby にまつわる数々の講演が行われます。
この Ruby World Conference にフェンリルはスポンサーとして協賛します!
今年も 11月1日、2日 に開催される予定ですので、興味がある方は是非ご参加ください。
エンジニア募集
フェンリル島根支社ではウェブエンジニアを募集しています。また、プロジェクトマネージャやスマートフォンアプリ開発エンジニアも募集しています。
島根支社の採用ページが公開されているのでぜひ一度ご覧になってください!
フェンリルのオフィシャル Twitter アカウントでは、フェンリルプロダクトの最新情報などをつぶやいています。よろしければフォローしてください!