前回、Rubyを楽しく学ぶコンテンツのエントリで紹介したRuby Warriorが楽しいという声を幾つか見かけました。 オンラインでコーディングできるサービスは色々ありますが、デザインや音楽、ゲーム性が優れていて熱中しやすいのでしょう。 残念ながら私は参加できませんでしたが、今月のGinza.rbもRuby Warriorをみんなでやってみるという催しで盛り上がったようです。
RubyWarriorのBGMが中毒性高い。しばらく口ずさんでしまいそう。#ginzarb
— Masatoshi Iwasaki (@masa_iwasaki) April 15, 2014
RubyWarriorに集中していてだれもツイートしてない^^; #ginzarb
— 高橋 明 (@Talos208) April 15, 2014
今回は同様にゲーム感覚でJavaScriptを学習でき、日本語化もされているCodeCombatをご紹介します。
無料、オープンソース、マルチプレイ対応
CodeCombatは無料で遊べるJavaScriptゲームです。 ソース自体もオープンソースにあっており、GitHub上で最も成長の早いリポジトリであったそうです。
サイドプロジェクトではなく、Yコンビネーターの支援を受けた事があり、採用プラットフォームなどの展開も視野に入っているようです。 複数人での対戦プレイなども行われており、プロジェクトの規模はかなり大きいです。
- Yコンビネーターの支援するCodeCombat、プログラミング学習RPGを提供中 | TechCrunch Japan
- The Fastest Growing Open Source Project - CodeCombat Blog
- CodeCombat
いずれにせよ、ブラウザ上でコードを入力しすぐに結果をみることができるのはその他のプラットフォームと同じです。
実際の遊び方
Webサイトにアクセスし、まずはCampain for Beginnerのバナーをクリックすると初心者用のクエストが始まります。 プレイ中は音が出ますので音量のセッティングにはご注意ください。
日本語で説明がでるのでわかりやすいですが、Ruby Warriorは単一のキャラクターに対してコーディングを行っていましたがCode Combatは複数のキャラクターの操作を前提にしています。 操作したいキャラクタをクリックし、それぞれにコードを記述する形です。最初は手続き的に記述するのでより一層シンプルです。
例えば、最初のミッションでキャラクタがどのように動くのかという部分は次のように記述しています。
// plan()
this.moveDown();
this.moveRight();
this.moveUp();
this.moveUp();
this.moveRight();
this.moveRight();
this.moveDown();
this.moveDown();
this.attackNearbyEnemy();
エディタのわかりやすい支援
コーディングに必要なメソッドの情報やオブジェクトの情報はマウスカーソルを適切な位置に合わせると表示されます。 別画面にドキュメントなどを用意する必要もなく、サクサクと記述できます。 なお学習目的ということからなのか、入力補完などは実装されていないようです。
JavaScript学習のきっかけに
Ginza.rbのようにグループでJavaScriptを学習する教材としてCode Combatを使ってみると面白そうです。 また予備知識があまりいらないので、新人のエンジニアと現役のエンジニアで行うグループワークとしても良いかもしれません。