人気アプリ「アルゴリズム図鑑」の開発
秘話と学習への活用
お話する人
- 石田 保輝 (いしだ もりてる)
- 東京在住
- 大阪出身
- 「アルゴリズム図鑑」の作者
- フリーランスエンジニア
- 趣味:サッカー、将棋など
今日お話すること
- 1部 アルゴリズム図鑑
- アルゴリズムとは
- 「アルゴリズム図鑑」の紹介
- アルゴリズムを学んでみよう
- アルゴリズムを勉強する意味
- アプリ「アルゴリズム図鑑」開発秘話
今日お話すること
- 2部 エンジニアのキャリア
- 会社の選択
- エンジニアの給料
- 勉強方法
- 自分でサービスを作る場合
1部 アルゴリズム図鑑
1-1 アルゴリズムとは
1-1 アルゴリズムとは
ある問題を解決するときの計算の厳密な手順
-> 料理のレシピのようなもの
1-1 アルゴリズムとは
問題:カレーを作る(普通のレシピ)
- 玉ねぎを炒める
- 肉を炒める
- 野菜と水を入れて煮込む
- ルーを入れる
1-1 アルゴリズムとは
問題:カレーを作る(本格派のレシピ)
- 玉ねぎを炒める
- スパイスを炒める
- 肉を炒める
- 野菜と水を入れて煮込む
1-1 アルゴリズムとは
- レシピ:料理を作る手順
- アルゴリズム:問題を解決する手順
- 同じ問題に対して、それを解決する複数のアルゴ
リズムが存在する。
- それぞれに良い点悪い点がある。
- 同じ料理に対して複数のレシピが存在する。
- それぞれに良い点悪い点がある。
1-1 アルゴリズムとは
ある問題を解決するときの厳密な計算の手順
(例)ソートの問題
9、3、8、2、1、4、6
1、2、3、4、6、8、9
1-1 アルゴリズムとは
procedure bubbleSort( A : list of sortable items ) defined as:
for each i in 1 to length(A) - 1 do:
for each j in 2 to length(A) - i + 1 do:
if A[ j ] < A[ j - 1 ] then
swap( A[ j ], A[ j - 1 ] )
end if
end for
end for
end procedure
例)バブルソートのアルゴリズム
1-1 アルゴリズムとは
アルゴリズムで解決できる問題の例
- ソートの問題
- グラフの最短路問題
- 暗号の問題
- 画像認識の問題
- 将棋AIの問題
… etc
1-2         の紹介
1-2            の紹介
- アルゴリズムが勉強できる教育用アプリ
- iPhone / Android
- 累計80万ダウンロード以上
- 2016年 Apple の選ぶベスト10アプリに選出
- 2017年 書籍化
「アルゴリズム図鑑」絵で見てわかる26のアルゴリズム
1-3 アルゴリズム図鑑を使って
アルゴリズムを学んでみよう
1. Apple Store か Google Play Store
で「アルゴリズム図鑑」と検索
2. インストール
3. アプリが立ち上がったら一旦お待ちく
ださい
1-4 アルゴリズムを勉強する意味
1-4 アルゴリズムを勉強する意味
1. 良いプログラマーになるためには必須
- いくつかアルゴリズムの選択肢があって、何を選
ぶか。メモリ、CPU、データ量との兼ね合い。
1-4 アルゴリズムを勉強する意味
2. 教養として。
現代の社会において欠かせないアルゴリ
ズムがいくつもある。
- 公開鍵暗号方式
- デジタル署名
世界で最も強力な9つのアルゴリズム
ジョン マコーミック (著), 長尾 高弘 (翻訳)
日経BP社, 1版(2012/7/23)
1-5 アルゴリズム図鑑開発秘話
1-5 「アルゴリズム図鑑」開発秘話
● 着想:大学の講義
● 協力者:デザイナー1名
(大学時代のバイト先の先輩)
● 制作期間:約3年
1-5 「アルゴリズム図鑑」開発秘話
● パワポ作成 -> デザイン -> 実装
1-5 「アルゴリズム図鑑」開発秘話
● AppStoreのトップに掲載
1-5 「アルゴリズム図鑑」開発秘話
● 評価
iOS: 約 4.9  Android: 約 4.6
● レビュー
“Love it! I will buy the full version. The explanation style is top class.”
“Excellent instructions for complicated topics. The small price for this
app is worth it, as it will significantly improve your understanding and
intuition with many modern algorithms.”
“1000年にひとつの神アプリ”
1-5 「アルゴリズム図鑑」開発秘話
● まとめ
頑張って良いものを作ると評価されること
がある
2部 エンジニアのキャリア
2-1 会社の選択
2-1 会社の選択
IT業界の会社の業種
自社サービス 受託開発
検索 EC ゲーム
フリーランスGoogle
Yahoo!
Amazon
楽天
任天堂
ガンホー
近い
2-1 会社の選択
ゲーム -> Unity、Unreal Engine
アプリ -> Swift、Java
Web -> Ruby、PHP
どのような会社に入るかで習得する技術が異なる。
2-1 会社の選択
- 会社の規模
- 1 個人事業主(フリーランス)
- 1〜10 ベンチャー
- 10〜500 中小企業
- 500〜 大企業
2-1 会社の選択
業種、規模、それぞれの会社でできること、身につく
ことが大きく違う。
特徴を理解して自分に合ったものを選択する。
2-1 会社の選択
例えば私(石田保輝)の場合
- マイペース
- コツコツやるのが好き
- 努力が報われて欲しい
- 理不尽が嫌い
2-1 会社の選択
- 会社の規模
- 1 個人事業主(フリーランス)
- 1〜10 ベンチャー
- 10〜500 中小企業
- 500〜 大企業  -> 向いてない。1年で転職
2-1 会社の選択
- 会社の規模
- 1 個人事業主(フリーランス)
- 1〜10 ベンチャー
  -> 向いていた。でもちょっとしんどい
