今日は、CoderDojo梅田で伝説のニンジャのサポートをしました。彼が「RPGのゲームデータをセーブできるようにしたい」というので、データをシリアライズする方法を考えてレクチャーし、一緒に作っていきました。いわゆる「ふっかつのじゅもん」方式で、難しい言葉でいうと「シリアライズ」と「デシリアライズ」です。その時の方法をこちらのプロジェクトに再現してみました。

ゲームデータのセーブとロード

もしかすると、Scratchでこのような処理を作るためのベストプラクティスがあるかもしれませんので、こんなやり方があるよという方がいらっしゃったらプロジェクトへのコメントかリミックスでご教示ください。使い方などはプロジェクトの説明をご覧ください。

プロジェクトの方にも書いていますが、保存する対象のデータがリストになっていればループで処理できるのでもう少し楽になるとは思いますが、とりあえず変数で情報を保持していることを前提にします。

また、子供でも理解できるロジックにしたいので、複雑な符号化は避けたいです。デリミター(区切り記号)を”、”にしているのもそのためです。これを作った時にニンジャが”、”を使ったので、それをそのまま採用しています。

blogに書いた理由

なぜ、このことをわざわざblogに書こうと思ったか?それは、今回のことが自分にとってとても楽しかったからです。

最初は「シリアライズ」をどうやって説明すればいいだろう?どう作ればニンジャにも理解できるだろう?と考えていたのですが、考えて説明しているうちになんとなくできるような気になり、一緒にやっていくうちに楽しくなっていったのです。

そこには、ニンジャの「自分が実現したいことをなんとしてでもやり遂げたい」という強い思いがありました。彼は、なんとしてでもこの機能をDojoの時間の中で完成させて、続きを自宅で作りたかったのです。その情熱に強く押されて、少し時間はオーバーしたもののなんとか機能を実現できました。

それはまるでハッカソンをやっているかのよう。彼のプログラミング(ロジック、画面作りの両方)スピードはものすごく速く、隣で見ていても、彼が何をしているのか、何を作っているのか、何を作ろうとしているか、まったく追いついていけません。そんな中で「データのセーブとロード」だけがどうしてもわからない部分だったのです。それがもどかしくてしょうがなかったのでしょうね。

そんな状況だったので、なんとか実装できた時には僕自身も嬉しかったし、ホッとしたと言うのが正直なところです。こんな機会と体験をさせてくれたニンジャにとても感謝しています。ありがとうございました。 :)