はじめに
こんにちは、 @IZUMIRU0313 です。
ランサーズ Advent Calendar 2019 23日目の記事です。
法人向けの社外人材活用サービス「Lancers Enterprise」のフルスタックエンジニアです。
まだよわよわなので恐縮ですが、api blueprintでAPI仕様書、CakePHPでAPI、ReactでUIを実装しています🥺
想定する読者は、サーバーサイドエンジニアでフロントエンド(React)も学習していこうとしている方です。
エンジニア経歴
学生時代は、主にRails、Swift、AWS(EC2、S3)、Heroku、WordPressを利用して、サービス開発やインターンに取り組んでいました。特に以下2つのサービスは、すべての設計および開発をやっていたため、努力は報われると今日でも思える貴重な経験になっています。
フロントは、SassとjQueryが多少書けるレベルでした😇
ランサーズには、SREとしてジョインしました。当時、ターミナルはgitと多少のコマンドを知っているレベルであり、@yakitori009さんに、何から何まで教えていただきながら取り組んでいました🙇♂️
LPICでインプットしながら取り組んでいたため、座学と実務の両輪が上手く回せていました。
- 踏み台サーバーの移行
- Let's Encryptワイルドカード証明書の導入
- AutoScaling
- AutoScaling中ではデプロイ不可
- docker-compose対応
- MySQLコンテナ、WordPressコンテナの構築
- MySQLのバージョンアップ5.6->5.7
- LambdaでGitHubとChatworkの連携
- LambdaでAthenaのload partitionを自動実行
その後、サーバーサイドエンジニアとしてCakePHPでプラットフォームの開発をすることにしました。まともにチーム開発とCakePHPを書くのは初めてだったため、@waldo0515さんや@numanomanuさん、井上さんにシステム設計からプロジェクトマネジメント、コーディングに渡るまで大変お世話になりました🙇♂️
インプットは、オブジェクト指向やドメイン駆動設計、クリーンアーキテクチャ、リーダブルコード等に努めました。
- ランサーランク制度
- アナリティクス
- 顔写真判定
- ヤフースコア
- Linkedinログイン
- 提案見積書
- 業種
- 提案追加オプション
- Freelance Basics移行
- Lancers Pro
- BigQuery/Redashで全社データ出し・モニタリング構築
JavaScriptの習得
正直まだまだ未熟であり器用貧乏になる可能性も大いにあるのですが、自分が目指したいエンジニア像のために本格的にJavaScriptに力を入れることにしました🙂
まずは、半年後業務でReactを書けるレベルになることを目標に、GASでの個人開発から始めました。SREの際にLambdaでnode.jsを書いていたこともあり、特に詰まることなく開発できました。
インプットは、改訂新版JavaScript本格入門を読んでいました。
- [GAS/Twilio]広瀬すずさんがSlackのリマインダー機能でモーニングコールしてくれるサービス
- [GAS/GoogleCloudNaturalLanguageAPI]宇垣美里さんが時には厳しく、時には優しくしてくれるアメムチbot
- IZUMIRU/kenkahadamewan
- [Nuxt/WebSpeechAPI]騒がしい居酒屋でもワンタップで店員さんを呼ぶサービス「親指ですみません」
Reactの習得
ES6のお作法や非同期通信の変遷等も一通り理解することができたので、本格的にReactの学習を始めました。
元々副業や個人開発でVueやNuxtを触る機会があったのですが、個人的にはReactの方が学習ハードルが高かった印象です。
特にJSX(TSX)、TypeScript、Redux、redux-sagaは業務で開発するまで理解できませんでした。
半年ほど、@intrudercl14さんと@takepo0928さんにキャリアやJavaScript、Reactのアドバイスをいただき、なんとか「Lancers Enterprise」の開発にジョインすることができました🙇♂️
- チュートリアル
- React.Component
- 一人React.js Advent Calendar 2014
- りあクト!
- React開発 現場の教科書
- WEB+DB PRESS Vol.112
- Atomic Design
- Atomic Design by Brad Frost
- Redux. From twitter hype to production
特にりあクト!は、対話形式で先輩エンジニアが後輩エンジニアに教えるというストーリーなので、非常に読みやすくオススメです。
またVue、React、React(Redux)で同じアプリケーションを実装することは、共通点と相違点を把握でき学習促進に繋がったのでオススメです。
Reactの学習と合わせて、APIの学習にも努めました。APIは学生時代のサービスでRailsでAPIを生やし、Swiftでキャッチするという経験等はありましたが、なんちゃってAPIレベルだったので1から学習しました。
- Web API: The Good Parts
- IZUMIRU/youtube-manager-nuxt
- IZUMIRU/youtube-manager-go
- GraphQLはRESTの置き換えではない
- 「GraphQL」徹底入門 ─ RESTとの比較、API・フロント双方の実装から学ぶ
- vvakame/graphql-with-go-book
- IZUMIRU/laravel-vue-with-graphql
- IZUMIRU/amplify-react
- よくわかるgRPC
- スターティングgRPC
- IZUMIRU/hello-grpc
展望
ReactやTypeScriptの学習は継続していますが、ReactNativeやFlutterの学習もし始めたため、@sayanetさんと@terukuraさんとともに「Lancers Enterprise」をより良くした後は、アプリの改善にコミットできたらと考えています。
またモチベーション高く学習するには、自分の性格を理解することが大事だなと非常に思いました。家だと怠惰なので仕事終わり必ずカフェに行く、まずは簡単なアプリケーションを開発した後に体系だった書籍で質を上げていく等。長くなりそうなので、個人開発のすゝめ的な記事は別途書けたら良いなと思います。
QiitaいいねやTwitterフォローは励みになります🤗