JavaScriptアルゴリズム本を技術書典7で頒布しましたWe Are JavaScripters! vol.36 at SmartHR@pco2699
View Slide
自己紹介● 高山 和幸 ● @pco2699 ● アルゴリズムとTypeScriptがすき
今日 お話しすること/しないこと● 今日 お話しすること ○ 技術書典7で出した「JavaScriptアルゴリズム本」の内容の話 ○ 感想・結果などの振り返り ● 今日 お話しないこと ○ JavaScript/TypeScriptなどの技術的に突っ込んだ話
技術書典7に参加しました!● 技術書典とは a. 技術同人誌の即売会! b. たくさんサークルが一斉に本を売ります c. 買いに来る人もたくさん
Nuxt.jsとFirebaseでつくるアルゴリズムミニアプリ● アルゴリズムを知りたい Webエンジニアのための入門書 ● アルゴリズムをWebアプリを 作りながら学べる! ● 冊子+DLカード ¥1,000
本書を書くきっかけ
本書を書くきっかけ● 本屋に並んでいるアルゴリズムの本 a. 言語がC++, C(たまにPython) b. 作るものが何に役立つのかわからない c. 説明がわかりづらい
本書を書くきっかけ● 本屋に並んでいるアルゴリズムの本 a. 言語がC++, C(たまにPython) b. 作るものが何に役立つのかわからない c. 説明がわかりづらい これを解決した本がほしかった
a. 言語がC++, C● C++のイメージ: なんだかとっつきづらそう... (注) C++をディスる意図は全くありません。 C++は偉大な言語です。
b. 作るものが何に役立つのかわからない● 実際のアルゴリズムの問題 i番目の配列がi日目の株の値段を表す配列があります。最大で1回のトランザクション(例: 1個の株を買い、1個の株を売る)が許されている場合、最大の利益を探すアルゴリズムを設計しなさい。株を買う前に売ることが出来ない。
b. 作るものが何に役立つのかわからない● 実際のアルゴリズムの問題 i番目の配列がi日目の株の値段を表す配列があります。最大で1回のトランザクション(例: 1個の株を買い、1個の株を売る)が許されている場合、最大の利益を探すアルゴリズムを設計しなさい。株を買う前に売ることが出来ない。こんなの実際に書くことある!!?
c. 説明がわかりづらい● アルゴリズム独特の用語がたくさんある ビッグオー表記幅/深さ 優先探索二分探索時間計算量空間計算量動的計画法ダイクストラ法空間計算量
c. 説明がわかりづらい● アルゴリズム独特の用語がたくさんある ビッグオー表記幅/深さ 優先探索二分探索時間計算量空間計算量動的計画法ダイクストラ法空間計算量概念を理解すれば実はそんなに難しくない
c. 説明がわかりづらい● 最近は「アルゴリズムをわかりやすく」という コンセプトの本が出てきている
本書はどう解決したか
本書はどう解決したか● 言語がC++, C(たまにPython) ● 作るものが何に役立つのかわからない ● 説明がわかりづらい 言語はJavaScriptWebアプリを作るなにかに例えて説明
言語はJavaScript● (おそらく)初学者が学ぶことが一番多い言語 ● ES2015以降であれば、キツくない。 ● Jestを使えばテストも簡単
Webアプリを作る● 次を組み合わせれば、Webページを作って公開できる時代! a. フロントエンドフレームワーク(React/Vue/Nuxt) b. 静的ファイルホスティング(Firebase/Netlify)
なにかに例えて説明● 難しい概念は なにかに例えて説明するとわかりやすい ● リスト探索は「数字当てゲーム」に例えて説明
絶対に売れると確信した
技術書典当日...
売上部数48/100部
割と爆死
振り返り・要因分析● 技術書典7のユーザ a. 商業誌にないような最新の技術を求めてる人が多い b. 初学者はあまり来ない ● 内容・タイトル a. タイトルから「Nuxt.jsとFirebase」の深堀り本だと思われた b. 今回はリスト探索のみのため、内容が簡単すぎた
振り返り・要因分析● 実際に聞かれたこと a. 「これって競プロで使えますか?」 => 使えません b. 「Firebaseどのくらい使ってますか?」 => Hostingのみです。すいません。 c. 「動的計画法とか今後やりますか?」 =>期待しててください
技術書典に参加した感想● 自分が書いた本をユーザが目の前で読んで買うか判断する ダイナミックで面白い ● 本が売れると嬉しいけど、売れないと苦笑いが止まらない ● 売れなくて赤字でも、悔しくて次回も出たい...! ってなる
見本誌もってきました よければ見てみてください