6日目 役に立った書籍 編「まとまった学習に本は強い」 2017年圧倒的成長振り返り一人アドベントカレンダー


この記事は ” 2017年圧倒的成長振り返り一人アドベントカレンダー ” の 6日目です

https://adventar.org/calendars/2747

アドベントカレンダーに乗り遅れ、参加できそうなものがなかったので行われる、孤独な一人アドベントカレンダー。6日目の今日は、役に立った書籍 編です。

まとまった学習に本は強い

刻一刻とバージョンアップしていくウェブ開発の周辺環境においては、情報が執筆時に固定されてしまう紙もしくは電子書籍は、不利な部分があります。しかしそれでも、まとまった学習が必要な場合に、つまり初学者にとってはやはり書籍は強いなと思います。フロントエンドの開発をまとめて学習する、サーバーサイドプログラミングを始める、こういうときに書籍が役立ちます。ある程度基礎をつけた後は、公式のドキュメントや各種記事をおっていけばいいということになります。

改訂新版JavaScript本格入門 ~モダンスタイルによる基礎から現場での応用まで

山田 祥寛
固定リンク: http://amzn.asia/hwCkllD

まだ自分が英語の記事を読む実力がなかったときに、一番読んでいたのはこの本です。原理的な部分がわかるので、理解が深まります。やっとどの項目を読んでも、だいたい知っているな、というところまできました。

最新バージョンは、ES2015 に対応し、promise,  async, map といった新しいメソッドの解説が追加されました。

オライリー関係の JavaScript の本よりも簡単だと思うので、とりあえず書けるけど、新しい記法がわからない、非同期処理とか言われてもよくわからない、というレベル感の方にオススメです。

Clean Coder プロフェッショナルプログラマへの道

Robert C. Martin
固定リンク: http://amzn.asia/2uhJs1I

リーダブルコード、情熱プログラマーといった、特定の言語に限らないエンジニアとしてのソフトスキルについての本です。

この手の本として一番近いのは情熱プログラマーだと思うのですが、私の個人的な趣味として、こちらのロバートさんの人柄に惹かれます。

過去に書いた自分の記事からの引用ですが、以下のような点が役に経ちました。コードの柔軟性に関する議論です。

  1. 常に細かいコードへの変更を加えることで、「柔軟性」を与えることができる。
  2. そして変更を加えるためには、コードを理解している、もしくはしなくてはいけないから、それも結果的に、コードを確実に動かすことにつながる。
  3. 例えば、JSならグローバルに配置されているファンクションやヴァリアブルを、クラスに書き換える。もしくは、純粋関数で書き直してみる。
  4. 他にも、別の機能が追加された時にも、そのコンポーネントが機能するのか、試してみる。もしうまくいかないとすれば、柔軟性が低いコードになっているので、変更する。
  5. 一般的には、洗練された、もしくはベストプラクティスに基づいたコードを書く、という方針がよく取られるのではないかと思う。しかし、そうではなくて、常にコードを動かせるような柔軟性のあるコードを書く、もしくはそのために実際にコードを変更する、という発想は、私にとっては新たな視点であり、また実務的なアドバイスであった。動くコードをかききって終わり、ではなく、それを常に動かしていく。

雑記 Clean Coder 等

このコードを変化させることによって柔軟性を担保するという考え方は、単にコードにとどまらず、自分のスキルアップ、キャリアについても適応できるのではないかと思っています。つまり、何か単一の領域、例えばフロントだとかバックエンドだとか IoT だとか、にこだわることなく、むしろエンジニアリングという視点で柔軟に、領域を横断して、同じことを実行してみることが有効なのではないかなと思います。

例えば、SPA は基本的に React のようなフロントで動くコードを元に構築されていますが、これはもちろんサーバーサイドでレンダリングさせることもできますし、同じようなことをネイティブでやることもできます。結局のところ、データを展開してユーザーに見える形にする、という意味では、フロントもサーバーサイドもネイティブも同じです。

ここでどれが最適解なのか、ということを考えずに (もちろん最適解をみつけるのがエンジニアの仕事ではあるのはもちろんですが、仕事とは関係なしに) 柔軟に様々な場所で同じアプリケーションを動かしてみる、というのが成長につながるのではないかなと思います。

形を変えられる、ということ自体がある種の技術的な修行になります。

Node.js超入門

掌田津耶乃
固定リンク: http://amzn.asia/8xCxI9t

この本は、フロントエンドから仕事を初めて、バックエンドも勉強したいという人に(つまり自分です)オススメの本です。

そもそもなんでバックエンドが必要なのか、ということからかなり詳しく説明してくれています。その上、プログラミングをしたことがある人であれば知っているようなことに関してはそこまでページが割かれていないので、自分のような実力感の人に丁度良いと思います。(反対に完全にプログラミングをやったことのない方は、もっと初学者向けのコンテンツの方が望ましいかもしれない)

