「日本Androidの会秋葉原支部コスプレ理系女子普及部」というグループがあります。ちょっと恥ずかしい名前ですね(^^;
なんと、この会には、本物の秋葉原のメイド喫茶の店員さんが参加され、一緒にプログラミングを学べるのです!
会の目的・趣旨などはこちら http://kokucheese.com/event/index/362412/
今回、一人のメイドさんにプログラミングを教える役を担当させて頂きました。その経験によって何を考え、何を得たのか、その、一部始終を報告いたします。
今回のミッション
メイドさんは、3名参加されています。
その他、参加者は13名ほどで、メイドさん一人あたり4人ほどの班を作ってそれぞれでグループワークをします。僕は鈴峰桐さんの班に所属しています。桐さんは、日本Androidの会秋葉原支部支部長を務め、女中酒場幻橙館の店長でもあります。
前回までで作るアプリの概要を決め、インテントを使って画面遷移をする部分まではできています。僕はこれに、NFCタグにタッチしてIDを取得したり、Webサーバーとの通信して結果を取得するという、技術的にコアな部分を担当しました。
うちの班ではメイドさんがメイドさんの手でプログラミングをしてもらいます。なので、メイドさんが理解して自らコードを書いてもらわなければいけません。
そもそも僕が勉強しなければならなかった
僕はWebエンジニアなので、JavaとかPHPでWebアプリを作るのは得意です。しかし、Androidアプリはまともに作ったことがありません。
なので、まずは僕ができるようにならなければなりませんでした。
準備は10月頃から始めました。10月の会で自宅に簡易的なPHPサーバーを立てて、簡単な通信をするプログラムを作りました。それでも結構苦労して、Web通信をUIのスレッドでできないなど、色々罠が待ち構えていました。
なにかやっては落とし穴にハマる。。。
やっと一通りの通信ができるサンプルができたのが11月上旬でした\(^o^)/
「おまじない」お茶を濁すか、丁寧に教えるか
僕がひぃこらアプリを作っていること、12月の会では、僕の前に先生役をされていた人のコードを見て、桐さんは「BufferedWriterってなに?」「StringBuilderってなに?」という感じで色々聞いていました。それに対して先生役の方や僕は、
「それは決まり文句だから」
「それはおまじないですね」
という具合いにお茶を濁して説明してしまいましたが、その日の終わりの発表で
「決まり文句とか、おまじないとか言われても、何をしているのか分からない!知りたい!」
と言われてしまいました。
考えてみると、初心者にプログラミングを教えようとするとき、想像以上に「決まり文句」「おまじない」と言いたくなってしまう箇所が多いです。
桐さんはこの会では3年目のベテランです。時には自らエラーメッセージを見て解決していけるくらいの力を身に着けています。でも、今までは表面的なことばかりを教わって、
「クラスってなに?」
「ああ、教室みたいなものだよwwあとで詳しく説明するから!」
という感じで受け流されていたとか。むむ、これは基礎をみっちり教える段階ではないか?
基礎を丁寧に教えたらどうなるか
- クラスとは何か?
- オブジェクト指向でプログラムを書くときによく書く記述例
- Webサーバーとは何か?HTTPの構造はどんなか?
- スレッドとは何か?
- ストリームとは何か?
- nullとは何か?
- 16進数とバイナリ
- byte列と文字列
ちょっと、サーバーと通信しようとするだけでも、これくらいのことを知らないといけません。「ここおまじないだよー」とお茶を濁さず、これらをガチで説明したら本が書けてしまいます!
メイドさんの意志を確認
事前にお店に行って、メイドさんに意志を聞きました。
「今回、あなたに作ってもらうものは結構ガチな感じになりそうなんだけど、徹底的に教えていいですか?」
そう言うと、
「私、プログラミングができるようになりたい!教えてほしい!」
と言うので
「では一ヶ月書けて、あなたのためにガチの教材を準備するので、覚悟してください!」
お店での会話はこの程度です。ここで教えてしまったら会の趣旨に反するような気がするし、他のお客さんもいますから、お店では内容には触れません。ただ、意志の確認だけは繰り返しおこなって、プログラミングについてどんなふうに思っているのかを確かめました。
かくして、一人のメイドさんにプログラミングの基礎を教える連載をブログに書き始めました。その連載は僕の技術ブログの方でまだ続いています。
「あなた一人のために」なんという大層なことを言うもんですが、実際起きていることは、一人の具体的な人物というペルソナ、そして書かせなければいけないプログラムという目的が固定された中で書くということです。その結果、ぶれない技術記事を書けます。これは何かを書くときに大切なことです。
僕の勉強になるし、できたものは、会社の新人教育にも流用できそう!
「教えることは教わること」
アメリカ国立訓練研究所(National Training Laboratories)の研究によって導き出された、学習定着率を表す「ラーニングピラミッド(Learning Pyramid)」によると、教えることが最も定着率が高いと言われています。
意外と教えようと考えると深く理解しなければなりません。簡単な記事のはずなのに、たくさん調べたりして、これは、本当に勉強になる!
当日の様子
今回は実際に作ってもらわなければならないプログラムと、その一つ一つの意味を理解してもらうという2本立てのミッションがあります。しかし、時間に限りがあるので、事前に了解を得て「今回は、プログラムを書くことに専念して、疑問については、どこの資料を読めばいいか説明するから後で読んで欲しい」ということにしました。
意気揚々と資料を持って会場に入ると、風邪気味で調子の悪そうな桐さんがいました。とはいえ、やることは決まっているので、説明をします。
「今日はここから、こんな風に動くものを作ります。」
まず、作るものを説明しました。これは後から「何をするのか想像できてよかったと言われました」ので、成功でした。
そして、早速、プログラムを打ち込んでもらうのですが、ここでミスがあって、僕のプログラムをディスプレイに写して、他の人に打ち込んでもらおうとしたのですが、外付けディスプレイとの接続がうまく行かず、メイドさん一人にしか僕の画面が見せられない状態に。他の班員にも同じように打ち込んでもらおうとしたのですが、一部班員は、Android Studioの設定が整わずにいることもあって、全員がシンクロするという思惑は外れました。せめて、サンプルコードを紙に印刷してくればよかったです。
また、桐さんも体調が悪い中、数100行のコードをバリバリ打ち込んでもらうしかなく、書くだけで精一杯。最後は「肩が凝ったー!」みたいになってしまいました。
それでも、なんとか、最終的にプログラムが動いてよかった!
反省が一杯
- 他の班員のことをケアできなかった
- 事前に決めたゴールありきで進めてしまった
僕に必要なことは、班のメンバーや、教える相手の体調やペースを見て、事前に決めた計画を的確にアレンジすることだったと思います。
桐さんはとても頑張り屋さんだから、最後まで作れました!しかし、途中で投げ出しても仕方がないレベルです!
講師に一方的なペースを押し付けられたら、自ら学んでいるという意識がなくなってつまらなくなってしまいます。
今回は講師失格だったなと反省しました。
メイドさんがプログラミングできることによって
メイドさんがプログラミングできて何になるのでしょうか?
実用的なアプリプログラマーになるには、相当没頭しなければなりません。本業の傍らやるには重たすぎます。その上、今時プログラミングができるアイドル、女優、タレント、芸人そんなのはいっぱいいます!僕よりプログラミングができるかわいい子なんていっぱいいます。ちょっとできるくらいでは意味がありません。
では、プログラミングを学ぶことは無意味かといえば、そんなことは無いと思います。まず、何より、楽しい!会に参加する桐さんやみどりさんはとても出来た人ですから特にそうなのですが、プログラミングって、みんなで作ると楽しいです。
楽しいし、勉強になります。みんなで作れば、アイデアも出てきます。
メイドさんを囲ってみんなでアプリを作る。そして、お互いに刺激しあって、最終的になにか、素晴らしい物ができるかもしれない!
その中心にメイドさんがいるのです。そう、メイドさんがプログラミングを少しできることによって、こんなにプラスのことがいっぱいあるのです。
まとめ
今回、かわいい人にプログラミングを教えるという技術者としては最高に贅沢な体験をさせていただきました。
それによって、たくさん学ぶことができました。
これからも会の存続を願い、Androidの会秋葉原支部に関わる皆さん、メイドさんのますますの活躍をお祈りします。