2019年頭より少しずつ書いていたTypeScriptの教育コンテンツをクリエイティブ・コモンズ4.0の表示 - 継承 (CC BY-SA 4.0)で公開します。といっても完成版ではなく、アーリーアクセス版のような品質であることをご了承ください。
Web版に加えてPDF版もダウンロード可能です。
そもそもこの資料を書き始めたきっかけですが、フューチャーのようなB2Bな会社であっても、最近はフロントエンドの比重が高まっているところから出発しています。僕もフューチャーに転職後からReactでがっつり1年以上の案件をやったり、半年ぐらいのAngular案件をやったりしています。会社としてはVue.jsを推しています。グループ会社の東京カレンダーはReactを使っていたりもします。要件に合わせていろいろですね。B2B2Cな案件も多いですし、お客様の求めるUX体験の良さを実現するにはフロントエンド側での頑張りが必要です。
しかし、フューチャーは基本的にサーバー側で頑張ってきた会社です。フロントエンドが好きな一部の人ががんばって回していたり、現場で教育していたりはしますが、現場主導でのゲリラ戦や、強い人がキャリア入社してくれるのを待つとかだけでは、お客様の期待に応える体制を整えるには時間がかかってしまいます。しかも、どこの会社の人も口を揃えてフロントエンド系人材はなかなか採用が難しいと言っています。そこで、いままでフロント側に関わってこなかったメンバーも、教養として(業務時間の中で)フロントの知識を付けられるような場と機会を作っていきたいですね、とCTOの斎藤洋平さん、コアテクの星さんとかと話をして、コンテンツの作成に着手し始めました。
途中、ありがたいことに、Software Designの特集x2やら情報処理学会誌の執筆依頼がきたりもしましたし、ここ最近は勉強会の登壇(とその準備の開発)が続いて少し手が止まっていました。当初は社内以外にはフューチャーのキャリア採用イベントに参加してくれた人に配る案とかもありましたが、早く公開してフィードバックをもらえたらいいなと思いましたので、公開することにしました。
フューチャーの新卒はどの職種になるにしても、基本的には全員エンジニア講習を受けており、Javaでウェブサービスは作れる程度には理解している、ただしJavaScriptはそこまででもない、という前提で書いています。JavaScriptやフロントエンド開発のエコシステムの知識を前提としないで読めて、ゼロからTypeScriptを学べるコンテンツにしたいと思っています。また、ライブラリもTypeScriptで作成し、型情報付きでデプロイする、アプリケーションもスタートからTypeScriptを書くという世界観で書いています。フューチャーの場合、自社で開発を行なったシステムを運用する案件もありますが、ゼロから作成とか、ゼロから作り直しみたいな案件も多いので、まずはそこにフォーカスしています。既存のコードに型付けをしつつ漸進的に移行というのはあまり考えていません。そういう方はazuさんの書かれた「Babelで書かれたJavaScriptライブラリをTypeScriptへ移行する方法」とか、gfxさんの書かれた「TypeScript再入門 — 「がんばらないTypeScript」で、JavaScriptを“柔らかい”静的型付き言語に」がおすすめです。
コンテンツとしては、Software Designの特集で書いた、モダンなJSの書き方(これ自体もQiitaで4000以上のいいねがついたエントリーを下地にしています)をTypeScript化しつつ、そのエントリーにはなかった制御構文の紹介とかの基礎ネタ、TypeScript固有の型の話も盛り込みました。それ以外にも、TypeScriptの環境構築のエントリーとか、Qiitaに吐き出した他のエントリーのネタ(実際は、この本に入れることを前提に下書きしたのがQiitaの記事)も入れています。もちろん、いろいろなチャットとか勉強会とかTwitterとかで僕と議論してくださった方々の知見とかも入っています。1人で作り上げたものではないです。
まだまだ、中級以降のところは手つかずですが、同じチームで現在進行中でそこそこ大規模なReact + TypeScript案件の技術リードをしている人もいたりするので、いろいろフィードバックをもらいつつ、仕事で溜まった知見とかをどんどん入れていこうと思っています。
こんな感じで、フロントエンドのニーズは高いので、そちら系のスキルをお持ちの方でうちの会社にご興味のある方はキャリア採用ページからこのあたりの職種で応募してくださると大変助かります。
フューチャーの方へ。同じプロジェクトの人以外はなかなか接点ができにくいですが、もしフロントエンドとか、JavaScriptとか、Goとかでわからないことがあったら気軽に聞いてくださいね。