また、この本は2017年後半にでいていますので、市場の Node.js のどの本よりも情報が新しいというのもポイントです。バージョンの違いによって生じるエラーは、初学者はなかなか一人でクリアーできないものです。新しければ新しいほどいいです。

JavaScript関数型プログラミング 複雑性を抑える発想と実践法を学ぶ impress top gearシリーズ

LuisAtencio
固定リンク: http://amzn.asia/7YmhS4L

プログラミングを勉強するときにたどる道筋は次のようなものだと思います。

  1. 変数に値を代入してみる。
  2. 条件分岐を if などを使って行う。
  3. 関数を使って、処理を抽象化する。
  4. オブジェクト指向プログラミングで、関数と変数をカプセル化する。
  5. 各種フレームワーク、ライブラリを活用する。

つまりプログラミングのパラダイムを、順番におっていくことになるわけですが、その次に今出て生きているのが関数型プログラミングです。もちろんパラダイムといっても、ある手法が完全になくなって新しい手法が支配する、というようなことにはプログラミングの世界ではなっていないので、関数型プログラミングも既存の手法と並存していくことになると思います。

具体的には、例えばオブジェクト指向プログラミングとの並存という意味では、値を格納する装置としてのオブジェクトは今後も有効だとされています。さらにメソッドに関しても、例えばライブラリが提供する関数のように、あるオブジェクトに紐づく形でメソッドが提供されるというのも有効だろうと。

問題なのは、インスタンスが持つ自分自身の値を変更してしまうメソッドです。JavaScript でいえば、this で自分自身のプロパティを参照するメソッドです。これはメソッドに副作用をもたらすので、問題です。

純粋な関数型だけでプログラミングすることはできないので、副作用を起こす部分と、おこさない部分を明確に切り分けることが重要だと提唱しています。副作用が起きることがわかっている部分を、別に切り離して、そこだけチェックすると。

OOP がオワコンだ、なんて言い出す人がいますが、常にパラダイムは並行して運用されるのであって、何かが出てきたら何かがなくなるなんていうことはないですよね。(相対性理論が出てきたって、依然として古典力学は、投げたボールがどこに落ちるかを予測するために使われています。)

JavaScript Interview Questions You’ll Most Likely Be Asked (Job Interview Questions Book 25) (English Edition)

Vibrant Publishers
固定リンク: http://amzn.asia/9NEa0Ys

ジョブインタビュー、つまり就職活動時の面接で問われる質問の回答例文集です。

せっかく現代社会に生まれたので、2年以内にシリコンバレーで仕事をしようと思って、買いました。

JS 内でページを遷移させるにはどうしますか?またその履歴をどう処理しますか?とか、JavaScript の特徴は?JAVA との違いは?といった、なかなか役に立つ質問が多く、簡潔に英語で答えられるようになるためには有効な一冊です。ただ、2017年に出たにしては、情報が古い部分もあります。ちょっとこれはやり方として古すぎるのでは…という部分は適宜調べてバージョンアップしましょう。

巷の噂では、きっちり実務経験があって、モダンな開発をキャッチアップして、英語ができれば、シリコンバーで働くのも割とできるらしい、とのことなので、チャレンジしていきたいとおもいます。

まずはこの一冊から 意味がわかる線形代数 (BERET SCIENCE)

石井俊全
固定リンク: http://amzn.asia/2kCAIWO

最近機械学習もちまちま勉強しているのですが、その際にどうしても数学の知識が必要になります。だいたい理工系の大学一年生がやるような内容のようですが、私は史学が専門なので、線形代数といわれても、小説家の大岡昇平が趣味でやっていたな、という知識しかなく、なんら計算処理できず、困っておりました。

そこでこの一冊です。結構わかりやすいです。ただ扱っている内容が内容なので、誰でもすごいわかる、ということはないかなと思います。根性入れて読めば、まあわかる、というレベル感の本です。

これなら分かる最適化数学―基礎原理から計算手法まで

金谷 健一
固定リンク: http://amzn.asia/gdu24e7

機械学習においては、線形代数の知識の他にも、いわゆる微分積分の知識が必要になってきます。なぜなら機械学習というのは平たく言えば、ある統計データを近似するに最適な関数を特定する = 最適化 をコンピューターの力技で実現する手法だからです。結局でてくる概念はほとんど数学処理なので、このあたりの知識がないと、いまいちピンとこない。ということでこの一冊です。

他にもオススメの本があった気がするのですが、思い出せないのでまた今度!

この記事は ” 2017年圧倒的成長振り返り一人アドベントカレンダー ” の 6日目です

https://adventar.org/calendars/2747

アドベントカレンダーに乗り遅れ、参加できそうなものがなかったので行われる、孤独な一人アドベントカレンダー。6日目の今日は、役に立った書籍 編です。

 

Leave a Reply

Your email address will not be published. Required fields are marked *