見出し画像

「今週のアルゴリズム」の振り返りとCodeIQへの感謝

本日(2018/04/25)、CodeIQの「プログラミング腕試しサービス」が終了してしまいます。
https://codeiq.jp/news/3569

CodeIQでプログラミングに関する問題を毎週作成した「今週のアルゴリズム」シリーズなど、さまざまな問題を出題させていただいたことは、私自身の仕事に大きな影響を与えました。
出題者として約5年に渡りお世話になったCodeIQへの感謝も込めて、これまでの振り返りを書いておこうと思います。

CodeIQとの関わりから「今週のアルゴリズム」出題まで

私とCodeIQとのやり取りが始まったのは2013年5月のことでした。
CodeIQがサービスを開始したのが2012年6月なので、1年が経とうとしている頃です。

その頃は私も自分自身の何を売りにできるか悩んでいる頃でした。
いろいろなところで記事などを書いており、そのつながりで声を掛けていただいたと記憶しています。

前職がセキュリティ企業であったこともあり、当時は「セキュリティ」に関する問題の出題から始まりました。
(CodeIQは「ITエンジニアのための実務スキル評価サービス」で、プログラミングだけでなく、セキュリティやインフラ、データ分析などに関する問題も出題されていました。)
月に何問か出題し、採点する、ということを繰り返していた(当時は出題者が手動で採点しフィードバックしていました)ところ、10月末に「今週のアルゴリズム」を作りたい!というお話をいただきました。

「今週のアルゴリズム」はアルゴリズムに関する問題を毎週出題し、解答内容についてフィードバックするだけでなく、正解者にはバッジを付与し、正解者の一覧を「CodeIQ MAGAZINE」というメディアに掲載する、というシリーズでした。

当時のイメージはIBM Researchが提供している「Ponder This」。
アルゴリズムに関する問題を出題し、正解した人のニックネームを一覧にする、というアイデアはここがスタートでした。
(当時、CodeIQ MAGAZINEがスタートしたばかりで、「記事を増やしたい」という目的もあったと推測しています。)

「今週のアルゴリズム」スタート時は、私だけでなく複数の出題者が持ち回りで担当する、という想定でした。
とりあえず私が試しに数問作ってみて、状況を見ながら他の出題者についても考えよう、という感じだったと思います。

サンプルで作ってみて、出題を始めてみると挑戦者も少しずつ集まり始め、
いろいろなご意見を頂戴しながらも一人で毎週出題を続けることになりました。(当時から挑戦していただいた皆様のおかげで、長く続くことになりました。)

お疲れ様会での出来事からCodeIQ 2周年

「今週のアルゴリズム」出題にようやく慣れてきた翌年3月、CodeIQのスタッフや一部の出題者が中心となって集まった「CodeIQのお疲れ様会」が開催されました。
約20週に渡って毎週出題していて、それなりに自信もついてきた中、この会である方からいただいた言葉を強烈に覚えています。

「20問か…まぁ長くは続かないだろうな…」

確かに、たった20問。されど20問。個人的には相当悔しかったと同時に、絶対に続けてやる!と心に決めた瞬間でした。
※その方とは今も仲良くお仕事をさせていただいていますし、この言葉のおかげで続けられたと思っています。

その後も出題を続けた6月。
今度はCodeIQ 2周年イベントへのお誘いをいただきました。

このイベントでは、参加者同士が本を交換する時間があり、私は好きな本である『「3」の発想』(芳沢 光雄 著)をプレゼントしたことを覚えています。
(数学において「2」で留まるのではなく「3」の発想を持つことが大切、という本です。2周年で満足するのではなく、3年続けられると、そこから先は…という期待を込めて。)

正解者に付与される「今週のアルゴリズム」バッジが変更になったのもこの頃です。
第30問までは「よくできました」だけのバッジだったのですが、ちょうど31問目のところでCodeIQも2周年を迎える、ということで、デザインがリニューアルされ、問題番号が記載されるようになりました。

このデザインのサンプルを見たとき、なんと問題番号が3桁だったのです…
まだ30問。この段階で100問以上を期待されているのだな…と期待を感じるとともに、その重圧に押しつぶされそうだったことを覚えています。

「今週のアルゴリズム」の一時休止

毎週「今週のアルゴリズム」を出題していて気づいたことは、「長い休みを取れない」ということです。
夏休みも冬休みもなく問題を作成し、提出される100人以上のソースコード(バラバラの言語で作成されている)に目を通し、手作業で採点することを1年間毎週続ける。。。エンジニアの皆様ならどんな状況か想像できるでしょうか。
出題から一年を迎える頃、さすがに少し休もうかと考えました。

「海外に行くために一週間だけお休みしよう」

でも毎週の出題は途絶えさせたくない。。。
結局、問題だけは事前に作成しておくことで毎週の出題は続け、解答のフィードバックだけ、一週間お休みさせていただきました。(もちろんフィードバックは二週間分になりますが…)
それまでは元日でもフィードバックをしていたことを考えると、毎週よく続けていたと思います。

結局、海外に行きながらも、現地で問題を考えていました。
その後も毎週出題を続けていましたが、12月に入って休止を申し出ました。

