見出し画像

アルゴ式公開の話 + 社会人を経験してわかったアルゴリズムを学ぶ意義

アルゴ式を公開しました。

先日から開発を進めておりましたWebアプリケーションアルゴ式」を本日19時に公開しました。サービスの概要を簡単に説明すると、「プログラミングを道具としてコツコツ積み立てることで、様々な知識に触れ、論理的思考力やコーディング力を身につけられるアプリケーション」です。

ただし、現時点でのコンテンツ数は正直とても少ない状態です。今後、ユーザの皆様とのコミュニケーションをとおして、定期的に増やしていきたいと思います (Twitter もぜひフォローしてください)。皆様がどのようなコンテンツを望んでいるのか、ぜひ教えてください。
たとえば「for 文などの学んだばかりで、それを練習する場が欲しい!」という要望が多ければ、for 文の初心者の方が for 文の練習ができる練習問題を多数用意していくことが考えられます。また、「基本情報の勉強になるコンテンツが欲しい!」という希望が多ければ、私たちも基本情報の復習をしながら中身を増やしていくことが考えられます。アルゴ式を皆でともに育てていけたら幸いです。
なお、競技プログラミングのコンテンツに関してはけんちょん本をベースに作成を進めていますので定期的に公開しようと考えています。本のはじめからコンテンツを作成しているため、普段から競技プログラミングをされている方には最初は物足りない内容かもしれませんがよければお付き合いください。もちろん競技プログラミングに関するリクエストも受け付けています。

なぜアルゴ式を作ったのか

「Progate」「Udemy」といった、様々な優れたプログラミング学習サービスが世の中にリリースされているにも関わらず僕たちが「アルゴ式」を作ったのは、「あえてプログラミングを学ぶことを手段として捉えることに徹することで、学習の『視点』の格差をなくしたいから」です。
世の中には「プログラミングができるようになるためのノウハウ」が溢れかえっています。中には「3ヶ月でAIエンジニアになれる!」みたいな謳い文句で、知識のない人に「こんな難しいことが自分でもできるようになるんだ!手に職がついて自由にフリーランスができるんだ!」という希望を持たせ誘い込む業者もいます。(実際に3ヶ月で最先端のAIエンジニアになれるなら僕が6年間大学でやって きたことはなんなんだろう、という話ですが)
とはいえ実際に「ものづくりを体験する」というところがゴールのプログラミングならば本当に3ヶ月でできちゃうんですよね。Railsをはじめとした最近のフレームワークは本当に優秀で、Twitterだったりフリマアプリだったりの真似事くらいのレベルならはガイドに則ると未経験からでも作れちゃいます。
「ものを作る」という体験は誰でも得られるようになっています。「手軽さ」という魅力の裏に、本当に必要とされる「泥臭いことに食らいつく粘り強さ」「要件やを過不足なく伝えられるコミュニケーション力」「深い論理的思考力」「探究心」みたいなものが隠されてしまっているわけです。

記事が二本立てなのに長くなってしまうと良くないので、続きだとかこのことを感じたキッカケは改めてnoteを書かせてください。(その際は読んでいただけると幸いです。本当にずっと昔からモヤモヤしていたことなので。)

社会に出て感じた、具体的なアルゴリズムの必要性の薄さ

前回の退職失敗エントリでも書いた通り、私は株式会社GA Technologies の AI Strategy Center という研究開発の部署に勤めています。一般的に研究開発の部署といえばコードをバリバリ書いてアルゴリズムを考案して、というイメージがあると思うのですが、自分の手で大学で習うようなアルゴリズムを使おうとしたのはこの1年半で一度だけでした。
その一回も結局はライブラリを使った方がはやい、というオチでした。販売図面から物件の情報を読み取るために表の解析をするタスクで、表を取得するために連結成分を幅優先探索で調べたのですが、そんなのOpenCVでパパッと処理しちゃった方が速度的にもはやいよと言われ(実際その通りで)悲しくなりました...。
GA Technologiesが取り組んでいるのがDXだということも影響していると思うのですが、よっぽど根幹を担うシステムでなければ、いかにアルゴリズムを構築できるかより既にあるライブラリを知って使える方が大切だということを身に染みて実感しました。

それではなぜアルゴリズムを学ぶのか

アルゴリズムが専門でない人がアルゴリズムを学ぶ意義は、最低限の知識で純粋な論理的思考に触れられるところにあると僕は考えています。
ノーコード/ローコードが代表するように、少し使い方を覚えればほとんどコードを書かずに非エンジニアでもプロダクトが作れてしまうようなサービスが台頭し始めています(WIXなどを想像すると分かりやすいかと思います)。最近では「MatrixFlow」のように、機械学習をモデル選定から自動で行ってくれるサービスまで出現しています。付け焼き刃の知識だけでは間違いなくこれらのサービスに淘汰されます。
この背景もあってか、エンジニアは他の職業に比べて「自分の技術やスキルがいつまで社会で通用するのか」を特に不安に感じているようです。

上に挙げたサービスや凄まじい速度で発展する技術に乗り遅れないためには、作業的に置き換えることのできない根本的な「深い思考力」や「引き出しの多さ」といった、プログラミングにおける「筋肉」をつける必要があります。この「筋肉」を鍛えるためにアルゴリズムを学ぶことは間違いなく役に立ちます。

質問、疑問点があれば、Twitterにて連絡しただけると助かります!

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