maximum80の日記

「Empower Engineering!」をテーマに自立自走エンジニア組織によって日本を元気にするため日々奔走している事業家のブログ

公教育のプログラミング授業にオンラインシステム(track)を導入した話 - 道のり編

f:id:maximum80:20200121095207j:plain

新田(@maximum_80)です。2020年あけましておめでとうございます。 今年もどうぞよろしくお願いいたします。

2020年の最初の投稿となりますが、今回は僕自身が展開している事業の話を少ししようと思っています。

令和元年にあった出来事として、社会人になったときから兼ねてより自分自身の夢であり目標でもあった

「公教育のプログラミング授業に事業者として支援をする」

を20代最後の年に実現することができましたので、少しその背景や実際の授業の話、そしてそこで感じた所感などについて20代の人生の振り返りも込めて、書いてみようと思います。

(注意)完全に自分自身の社会人史を説明する内容になりますので、あまり読まれる方に学びになることは少ないかもしれない上にやたらと長いので、ご興味のない方はこちらでブラウザバック推奨

きっかけは学生時代に挫折したプログラミング授業

もともとこの業界で事業を立ち上げた背景としては、自分が学生時代にプログラミング授業で挫折をしたことがきっかけです。

Linuxとか聞いたこともないのにいきなりFedora/JavacのHelloWorldで詰む

大学1年生の情報の授業では、1学期(*1)に情報リテラシーという座学的に情報工学についてのさわりを学び、その後に2学期・3学期でプログラミング必修があるというカリキュラムでした。

エンジニアならご存知の方も多いと思うのですが、FedoraというLinuxディストリビューションの環境が与えられて、そこでJavaプログラムを書く、というものだったのですが、そもそも、当時の自分はWindowsにしか触れたことがなかったので、「え、何これ?」と、プログラム以前にFedoraの扱いに苦戦していたことを覚えています。

先生「はい、それではsample.javaをjavacでコンパイルして、classファイルを確認し、java sampleで実行してみてください」

僕「はい!(コンパイル!?クラスファイル!?)」

このjavacとかjavaとかclassファイルとか、コマンドラインのインターフェースでいきなりコンパイルをしてプログラムを実行するというところで、当時の自分には一体何が起きているのかを理解することができず、見様見真似で乗り越えましたが、完全に諦めモードに突入していました。

今考えると、とても恵まれた環境だったな、とも思いますが、当時の自分には慣れない開発環境だったり、コンパイルという仕組みの理解は初学者にとてもハードルが高かったということを感じていました。

「1000行のプログラムを書いて提出しなさい」で完全に詰む

