すでにサービスインしている、お客様の各種サービス間でデータ連携が十分になされていないという課題があり、その問題解決および、サービス全体の社会的価値向上のためのプロジェクト。目的に照らした具体的な機能提案やOSSを利用したプロトタイプの作成、およびプロジェクトリーダーとしてチームの進捗管理を担当した。
Golang, Docker, Git, PostgreSQL, jQuery, JavaScript
本プロジェクトに配属されてから、Go言語のコードを初めて読むことになったが、持ち前の学習力・調査力を活かし、利用するOSSが現状どのような機能を持っているか把握し、懸念点等とも合わせて報告した。また、お客様と頻繁にコミュニケーションをとることで認識齟齬による手戻りを最小限にした結果、お客様がプロトタイプとして求める機能を予定より2週間ほど早く実装できた。2021年12月~は、関連プロジェクトの状況の変化もあり、プロジェクトリーダーとしてチームの進捗管理も兼務。
既に運用が始まっている、学術研究データ管理のためのWebサービスで、顧客満足度を向上させるための機能拡充を目的としたプロジェクト。サービスのソースコードとしてはOSSをベースにし、独自の諸機能を実装。開発体制としてはGM、PLと、私を含めた開発メンバ2人の、計4人による小規模なプロジェクトだった。
Python, Django, Git, Docker, Docker Compose, TypeScript
Python、Docker、Git、TypeScriptについては業務外で学習した経験があったため、配属初日からプロジェクト状況を伺いつつ実装に着手した。経験豊富な先輩との開発ということもあり、私1人では解決できないエラーは質問させていただきながら、コーティングを進めた。当初はDjangoを用いたバックエンドのみの担当という予定だったが、実装スピードの早さを評価いただき、配属3か月目にはEmber.js+TypeScriptを用いたフロントエンドの実装にも、一部関わらせていただいた。
22年4月より、採用DXサービス「harutaka」開発チームにジョイン。
当時のリードエンジニアの下、Google Cloudで構築したアプリケーションインフラの管理、運用に従事。
- 実施した施策
- コスト削減の観点から、時間帯ごとの利用実態に沿ってGKEのHPA幅を拡大・縮小させる
- アプリケーションへの新規機能の実装に伴う、インフラリソースの新規定義(GKE, Cloud Build)
他
- 実施した施策
- 実施した面接の文字起こしに対し自動的にカテゴリ分類する機能(「構造化議事録」機能)
- フロントエンドにおける初期実装、およびQA工程におけるバグ対応に従事。(React w/ Typescript)
- harutakaと外部ライブツールとの連携機能の開発
- アプリケーションにおける連携機能設計から初期実装までを担当。(Rails)
- またアプリケーションに既存の解析機能の、連携に伴うロジック改修を実施。(Golang, Python)
- 「構造化議事録」機能の拡張
(リアルタイムに起こした文字起こしだけでなく、過去の録画に対して後から起こした文字起こしにも適用する)- PdMとの仕様すり合わせ、およびそれに沿った実装を担当。(Rails)
- 実施した面接の文字起こしに対し自動的にカテゴリ分類する機能(「構造化議事録」機能)
- 実施した施策
- CIツールをCircleCIからGitHub Actionsへ切替
- BigQueryを利用した一部データのアーカイブ
- コスト削減のためのインフラ施策
- 複数の開発環境のCloudSQLインスタンスを1つに集約(10万円程度の削減に成功)
- 実施した施策
- frontendリポジトリのライブラリアップデート
- React, TypeScript etc..
- 主要ライブラリを一挙にアップデートした結果CIで1000件ほどエラーになり修正に苦労した
- 後日、参画したfrontendエンジニアがrenovateを入れてライブラリ更新について自動でウォッチする体制を整えてくれた
- 導入しているサーバ監視ツールmackerelの監視ルールについてチーム内で不明点が上がったため調査
- 特定の監視ルールがブラウザ上のmackerelコンソールから確認できないというもの
- 該当リポジトリ内で設定を定義しているconfファイルを確認し、調査終了
- frontendリポジトリのCI (Github Actions)でlintやtestが想定外にスキップされる問題が発覚したため、その調査と対応を実施
- 主要リポジトリのCI実施時間の短縮施策を推進
- それぞれ20分程度かかっていたものを、jobの分割と並列化により60%程度短縮
- サービスが利用するドメインのSSLサーバ証明書を更新
- 後日、SSL/TLSに関する知見をまとめてチームの勉強会にて共有
- BCP試験の推進
- 天災等でサービス提供が困難になった際、可及的速やかに提供再開する能力を有していることを証明する試験の実施。社内セキュリティ部門のISMS施策と協調して進めたもの
- terraformを用いてサービス提供に必要なインフラリソースを定義し、
terraform apply
で作成した新環境で従来同様のサービス提供ができることを確認
- 脆弱性診断の推進
- サービスの脆弱性検知・対応のための脆弱性診断作業を実施。
- 社内外でコミュニケーションを取りつつ、有料診断ツール利用のための契約締結・診断実施・結果を受けての実装修正までをワンストップで担当
- frontendリポジトリのライブラリアップデート
Webメディア「松岡正剛の千夜千冊」編集チームからの依頼で、彼らが使用する図版収集・構成ツールを2人体制で開発。
- 実施した施策
- 利用技術の選定
- フロントエンドは開発体験・後々のコード保守を鑑みてビルドツールにVite, 言語としてTypescriptを採用。フレームワークは実務で経験があったReactを選択。また、リポジトリ内でのコーディングスタイルをなるべく統一するためeslint, prettierを導入し、Github Actionsと組み合わせてCIが回せるように構築した。
- また主に共同開発者が作業するバックエンド側のインターフェース整合性を保つため、スキーマ駆動開発を提案・導入。OpenAPIを利用した「apidoc」を構築し、BE/FE間のAPI定義のずれが起こりにくくした。
- フロントエンド 初期実装
- react-router-domを利用したページ遷移の実装
- ツール上で作成した編集要素をドラッグ&ドロップで並びかえる機能の実装
- Firebaseを用いた簡単なログイン機能の実装
- ESLint, Prettierを利用したコードチェック
- React Testing Libraryを利用したテストの実装
- Playwrightを利用したE2Eテストの実施
- GitHub Actionsを利用したコードチェック・テスト実施の自動化
- 利用技術の選定