一人でインフラからフロントエンドまで開発できるフルスタックエンジニアになりたい
企業での開発はチーム戦であり、チーム全体の生産性の最大化が理想であると考えている
その際に、自分が足りないところをある程度なんでもカバーできるスキルがあれば、チーム全体の生産性を最大化する助けになると感じている
自然言語処理系のAIを用いた営業支援ツールの立ち上げ。
【概要】
① 顧客のSalesforceから営業の商談メモを取得し、自然言語処理により商談相手のニーズを抽出、分類することで、商談相手のニーズの傾向を把握したり、うまく行った過去の類似商談を探すことができる。
② 商談に利用したスライドをアップロードすることで、営業チーム内でスライドを共有できる。Uploadされたスライドはスライド単位でタグ付が行われ(例えば価格提示、サービス紹介など)、タグを用いた検索やスライド中の文字の全文検索で、自分が必要としているスライドを簡単に探すことができる。
上記の機能を持ったサービスをフルスクラッチで開発。サービスの仕様を決めるにあたって見込み顧客との打ち合わせ等も行った。
【担当業務】
要件定義: もともと①の機能のみでサービスを売ろうとしていたが、1. 分析や示唆出しでとどまらず、その活用方法まで提案してほしい 2. リテラシーが高くなくても使いこなせるシンプルさ 3. 売れない営業のサポートがしたい(営業部隊の営業力底上げがしたい) といった顧客要望を受け、②の機能の仕様策定、機能設計、データ設計を行った。(UI設計はデザイナーさん担当)
UI開発: Vue.JSを用いてサービスのダッシュボード(分析結果を見る画面)、アノテーション画面、スライド一覧画面(google driveのpreviewのような画面)を開発。
Salesforceとの連携処理設計・開発: Salesforceが提供しているAPIを用いて定期的に顧客のSalesforce上のデータを取得、DBに保存するbatch処理を開発。同時にDBのテーブル設計を行った。
自然言語処理のモデルのtuning: 最適な学習のiteration数や学習率の検証、分類精度を出すためにはどの程度の教師データが必要になるかの検証を行った。またもともと2値分類用になっていた推論用コードをマルチクラス分類ができるように拡張を行った。これによりnクラスに分類するためにn回の推論が必要だった所を、一回の推論で分類できるようになった。これにより推論速度をおおよそn分の1に削減できた。
API開発: プロトタイプからUIをupdateしていく中で、新規にフロントエンドで必要になったデータを取得するためのREST APIをDjangoで開発。
自然言語処理を用いたニュース配信サービスのモバイルアプリ版をフルスクラッチで開発、リリース
【概要】
webで提供していたニュース配信サービスのモバイルアプリ版の開発を行った。デザイナーにより実現したいUIや挙動のmockが存在したため、はじめにそれらがFlutterで達成できるかを検証、問題ないことがわかったので計画の策定、実装、テスト、リリースまで担当した。
【担当業務】
技術調査: 最初の3日程度を使って外部の知見者へのヒアリングや簡単なmock作成を実施、技術的に問題がないことを確認。
設計: 当時Flutterにおいて状態管理を行う際のベストプラクティスがなく、いくつかの候補が存在した。それらを比較検討し状態管理の構成やcomponent設計を行った。
実装: 実装量はUI構築が一番多い一方で、状態管理周りの実装が一番難しいと考えていたため、はじめにUI構築に関する技術習得を行い、それをもうひとりのメンバーに共有、UI構築と並行で状態管理周りの技術習得、実装を行った。Build周りの設定や通知周りなどnativeの知識が必要な箇所に関しては適宜経験豊富な業務委託の方にアドバイスを頂き実装した。結果として未経験メンバー中心にも関わらず3ヶ月という短期間でiOS・Androidアプリをリリースすることができた。