Slide 1

Slide 1 text

JavaScriptアルゴリズム本を 技術書典7で頒布しました We Are JavaScripters! vol.36 at SmartHR @pco2699

Slide 2

Slide 2 text

自己紹介 ● 高山 和幸
 ● @pco2699
 ● アルゴリズムとTypeScriptがすき


Slide 3

Slide 3 text

今日 お話しすること/しないこと ● 今日 お話しすること
 ○ 技術書典7で出した「JavaScriptアルゴリズム本」の内容の話
 ○ 感想・結果などの振り返り
 ● 今日 お話しないこと
 ○ JavaScript/TypeScriptなどの技術的に突っ込んだ話


Slide 4

Slide 4 text

技術書典7に参加しました! ● 技術書典とは
 a. 技術同人誌の即売会!
 b. たくさんサークルが一斉に本を売ります
 c. 買いに来る人もたくさん


Slide 5

Slide 5 text

Nuxt.jsとFirebaseでつくるアルゴリズムミニアプリ ● アルゴリズムを知りたい
 Webエンジニアのための入門書
 ● アルゴリズムをWebアプリを
 作りながら学べる!
 ● 冊子+DLカード ¥1,000


Slide 6

Slide 6 text

本書を書くきっかけ


Slide 7

Slide 7 text

本書を書くきっかけ ● 本屋に並んでいるアルゴリズムの本
 a. 言語がC++, C(たまにPython)
 b. 作るものが何に役立つのかわからない
 c. 説明がわかりづらい


Slide 8

Slide 8 text

本書を書くきっかけ ● 本屋に並んでいるアルゴリズムの本
 a. 言語がC++, C(たまにPython)
 b. 作るものが何に役立つのかわからない
 c. 説明がわかりづらい
 これを解決した本がほしかった

Slide 9

Slide 9 text

a. 言語がC++, C ● C++のイメージ: なんだかとっつきづらそう...
 (注) C++をディスる意図は全くありません。 C++は偉大な言語です。

Slide 10

Slide 10 text

b. 作るものが何に役立つのかわからない ● 実際のアルゴリズムの問題
 i番目の配列がi日目の株の値段を表す配列があります。 最大で1回のトランザクション(例: 1個の株を買い、1個の株を売る)が 許されている場合、最大の利益を探すアルゴリズムを設計しなさい。 株を買う前に売ることが出来ない。

Slide 11

Slide 11 text

b. 作るものが何に役立つのかわからない ● 実際のアルゴリズムの問題
 i番目の配列がi日目の株の値段を表す配列があります。 最大で1回のトランザクション(例: 1個の株を買い、1個の株を売る)が 許されている場合、最大の利益を探すアルゴリズムを設計しなさい。 株を買う前に売ることが出来ない。 こんなの実際に書くことある!!?

Slide 12

Slide 12 text

c. 説明がわかりづらい ● アルゴリズム独特の用語がたくさんある
 ビッグオー表記 幅/深さ 優先探索 二分探索 時間計算量 空間計算量 動的計画法 ダイクストラ法 空間計算量

Slide 13

Slide 13 text

c. 説明がわかりづらい ● アルゴリズム独特の用語がたくさんある
 ビッグオー表記 幅/深さ 優先探索 二分探索 時間計算量 空間計算量 動的計画法 ダイクストラ法 空間計算量 概念を理解すれば実はそんなに難しくない

Slide 14

Slide 14 text

c. 説明がわかりづらい ● 最近は「アルゴリズムをわかりやすく」という
 コンセプトの本が出てきている


Slide 15

Slide 15 text

本書はどう解決したか


Slide 16

Slide 16 text

本書はどう解決したか ● 言語がC++, C(たまにPython)
 
 ● 作るものが何に役立つのかわからない
 
 ● 説明がわかりづらい
 言語はJavaScript Webアプリを作る なにかに例えて説明

Slide 17

Slide 17 text

言語はJavaScript ● (おそらく)初学者が学ぶことが一番多い言語
 ● ES2015以降であれば、キツくない。
 ● Jestを使えばテストも簡単


Slide 18

Slide 18 text

Webアプリを作る ● 次を組み合わせれば、Webページを作って公開できる時代!
 a. フロントエンドフレームワーク(React/Vue/Nuxt)
 b. 静的ファイルホスティング(Firebase/Netlify)


Slide 19

Slide 19 text

なにかに例えて説明 ● 難しい概念は なにかに例えて説明するとわかりやすい
 ● リスト探索は「数字当てゲーム」に例えて説明


Slide 20

Slide 20 text

絶対に売れると確信した


Slide 21

Slide 21 text

技術書典当日...


Slide 22

Slide 22 text

売上部数 48/100部

Slide 23

Slide 23 text

割と爆死


Slide 24

Slide 24 text

振り返り・要因分析 ● 技術書典7のユーザ
 a. 商業誌にないような最新の技術を求めてる人が多い
 b. 初学者はあまり来ない
 ● 内容・タイトル
 a. タイトルから「Nuxt.jsとFirebase」の深堀り本だと思われた
 b. 今回はリスト探索のみのため、内容が簡単すぎた


Slide 25

Slide 25 text

振り返り・要因分析 ● 実際に聞かれたこと
 a. 「これって競プロで使えますか?」 
 => 使えません
 b. 「Firebaseどのくらい使ってますか?」
 => Hostingのみです。すいません。
 c. 「動的計画法とか今後やりますか?」
 =>期待しててください


Slide 26

Slide 26 text

技術書典に参加した感想 ● 自分が書いた本をユーザが目の前で読んで買うか判断する
 ダイナミックで面白い
 ● 本が売れると嬉しいけど、売れないと苦笑いが止まらない
 ● 売れなくて赤字でも、悔しくて次回も出たい...! ってなる


Slide 27

Slide 27 text

見本誌もってきました
 よければ見てみてください