概要
業務で必要になる知識と、それらを獲得できる教材などをまとめます。
(まだ完全ではありません)
教材が見つかっていないテーマもあります。
ここでいう業務とは
Webアプリの0→1開発が終わった後に、権限移譲をしながら開発を継続していくようなことをイメージしています。
広く浅く仕事をしているので、広く浅い記述になっています。なお、ここに記した内容が全ての業務上の専門的な内容を網羅しているという事ではなくて、「基礎知識としてこれをやっておけばだいたい大丈夫かな?」ぐらいの想定で書いています。
入門
N予備校のプログラミングコース
プログラミング入門Webアプリコース、大規模Webアプリなどがあります。
大規模Webアプリまではやっておくといいかなあ...基礎的な内容の教材として良いと思います。
コードの書き方の原則
定番はリーダブルコードですが、若干落としきれていない部分があるのと、個人的にはインデントや空白の調整などは多少合わない部分があります。ただ、本質的な考え方としては大事かなと思います。
コーディングする際に注意すべきこと(最低限)
リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)
セキュリティ
「体系的に学ぶ 安全なWebアプリケーションの作り方」の最新版
体系的に学ぶ 安全なWebアプリケーションの作り方 第2版 脆弱性が生まれる原理と対策の実践
実際に手を動かせるので、手を動かして確認をするのがよいですね。PHPに関する内容も多いですが、考え方としては一般の環境にあてはまります。
テスト
【この1冊でよくわかる】ソフトウェアテストの教科書―品質を決定づけるテスト工程の基本と実践
デシジョンテーブルやN項目網羅みたいな事がまとまっていて、テストの考え方をよく示した教科書だと思います。
データ構造のなにか
(List, Tuple, Set, Dictionary, ぐらいの差と計算オーダーなどに言及しているなにか...詳しいアルゴリズムまでは網羅してなくてよい)
Pythonに関して知るべきことは↓の内容とTupleぐらい
https://wiki.python.org/moin/TimeComplexity
(計算量に関する簡単な記述はN予備校にもある)
RDB/SQLのなにか
(ある程度のパフォーマンスや実行計画の見方なども含むなにか、MySQL互換で)
候補は以下ですが、他に良い本があるかも?
MySQL 即効クエリチューニング
この本の元になった記事は
https://thinkit.co.jp/article/9549
エキスパートのためのMySQL[運用+管理]トラブルシューティングガイド
パフォーマンス(フロント)
HTMLコーダー&ウェブ担当者のための Webページ高速化超入門
もっと理論的な感じの本や、少し古いまとまった本もあるのですが、とっつきやすそうかなという観点で選んでいます。
同じ著者の若干古いものが
超速! Webページ速度改善ガイド ── 使いやすさは「速さ」から始まる WEB+DB PRESS plus
別の著者で
Webフロントエンド ハイパフォーマンス チューニング
Linuxのなにか
(実際にEC2インスタンスなどを用いて、CPU使用率を100%にしたり、メモリ使用率を100%にしたりして、限界の挙動なども含めてきちんと確認するようなタイプのなにか)
候補は以下、多少オーバースペックかも
[試して理解]Linuxのしくみ ~実験と図解で学ぶOSとハードウェアの基礎知識
サーバー側のミドルウェアやパフォーマンスに関するなにか
nginxについてのなにか
多少古いけど、候補は以下です。
nginx実践入門 (WEB+DB PRESS plus)
nginx実践ガイド impress top gearシリーズ
N+1問題なども含む基本的なWebアプリケーションのサーバー側チューニングについてのなにか
候補は以下です。(あまり実装寄りでもない?)
絵で見てわかるシステムパフォーマンスの仕組み
ネットワーク、特に低レイヤーのなにか
候補は以下です。
DNSは若干オーバースペックかも
DNSがよくわかる教科書
(メールについてのなにか、SPFとかDKIMとか、本格的な実践のレベルできちんと書かれたもの)
NISTのこれは安いけど英語で長い
日本語の資料はないのかなー
Trustworthy Email
プログラミング言語
pythonのチュートリアル(公式)
https://docs.python.org/ja/3/tutorial/
JavaScriptのチュートリアル(公式みたいなもの)
https://developer.mozilla.org/ja/docs/Web/Tutorials
フレームワークやライブラリなど
vueのintroduction(公式、vueマスタリーへのリンクもある)
https://jp.vuejs.org/v2/guide/index.html
nuxtのintroduction(公式)
https://nuxtjs.org/guide/
nuxtのtutorial
https://www.storyblok.com/tp/nuxt-js-multilanguage-website-tutorial
設計に関するなにか
アーキテクチャ的な部分でのなにか
候補は以下です。
ソフトウェアシステムアーキテクチャ構築の原理 第2版 ITアーキテクトの決断を支えるアーキテクチャ思考法
システム設計の基礎から実践まで 1からはじめるITアーキテクチャー構築入門
観点としては、次のような内容が欲しいです(ただ、この記事には具体的な内容はあまり記述がありません)
システムアーキテクチャ設計で考えることを整理してみた
機能設計に関するなにか
候補は以下です。中々難しい...
ユーザー要件を正しく実装へつなぐシステム設計のセオリー
演習で身につく要件定義の実践テクニック
はじめよう!プロセス設計 ~要件定義のその前に
はじめよう! 要件定義 ~ビギナーからベテランまで
はじめよう!システム設計 ~要件定義のその後に
UI/UXに関するなにか
候補は以下です。
書評によるとUXというよりは普通のデザインの基礎っぽいけど、それはそれで重要なので
ノンデザイナーでもわかる UX+理論で作るWebデザイン
理論っぽいやつ
UXデザインの教科書
おまけ
チームや仕事のあり方について。おまけと言いつつ、本当に一番大事なのはこちらだと思います。(ただ、技術的な本旨と外れるので、詳細は割愛しますが)
1兆ドルコーチ シリコンバレーのレジェンド ビル・キャンベルの成功の教え
この本は非常に良いです。HARD THINGSとWORK RULES他のGoogleの現状との差分のアウフヘーベン(?)がここにあったのか、という事を思いました。また、心理的安全性と独りよがり - 個人の境界と組織の境界をメタ的に考えるという記事で考えていたチームの概念にも一つの答が得られたかなと思いました。
以下の本もおすすめです。(著者のベン・ホロウィッツはビル・キャンベルの薫陶を受けた一人です)
カオスエンジニアリングの周りで考えたことのまとめ
不確実性から産まれたカオスエンジニアリング - ブラック・スワンとアンチフラジャイル -
仕事のコツみたいな話
実践! タイムマネジメント研修: より少ない時間で、より高い成果を出すために 実践シリーズ
成果を生み出す組織の条件: 実践!チームマネジメント研修② 人を育て、人を活かす 実践シリーズ
むすび
良い教材・本があればぜひご紹介ください。