前編に続いて及川卓也さんにプログラミング初学者向けの学習サービス『Jasmine Tea』のこの1年を聞く。リリースからちょうど1年が経った『Jasmine Tea』だが「実は思っていたよりうまくいっていない」のだという。未知の挑戦に課題はつきものではある。及川さんらはどんな課題にぶつかり、それとどう向き合っているのだろうか。
事前に立てた仮説のことごとくが外れたこと、それでもブレずに開発を続けられている理由、少し脇道に逸れて、生成AI時代のエンジニアに必要なことも伺った。
Tably株式会社
代表取締役 Technology Enabler
及川 卓也さん(@takoratta)
早稲田大学理工学部卒業、日本DECを経てMicrosoftに転職。Windowsの開発に携わり、その後Googleではプロダクトマネジメントとエンジニアリングマネジメントに従事。退職後はテクノロジーによる課題解決と価値創造で企業支援やプロダクト開発エンジニアリング組織づくりの作成支援を行うTably株式会社を設立。AdobeのExecutive Fellow、クライス&カンパニーの顧問も勤める
ことごとく外れる仮説
━━実際に『Jasmine Tea』をローンチして以降のこの1年はどうだったのでしょうか?
まず、いろいろなものが仮説から始まっています。これらの多くが、外れていました。間違っていたのです。社内で議論する時に争点になっていたものもあれば、さほど争点になっていなかったけれども、結果的にうまくいっていないものもたくさんあります。
━━例えばどんな想定外がありましたか?
一つ特徴的なのは、前編でキーワードとして挙げた、写経という考え方です。われわれの世代は、テキストをひたすら写経していくことをしていました。
うまくいかなければ、動かしたい一心で自ら努力をしました。そのことを通じて学んでいくというのがわれわれの体験でした。
ところが、これが今のところ全く通用していません。われわれは「苦労が学びにつながる」と思っていましたが、それは必ずしも正しくなかったのです。
キーボードを打つことに興味のある子どもは多いです。けれども、キーボードを打つのに「苦労する」ことで、モチベーションが削がれてしまうことの方が大きいことが分かってきました。
われわれはサンプルコードをたくさん用意していますし、「こう書くと、こう動く」というマニュアルも用意していました。当初は、そういうマニュアル部分も含めてコピーアンドペーストを許さず、あえて「一字一句真似して打ってください」としていました。ですが、その行動が苦痛になってしまい、学びにつながる前の離脱の要因になりかねないことが分かりました。
なので、今はコピーボタンを用意し、エディタにもペースト機能を入れて、する必要のない苦労をしないで済むようにしています。
━━「苦労」を受け入れられない子どもが増えているということでしょうか?
学習というのは結局、苦労するものだと思います。苦労することで学んでいくものだというのはおそらくは変わりません。
ですが、苦労しなくていい苦労をしてしまうことにより、本来の学習が阻害されることもあると思うのです。ですから、そのバランスをどこに置くかということでしょう。
これに近い課題がもう一つあります。こちらはまだ仮説が完全に覆されたかは分からず、検証中ではあるのですが。それは「分からない言葉にどう対処するか」です。
━━分からない言葉にどう対処するか?
例えば「Jasmine Tea」という言葉自体、中学1年生が「ジャスミンティー」と読めるかどうかという問題があります。他にも、専門用語の中には中学生には理解できないのではないかという言葉があります。
それらを全てカタカナにしたり事細かに説明したりする必要があるのかどうか。これは社内でも争点になり、いまだに掴みかねているところです。
CTOの田中は、プログラミングをしたい、ゲームを作りたいと思うのであれば、自分で辞書を引いて調べればいいのではないかという考えでした。彼自身はそうしたし、今ならGoogleで検索すればいいのではないかと。
確かに、こうした用語の中には今後プログラミングを続ける上で絶対に必要になるものも多いです。であれば、この際ちゃんと覚えてもらった方がいいだろうという考え方です。
彼の主張は正しいと思う一方で、人間は少しでも読めない言葉があると、そこで思考が分断されてしまうという話もあります。これはこれで正しいなと私は思っています。ということで、今はふりがなを振るなど、かなりやさしくする方向に変更しています。
ですが、どこまでやさしくすればいいのかという問題もあります。中高生とひとくちに言っても中1と高3ではレベルは全然違うでしょう。
いずれにしろ、われわれがもともと持っていた仮説が必ずしも正しくなかったということがたくさんあります。
学ぶことに苦労はつきものだが……
━━学ぶことに伴う苦労とどう向き合うかは社会人、エンジニアにも通じる話に聞こえます。
いまだに「楽をするな」とは思います。ただ一方で「自分が若い時に苦労したから、今スタートする人も同じように苦労すべきだ」というのは典型的な老害だと思います。
これは例えば生成AIにも通じる話です。使って楽になるものは使った方がいい。もしかしたらその後に楽をしないことも経験した方がいいのかもしれないですが。学習過程の一番最初にハードルを高くする必要はありません。低いところからスタートした上で、徐々に上げていくのでいいのです。
例えば、今はブラウジングする際にTCP/IP上に何がどう流れているかとか、そもそもTCPやUDPといったプロトコル自体を知らない人も多いと思います。
知っておいた方がいい人たちも確かにいます。ですが、それは知っておいた方がいい人が、知っておいた方がいいとなった時に学べばいい話だと思います。
━━生成AIが登場したことで「プログラマーはコーディングできなくてよくなる」という人もいます。一方で、何かトラブルがあった時や作り変える必要性が生じた時に、本質を知らないと対応できないという論もあります。
これは本題とずれますが「生成AIによりプログラミングが不要になる」ということに関しては、私は若干違う考え方を持っています。生成AIを用いてプログラミングをすることは、プログラミングなんです。
━━どういうことでしょうか?
プログラミングというのは、もともとはCPUに対して機械語で命令することでした。これはもはや16進数の羅列であって、人間には分かりません。
そこでアセンブラ、さらには一般のプログラミング言語が登場します。今のプログラミング言語は、英語さえ分かっていれば人間でも書くことができます。
けれども、それもやはり専門教育を受けていなければ分からない。ということで、自然言語でコンピュータに指示を出せるようにしたのが、最近の生成AIです。
ただし、自然言語でコンピュータに指示を出そうとしたら、結局はプログラム言語と同じようなことが必要になってきます。
1+1のようなプログラムであれば、正解が一個しかないので問題はないかもしれません。けれども、いくつも選択肢があるようなプログラムだと、どれを書けばいいのかを生成AIは判断できません。
的確に指示を出さないと適当なものが出てきます。すごく効率の悪いプログラム、すごく電力消費の多いプログラムが生成されるかもしれません。ですから、やってほしいことをちゃんと指示する必要があります。
人間の話し言葉は非常に曖昧性を含んでいますから、曖昧性を排除して指示を出す必要があります。私の自説では、これは限りなく今のプログラミング言語で書くことと近くなってくる可能性が高いです。
プログラミング言語の進化には機械語からアセンブリ、一般のプログラミング言語という流れがあり、その先に生成AIやノーコード・ローコードがあります。
その流れを追うほどに、何を指示として出さなければならないかという部分はどんどん楽になっています。ですが、どれだけ楽になろうとも、絶対にゼロにはならないだろうと私は思います。
自ら教壇に立ち、中高生を理解する
━━話を『Jasmine Tea』に戻すと、想定外のことは他にも?
これは本当に頭の中にお花畑が広がった考え方だとは思うのですが、私たちは当初、認知さえ広がったならば、中高生が自ら学習し続けてくれるようになるだろうと期待していました。
ところが、実際はそんなことはありませんでした。特定の地域に集中的にチラシを投下して、認知を広げようとも試みました。チラシとしてはコンバージョンレートは非常に高かったのですが、そこから継続して利用してもらえるようにはなりませんでした。今のところは全く刺さっていません。
そこで今は少し考え方を改めることにしました。
━━どのように?
『Jasmine Tea』はもともと二つの方向性で進めてきました。一つは、今お話しした一般ユーザーにオンラインで勝手にサインアップして使ってもらう方向性。もう一つは、協力してくれるプログラミングスクールや学校などでプログラミングを教えるのに使ってもらうという方向性です。
われわれはこれまで、顧客理解のところをこうした協力団体にお願いしていました。教育現場から上がってくる声から顧客を理解しようとしていました。これは私たちがサボっていたということでもあります。人様に対して普段「顧客観察しろ」と偉そうに言っておきながら「さすがに中高生と話すのなんて無理だ」と諦めていたのです。
ですが、それではやはりダメだろうということで、今は自分たちが教える側に回ることを始めています。すでにインターナショナルスクールで教え始めていて、この4月からは専門学校でも教えることになっています。私もTAとして入っていたり、自分の母校で紹介させてもらったりしています。
中高生はどういった言葉で詰まってしまうのか。どういった学習体験があるといいのか。どういう学習の進め方が適しているのか。自ら現場を踏むことでこうしたことを検証し、よりよい学習環境を模索していこうと考えています。
プロダクトに対する絶対の自信
━━課題からフィードバックを得て改善して……というのはエンジニアに本質的に必要な姿勢かと思うのですが、とはいえ、うまくいかないことが続くと気持ちが折れてしまうこともありそうです。
これももしかしたらあまり正しくないのかもしれませんが、われわれは作っているものに対して絶対の自信を持っています。
少なくともずっと使い続けてくれている学校がありますし、デモを見せると多くの人が「これはすごい」と口を揃えて言ってくれます。自分で言うのもなんですが、完成度は高いと思っているんです。先ほど「プロダクトアウト」とは言いましたが、それは抑制されたプロダクトアウトです。
━━「抑制されたプロダクトアウト」とはどういうことでしょうか。
私もCTOの田中も、本来は技術的に非常に高度なものをやりたい人間です。これをかなり抑制しながら、習う人の立場に立ったユーザー体験を作り上げているということです。
例えば言語で言うと、Pythonではこんなことができる、JavaScriptではこんなことができるというのを『Jasmine Tea』にも取り入れることはできます。ですが、取り入れると何が起きるか。初心者にとっては難しすぎるものになってしまうのです。
『Jasmine Tea』は他のプロダクトと若干違います。ずっと使い続けてもらうことを目的としていません。3カ月なら3カ月、半年なら半年でいいんです。その先にゲームをやりたいならUnityでC#を使って作ればいい。
データ分析がしたいならPythonにいけばいい。Web開発に興味があるならJavaScriptにいってもらえばいい。どんどん卒業して、次の言語に進んでもらって構わないものなのです。
そうすると、必要以上に難しいことができるようにしてはいけないことになります。言語として「あれがあったら便利だよね」「これがあったらいいね」というアイデアはいくらでも出てきますが、あえてそれを入れないようにしているのです。そうして初心者が難しいと感じるところを排除している。徹底してそういう工夫をしているんです。
━━自分たちが技術的に追求したいことを全部盛りのようにしていては、ユーザーの求めるものとは乖離してしまうということですね。
いろいろな人にデモを見せると「あんなこともできるようになりそうだね」と言ってアイデアをくれます。よく言われるのは「これ、社会人のプログラミング教育にも使えますね」ということです。
確かに使えますし、使ってもらって構いません。ですが、われわれとしては少なくとも今の時点でそちらにシフトするつもりはありません。
もし社会人向けにするならば、社会人ユーザーが必要とする機能はまた別にあります。それをしっかりと入れないといけません。なんなら、中の言語はPythonそのものを使った方がいいのかもしれません。Python版の『Jasmine Tea』を作ればいいのかもしれないです。
なので、いろいろな人がいろいろなことを言ってくれるのですが、それを取捨選択しています。せっかくアドバイスをくれた人が不快に思うかもしれないですが、「そうですね」と言いつつ、無視することがとても大事なのです。
━━作っているプロダクトへの絶対の自信というお話もありましたが、「誰」の「何のため」にやっているのかという大義への自信、「これをやるんだ」という強い思いがあるというお話にも聞こえました。
おっしゃるように、ターゲットとなるユーザー像を明確にする、その人たちが持っている課題と、その人たちにどうなってほしいかを明確にする、これはとても大事なことです。
われわれとしてはユーザーに、このプロダクトを通じてプログラミングの基礎を学び、例えば大学受験でうまくいってほしい。中学高校の学習内容を理解をしてほしい。
さらには次の言語へ進んでほしい。われわれが定義する基礎とはそういうことです。ですから、それを学ぶことに特化したものを作っているわけです。
この中にユーザーとして社会人は入っていません。社会人のリスキリングのため、ITリテラシーを高めるためという目的も入っていません。ですから、それは最初から対象外になるということです。
これは私が普段、いろいろな人たちにお伝えしていることそのままなのですが、プロダクトマネジメントをする上では、やはりブレない方針を持っていなければならないのです。
>>>前編記事はこちら
取材・文/鈴木陸夫