- 10〜500 中小企業
- 500〜 大企業 
2-1 会社の選択
- 会社の規模
- 1 個人事業主(フリーランス)
  -> 現在。気楽。ずっとするかはわからない。
- 1〜10 ベンチャー
- 10〜500 中小企業
- 500〜 大企業 
2-2 エンジニアの給料
2-2 エンジニアの給料
Aさん
iOS Android WEB
Bさん
iOS Android WEB
高給の可能性が高い
2-2 エンジニアの給料
- 専門性があると強い。
 自分の強みを持とう。
- Aさんは優秀だが評価されにくい。
2-2 エンジニアの給料
WEB開発者数 アプリ開発者数 AI開発者数
高給の可能性が高い
2-2 エンジニアの給料
- 同じことをできる人が少ないほど高給の傾向があ
る。
-> 誰もやっていないことをやろう。
 
2-3 勉強方法
2-3 勉強方法
- 大人の勉強は主体的に。自分の意思が全て。
- 効率的に。教材の選択肢は増えている。
- Coursera
- Udemy
- Youtube
- 「アルゴリズム図鑑」 
2-4 自分でサービスを作る場合
2-4 自分でサービスを作る場合
技術を使ったサービスの場合
- アイデア
- エンジニア
- デザイナー
の3者が必要。
2-4 自分でサービスを作る場合
アルゴリズム図鑑の場合
- アイデア(私)
- エンジニア(私)
- デザイナー(協力者)
2-4 自分でサービスを作る場合
アドバイス
- 失敗しても良いのでとりあえず出してみよう。
- 失敗から学ぶことは多い。
- Done is better than perfect.
- デザインに力を入れよう。
- 自分にできないことができる人と仲良くなっておこ
う。
2-4 自分でサービスを作る場合
初期のiOSアプリ
「I am rich.」10万円。
初期のbitcoin (2010年)
1 BTC = 100円
現在
1 BTC = 50万円
2-4 自分でサービスを作る場合
- 新しい技術・制度の登場時は大きなビジネスチャ
ンス。
-> とにかく素早く飛びつこう。
  様子を見てないでやってみよう。
 
おわり

人気アプリ「アルゴリズム図鑑」の開発秘話と学習への活用