その理由は「おうちで学べるセキュリティのきほん」の執筆依頼があったためです。

私としても、雑誌などに記事を書いたことはあるものの、書籍の執筆というのは経験がなく、本を書きながら毎週出題し、手作業で採点するのは想像できませんでした。

どちらかにご迷惑がかかることを考え、書籍の執筆に集中することにしました。
このため、2014年の末を持って「今週のアルゴリズム」を休止するという決断をし、60問で一区切りとなりました。
(そして、同時に「プログラマ脳を鍛える数学パズル」の企画も進むことになります。)

「プログラマ脳を鍛える数学パズル」出版と「今週のアルゴリズム」再開

2015年7月に「おうちで学べるセキュリティのきほん」を出版するだけでなく、並行して「プログラマ脳を鍛える数学パズル」も執筆していました。
これは「今週のアルゴリズム」で出題したこれまでの60問に加え、新作の10問を含んだ内容でした。

2015年10月の出版が決まると一段落。
この本のプレゼントキャンペーンと合わせて、「今週のアルゴリズム」も再開することにしました。
ただ、このときにはすでにCodeIQは自動採点に。
(挑戦者がソースコードを提出すると、用意されたテストデータに対して実行し、自動的に正解・不正解が判断される。)
実質、採点は必要なく、問題だけを作成すればよい状態になっていました。

自動採点であることについて、挑戦者の皆様からさまざまな意見をいただきましたし、出題者としても申し訳ない気持ちでいっぱいでした。
ソースコードに多くのコメントを書いていただいているのに、自動採点だけで終わってしまう。
とはいえ、私だけ手動採点というのは許される状況ではなく、自動採点で再開することになりました。
ただ、せっかく書いていただいている方に申し訳ないので、「提出されたすべてのソースコードには目を通そう」と心に決めてスタート。

これまで同様に丁寧に書いてくださる方だけでなく、デバッグせずに提出して何度も修正される方もいらっしゃいましたが、結局最後まですべてのソースコードに目を通しました。

ただ、フィードバック文を作成しなくなったことで、大幅に負担が軽減されたことも事実で、その後は本を書きながらでも毎週出題を続けられるようになりました。
もし自動採点の仕組みがなければ、年2冊の本を出しながら毎週出題することはできなかったと思います。

「プログラミング言語図鑑」の出版

CodeIQがなければ生まれなかった本として、2017年に発売した「プログラミング言語図鑑」があります。

もともとたくさんのプログラミング言語を学ぶことが大好きだった私。それでも、一人で学べる言語の数には限りがあります。
ただ、CodeIQで採点するためには、さらに勉強する必要がありました。

CodeIQでは手動採点の時代から、挑戦者の皆様は好きなプログラミング言語で解答を提出できました。
当時の提出方法はソースコードを貼り付けるだけで、言語を選ぶ欄もなかったため、ソースコードだけを見て採点者が言語を判断する必要がありました。
見たことがないような言語で提出いただいたこともあり、読むだけで一苦労なこともありました。

その後、自動採点になってからは言語を指定して提出いただくため、言語を判断する必要はなくなりましたが、それでも提出できる言語は多岐に渡ります。
バージョン違いも含め、50種類ほどの言語を選択できましたが、どの言語で提出されても読めるようになっていました。

この知識を活かしたい、と思ってできたのが、上記の「プログラミング言語図鑑」です。
CodeIQでは使えない言語も含めて、67言語の特徴を見開きだけで平等に集めたことで、これまでなかった本になりました。

「もっとプログラマ脳を鍛える数学パズル」出版とCodeIQ 終了

2016年のDevelopers Summit(デブサミ)で「プログラマ脳を鍛える数学パズル」がエンジニア本大賞で技術書部門の大賞を受賞したこともあり、
続編である「もっとプログラマ脳を鍛える数学パズル」も2018年のデブサミに合わせて出版することになりました。

これも前作同様、過去の「今週のアルゴリズム」で出題した問題の中から選定し、一冊にまとめた本です。
この本の出版時には、すでに出題数は180問に近づいており、前作で収録済みの問題を除いてもたっぷりあります。

ただ、ページ数の都合もあり、今回も70問を掲載することになりました。
残った問題にプラスアルファし、さらにもう一冊出せればいいな、と思っていたところ、突然のことながらCodeIQが終了するとのメールをいただきました。

非常に残念ではありますが、私の力ではどうすることもできませんでした。

感謝

CodeIQは終了してしまいましたが、「今週のアルゴリズム」で出題した問題で本になっていないものがまだ60問ほどあります。
あと少し追加すれば、もう一冊くらいはできそうですが、こればかりはどうなるかわかりません。
これまでの本の売れ行きによって、出版社の判断がどうなるか、という面もあるでしょう。

ただ一つ言えることは、ここまで続けてこられたのは挑戦者の皆様がいらっしゃったからこそだ、ということです。
180問を超えるプログラミング問題に挑戦いただき、本当にありがとうございました。
そして、CodeIQを作り、支えていただいたスタッフの皆様、お疲れ様でした&ありがとうございました。

この記事が気に入ったらサポートをしてみませんか?