社会の負に対して課題解決の一助になったり影響を与えられるようなプロダクトに開発者として関わりたい
自分が関わったアプリケーションを通じて多くの非効率な作業やプロセスが改善したり、それを使った人々にポジティブな影響を与えられるようなことがあったらとても嬉しいしモチベーションになりそうだな、と思ったからです。
これまでのサーバーサイドの経験を活かしたDBやAPIの設計などから関われるフロントエンドに強みを持ったエンジニアとしてアプリケーション開発に携わりたい
サービスや組織の成長に応じてアプリケーションで考慮すべきことが増え、コードのコミットから本番稼働までの所要時間(リードタイム)が遅くなることはどの現場にも起こりうるものだと考えています。
私自身がリードタイムがボトルネックになっている現場に遭遇して以降、技術的なアプローチでプロセスの改善を行うことによる価値提供の機会を最大化する手法や開発者体験の向上に強い関心を抱いています。
もちろんそのためにもアプリケーションをより詳しく知る必要があるため開発を主軸としつつそういった業務プロセスの改善などにも取り組んで関わっていけるポジションがあればそういうロールでも働いてみたいと考えています。
Custemer Reliability Engineer といったロールやEngineering Manager を経験することにも関心があります
当時、社内ツールの運用開発をしていたのですが、レガシーと呼ばれるような構成でした。
いくつか掘り下げてみると以下のような課題がありました
要約すると、 「開発がしづらいことで、ビジネスの実現に時間がかかりやすい」 環境になっていました。
サービスの成長と共にここまで来たけどそろそろ変化が必要だ、と考えこれらを解決するためにサービス事業部全体に向けて3つに分けたロードマップを作って提案し以下のようなことを行いました。
上記の課題感をスライドに落としビジネスサイドのメンバーに説明したところ合意が取れたため、現在はロードマップの実施にむけリードして取り組んでいます。
新しい技術への抵抗をなくしてもらうためのケアを意識的に行った
TypeScriptの導入に際して、敷居が高いと心配しているメンバーに対してのケアを意識的に行いました。具体的には自分で出したPull Request に対してセルフレビュー的になぜこのような記述をしたのかといったコメントを付けたり、画面を共有しながら型の付け方を説明したりとチームメンバーへの技術力の底上げやTypeScriptへの理解度の向上にも寄与していると自負しています。
開発基盤を作る上でのCI / CD を誰でもリリースができるよう自動化し、手順がシンプルになるように工夫をしました
具体的には、release branch にマージするだけで自動で tag が push されCI から deploy できる仕組みづくりを開発基盤を作る初期から意識してやっておりました。これを行ったことにより、新たに参加したメンバーがすぐにプロジェクトに関わって2日目でPull Requestを送ったりリリース作業に時間を取られることもなくチームとしてより開発業務に集中できるようになりました。
既存の業務システムがレガシーだったため、サーバーサイドも移行しつつフロントエンドも既存の業務フローに合わせた画面やシステム設計をリードして取り組みました。
back - end | front - end | |
---|---|---|
As-is | Perl | jQuery |
To-be | Java (SpringBoot) | Vue.js |
具体的にやったことは以下です。
TypeScript, Go を用いたBackends For Frontends構成でのAPI開発
TypeScriptはExpress、GoではEchoというフレームワークを用いてAPIの開発に従事。APIに必要なDBの設計などから一貫して行いました。
Nuxt.jsを用いたSPA開発
Nuxt.jsはアルファリリースの段階から採用し、アップデートを継続して開発に従事。Vue.jsを用いたデータのバインディングやコンポーネントの設計及び実装を担当。
共通化して切り出せる UI コンポーネントの作成やaxiosを用いて外部APIを使用した開発、jestを用いたテストを行っておりました。
TSLintからESLintへの移行
TSLint というのはTypeScriptにおけるコードが任意のコーディング規約通りに書かれているかどうかをチェックする静的コード解析ツールですが、実態は型を持ったJavaScriptなので、ESLintと機能的にかぶることが多くルールの管理が大変だと言われていました。そんな中、2019年2月にTSLintのチームがESLintのTypeScript対応の方針を出したことで自らが提案し合意を得てから移行に踏み切りました。具体的には、現時点で利用しているルールを精査し各Lintで提供しているRuleを対応表を元に揃えつつ整備していくということをやりました。
Prettierの導入
Prettierとは、インデントや改行箇所といったところにまで介入してコードを自動整形してくれるツールです。 導入したことでレビュー時の細かい指摘などをすることなく誰が書いても同じ結果になるなどコーディングルールが仕組み化できました。
決済に関する機能をDBとアプリの設計からコーディング、テスト、リリースまでリードしてリリースを行いました
優待機能や無料お試し期間の提供アドオン機能、売上の集計に必要なデータなどといった課金が絡む機能やビジネス的に必要な要素の機能をリードして取り組みました。例えば、請求金額を表示したいという要件から逆算してどんな情報を保持しておく必要があるのかを洗い出し、APIのレスポンスやDBのテーブル設計、集計処理の設計を行ってきました。また、バッチ処理などでも用いる月ごとの利用料の算出処理や、ページング処理の提案と実装を行い共通化して利用できるようにしました。
外部登壇や初心者向けのハンズオン講師を行う
DevelopersSummit福岡の登壇や、Ruby on Railsを使ってAlexaスキルを開発するハンズオンの講師などを行いました。https://note.mu/mclolipopjp/n/nb3d50eabbd21
このプロジェクト詳細は公開されていません
ジュニアと呼ばれるレベル感のエンジニアを数名ほどピープルマネジメントという形で関わりました
気持ちよく働いてもらったりモチベーションが低くなる事象に対して可能な範囲で巻き取ったり個々人のパフォーマンスを出しやすい環境にする
1on1というとかしこまった感じに捉えられそうだったので「おしゃべり」と称して週1回30分のイベントを設定しフランクな実施していました。
また、上記のイベントでは日々以下のようなことを意識して取り組んでいました。