そんなこんなで成績がよくなかった自分は、3学期の授業では最下層のクラスに割り当てられました。(*2

最下層のクラスは出される宿題や単位取得のための最終成果物もかなりハードルが低く設定されています。その最終成果物というのが

「テーマはなんでも良いので1000行以上の動くプログラムを提出しなさい」

というものでした。 先生にとっては、そこまで深い意味はなかったのかもしれないですが、いまいま考えると完全にこの最終課題が自分のプログラミング人生にとって諸悪の根元になってしまっていました。

プログラムというものはいかに短くてスマートで汎用的に仕上げるかが重要であるにもかかわらず、僕は1000行以上のプログラムを仕上げるために、必死で中身の同じ関数を、関数名だけ変えて作成しまくりました。

プログラミングの本質や魅力とは真逆のことを考えて、実践していたのです。

初学者にも楽しくて実践的なプログラミング学習環境を

そのような経験もあり、学生時代に一番嫌いな授業がプログラミングで、僕は一生プログラミングとは無縁の人生を歩むんだろうと当時は思っていましたが、実際に就職活動を通じて目の当たりにしたのが「プログラミング力は絶対にこれから必要」という事実でした。

「大学時代からもっとプログラミングの魅力や市場価値、ポテンシャルに早く気づいていれば!」

と後悔することありました。同じような悩みや後悔をしている人も世の中にも多いのではないか、と考えるようになり、なんとしてでもこのギャップを解決できないかと。

そこで

「初学者でも挫折せずに実践的な学習環境を提供することで、プログラミングの魅力や楽しさに気付けるような仕組みを作りたい」

と考えオンラインプログラミング学習システムを作り、学校の先生となってプログラミング授業をするのではなく、事業者となってこれからエンジニアを目指す人たちのために仕組みを作りたい、と考えました。

オンラインプログラミング学習サービスCODEPREPの開発

そうして2013年の8月にリリースしたのがCODEPREPでした。(*3

codeprep.jp

CODEPREPでは、

  • 実践的であること(実社会、企業でも使われる)
  • 環境構築が不要であること
  • コードを書いて動かす体験回数を増やすこと

をコンセプトとし、「小さな成功体験」を提供することでプログラミングの挫折を減らして、初学者でも自立してプログラムを書くようになれるサービスになることを目指しています。

そのようなコンセプトはWebサイトでも書かせていただいています。

f:id:maximum80:20200121095318p:plain

予算のない公教育に導入するには、別路線でのマネタイズが必要

公教育に従事する先生が最も悩んでいるのが、活用できる予算が少ないことです。そのため、学校向けのシステム開発ではマネタイズするのは現実的には難しいのが現状です。

しかしながら、事業者というものはマネタイズというものがとても重要で、より良いシステムを提供し続けるためには、企業体力としてお金を稼がなければなりません。

このジレンマを解決しなければならなかったのですが、僕たちはCODEPREPで国内のBtoC向けのプログラミング学習というマーケットでマネタイズを成功させることができませんでした。

そこで、同じオンラインプログラミング環境を利用しつつ、ビジネスPivotをして誕生したのが、管理者側(例えば授業を実施する先生や研修講師、企業人事)に特化をしたアプリケーション、trackです。

support.codeprep.jp

おかげさまで現在国内150社を超える大手企業を中心とした企業様にご利用いただくことができ、今でも苦労はしているものの、なんとかマネタイズに成功し、お金がない公教育にも導入するための企業体力をつけることができました。

論文の執筆で公教育への認知拡大へ

システムと企業体力がついてきたところで、いよいよ公教育への導入を画策し始めました。(ここまでのフェーズにくるのに事業立ち上げから6年が既に経過。笑)

trackの監修をしていただいている技術顧問の竹内郁雄先生に公教育導入に関するご相談させていただいたところ、

竹内先生「何事にも、学校関係者に知ってもらったり信頼を得るためには、まずは論文を執筆するのが一番」

というご指南をいただき、大学卒業ぶりの論文を執筆しよう、という形になりました。

情報処理学会に加盟して論文を提出

早速情報処理学会に加盟して、どの研究会に論文を提出するかを先生と考え、

コンピュータと教育(CE)という研究会が

  • コンピュータないし情報処理技術そのものの教育
  • 教育にコンピュータを利用する分野

が取り扱われており、最もいろいろな研究が進んでいるということで、一番trackが展開している領域とシナジーが深かったため、ここに論文を出すことに決めました。

ご存知の方も多いとは思うのですが、本当に顧問の竹内先生は日本における情報教育会の仏的な存在というか、いろいろな先生とご人脈も持たれており、僕は背中に佐為がいる状態のヒカルのような気持ちで論文を執筆いたしました。

論文のタイトルは

「複数言語に対応しやすい オンラインプログラミング学習・試験システム track」

というド直球な内容でした。

情報教育シンポジウム(SSS)に参加、無事に優秀論文賞を獲得

f:id:maximum80:20200121112315j:plain

そうして2019年8月に、執筆した論文をコンピュータと教育研究会が1年に1度開催しているシンポジウム「情報教育シンポジウム(通称:SSS)に提出し、発表をすることになりました。

対企業へのプレゼンテーションや、ピッチコンテストなどでの発表には慣れているものの、論文の発表はほぼ未経験のため、ガッチガチに緊張してしまいましたが、無事に優秀論文賞をいただくことができました。

tracks.run

実際に提出した論文は、SSSのページからダウンロード可能です。

SSS2019 - IPSJ SIGCE

青山学院大学の授業導入へ

情報教育シンポジウムでは、たくさんの先生方と出会うことができ、様々な情報交換をさせていただくことができました。

これまでは「生徒側」の視点でプログラミング環境の改善に取り組んできましたが、実際にプログラミング授業を受け持つ先生方からお話を伺うことで、公教育におけるプログラミング授業環境を整備することの難しさや課題など、「先生側」の視点で理解をすることができたのがとても良い経験でした。

そして、そこで知り合った青山学院大学の先生と、実際のプログラミング授業でtrackを導入しよう、という運びとなり、竹内先生の仰る通り論文を提出したことで公教育にシステムを広げる機会につながりました。

最後に

今回のエントリーでは公教育導入までの背景や道のりをまとめてみました。まだまだ道半ばな状態ではあるのですが、今となって改めて振り返ってみると「物凄い長く遠い道のりだったなぁ」と感じるのですが、同時に何事も諦めずに辛抱強く続けることで、「夢」の解像度が上がって「目標」に変わっていき、実現の可能性がましていくのだな、と実感しています。

次回のエントリーでは、具体的に青山学院の授業で取り組んだことやそこで得た学びについて、改めてまとめていきたいと思います。

おまけ:学校への無償展開を開始しています

また、今回のシンポジウムや青山学院大学への導入を経て、学校向けの無償プランを現在提供しています。

もし学校関係者の方でご興味がある方がいらっしゃれば、お気軽にお問い合わせください。

tracks.run

*1:うちの大学は当時3学期制でした

*2:2学期の授業はクラス別、3学期は能力別(テストの成績)によって、クラスが割り振られるというものでした

*3:リリースしたのがProgateよりも先なのにもかかわらず、BtoC市場では圧倒的にProgateに敗北しているサービスです。笑