【ゴールデンウィーク営業のお知らせ】
2025年4月29日(火)~2025年5月6日(火)の期間を休業とさせていただきます。
※4月30日(水)、5月1日(木)、2日(金)は通常営業いたします。
※休業期間中にいただいた審査申請については、結果をお返しするために数営業日いただくことをご了承ください。
1. ディレクター、CxOレベルでエンジニア組織ビルディング、 2. スマホ(エッジ)サイドでのAI学習、推論の実用化 3. ARによるリアルデータ収集
エンジニア組織のディレクターやCxOレベルで組織設計やチームビルディングに携わり、企画、開発、運用ともに強いテックカンパニーを築き上げる仕事をしたいと考えています。エンジニアの価値やソフトウェアの力が見直される一方で、エンジニア組織自体の変革が必要だと考えており、メンバーの多様性による柔軟性とロバスト性を持った組織作りを目指していきたいです。エンジニア採用やピープルマネジメント、テックリードレベルの仕事を経験してきているので、次のキャリアでは組織的にその上位に挑戦したいと考えています。
これまでAI(ML、DL)は学習・推論ともにクラウド上で実行される構成を取っていましたが、徐々にスマホやエッジ側でAI推論が導入され、UI/UXが改善されていっている傾向にあります。レイテンシとAIの効果を鑑みると、スマホサイドでのAI推論が広まるのは必然になっていくと予想されます。更にはプライバシーデータをAIで活用するため、スマホサイドでの学習も広まっていくと予想されます。スマホサイドでのAI活用によってアプリユーザのUI/UXを改善し、AIの実用化を促進したいと考えています。特にARでAIを活用するためには、スマホやデバイスでリアルタイムに推論する必要があります。
ARによってアプリやレジャーの質が変わると予想されますが、さらなるARの利点は「実世界のデータ」を収集するインターフェイスにすることができることです。TikTokやマインクラフトARはそこに先行していますが、データ量と活用方法がビジネスを左右する現代において、実世界のデータを得るインターフェイスをARプロダクトと組み合わせて開発していきたいと考えています。
自動運転のためのデータ収集基盤およびデータ検索基盤の企画、開発、運用、データ分析を担当し、1TB/日で増える非構造化データをデータパイプラインを通して分析、意味付けし、ストレージ、データベースに保存してユーザが検索、取得可能にしています。データパイプラインとバックエンドにはPythonとFastAPIを採用し、画像やポイントクラウド等のデータ整形や分析に一部ディープラーニングやOpenCVによる画像処理を使用しています。フロントエンドにはHTML+TypeScriptを使用しています。インフラでは大規模データをさばくためのローカルキャッシュやRedis Cacheの活用、負荷と時間帯を組み合わせたインフラのオートスケール、定期的な再起動による耐障害性の担保等を行っています。
クラウドサービスをユーザーに拡販するにあたり、POCとして要件を満たすアーキテクチャ設計、技術検証を行いました。担当したPOCの件数は30程度になります。
大きな流れとして、ユーザー要件をヒアリングし、クラウドで実現するためのアーキテクチャを描き、技術的に立証した上で、クラウドの予想費用を算出するというものです。
具体例として、ある輸送機メーカーの販社管理システムを担当した際は、全国の販社にリアルタイムに製品情報を提示するためのパフォーマンス設計が必要でした。そのためにデモシステムを構築し、パフォーマンスチューニングを行いました。特にサーバ台数とパフォーマンスの関係を計測し、顧客の求める性能を実現する設計を行うことで、実現性を評価されて受注しました。クラウドインフラで年間数千万円となる売り上げとなります。
一部上場企業でクラウドビジネスの立ち上げを行いました。Windowsを基盤としたIaaSであり、データセンターは日本国内です。私の担当はサービス全体の要件定義支援と、バックエンド機能の開発です。担当したバックエンド機能にはユーザー管理、課金システム、基盤監視通報があります。
ユーザー管理システム開発ではプロマネの立場で6人のチームをリードしました。システムにはSalesforce.comを利用し、社内向けユーザー管理システムとユーザー向け契約情報照会システムを開発しました。
課金システムではVisual StudioでC#を用いてコーディングしました。csvで取得する利用ログをMS SQL Serverに取り込んで計算し、ユーザー向け契約情報照会システムに表示します。
基盤監視通報システムはZabbixとbashで開発しました。基盤障害時に運用チームにメール通報するものでしたが、のちにユーザー向けの通報も行うようになりました。
すべて含めて開発期間は一年程度でしたが、リリース以降は運用、エンハンス、セールス支援に従事しました。
データ分析基盤のパフォーマンスチューニングを行いました。対象のデータ分析基盤はRHEL6を使用し、サーバ10台で構成されていました。5台がhadoop、5台がインメモリのデータ分析処理基盤です。
顧客はデータ分析基盤でレポートを生成し、ウェブ画面に表示する社内システムを使用していましたが、パフォーマンス遅延を訴えていました。顧客オンサイトで調査した結果、アクセス人数は数百人を超え、時間帯によってアクセス数が上下するものでしたが、遅延はアクセス数と必ずしも比例していないことがわかりました。
本番環境でレポート表示の所要時間を計測、調査したところ、遅延は一部のレポートで頻繁することがわかりました。dstatによりリソース使用を計測した結果、cpuとメモリが推測値を超えてほぼ使い切られていることがわかりました。RHEL6のカーネルを調査して、transparent huge pages(thp)が有効になっており、メモリのデフラグにcpuが浪費され、パフォーマンス劣化を招いていることがわかりました。thpはhadoopやデータベースでは知られたパフォーマンス劣化原因なのですが、使用していたデータ分析基盤では初の事例でした。thpを無効化することでcpu、メモリの使用量を抑えることに成功しました。
加えて、別の観点では出力しているレポートに問題がありました。遅延の発生しているレポートでは中間が大量に生成されていることがわかりました。そこでレポートに必要な中間テーブルをバッチで生成するプログラムを用意し、常にそのテーブルを使用するよう、レポートのロジックを変更しました。
これらの対処によりレポート表示遅延を回避することができました。
ビジネスデータ分析にディープラーニングを適用し、従来より良い予測モデルを作成しました。
顧客はあるb2cビジネスを行っている企業で、エンドユーザーの傾向分析が要件でした。従来から実績のある統計ソフトウェアを用いていたのですが、トップダウンでディープラーニングを導入することになりました。言語はpythonで、ディープラーニングのフレームワークとしてkeras、バックエンドにtensorflowを利用し、開発環境はjupyter notebookを使いました。
プログラミング担当は私一人で、加えてプロマネと顧客のカウンターが付きました。
データを収集し空値やエラー値のクレンジング後、数値の標準化を行い、ニューラルネットワークモデルを形成しました。GridSearchCVで最適なパラメータの探索後、微調整を行ってaccuracy、loss、roc aucのより良いモデルを選択して実運用に適用しました。
従来のモデルよりaccuracyで10%、lossで0.5、roc aucで0.1の改善を実現しました。
海外のチームと連携し、AWS上でデータ分析ソフトウェアの構築を自動化するプログラムをcloud formationとansibleで実装しました。
チームメンバーは10名で、各人は欧米諸国からリモートで参加しました。コミュニケーションはすべて英語です。
データ分析ソフトウェアはhadoopと分析基盤からなり、単体構成と複数台構成が可能です。OSはRHELになります。
データ分析ソフトウェアの構築は、通常であればマニュアルでインストールするのですが、インストール完了に一週間程度を要するものでした。一週間の作業中にミスが発生して構築期間延長、品質低下の原因となっていたこともあり、クラウド上で手軽に正確に構築するプログラムを作成しました。
サーバはec2を10台、ネットワークはvpcを使い、awsの構築はcloud formationで自動化しました。ここでは100行程度のjsonを書いています。cloud formationで構築されたサーバにansibleとplaybookでデータ分析ソフトウェアをインストールする流れになります。playbookは30ファイルのymlで構成し、インストールの各フェーズ(osの設定、hadoopのインストール、各サーバへのデータ分析ソフトウェアインストール、構成等々)でファイルを分けて作りました。
この取り組みにより、データ分析ソフトウェアの構築が一週間から1日に短縮されました。
Javaを用いたRest apiアプリケーションの開発プロジェクトでプロダクトオーナーとして顧客の要件調整を行いました。開発はスクラムで10人のチームで行い、プロダクトオーナーは私一人、スクラムマスターが一人、残りが開発という編成です。
プロジェクトでは顧客がウェブ販売を行うためのシステムを開発しました。rest apiアプリケーションはウェブサイトと基幹システムを繋ぐ目的で、合計20個のアプリケーションを開発しました。
それぞれの仕様を定義するため、私は顧客のストックホルダーと日々対面し、ビジネス要件を技術要件に翻訳する仕事を行いました。ストックホルダーが多数いたため、各ストックホルダー間の意見を調整しました。隔週で開発した機能のお披露目を行うことでフィードバックを得て修正するサイクルを回しました。
結果、従来であれば一年かかるウェブ販売システムの開発を3ヶ月でリリースすることに成功しました。
システム、エンジニア、コミュニティのマネジメントを行っています。
・システム:MLシステムが安定して外部から接続可能かつ推論結果に異常がない状態を保ちます。
・エンジニア:エンジニアが開発および運用に集中し、現状より成長できる状態を維持します。
・コミュニティ:MLOpsコミュニティの企画運営を行い、国内の機械学習実用化を促進しています。
・システム:運用手順のマニュアル化。ジュニア育成には、ジュニアをシャドー運用させてトラブルシューティング手順をシニアメンバーと実地で比較する。
・エンジニア:開発は任せつつ、レビュー(とくに非機能要件)で方向付けや修正を行う。人事評価およびフィードバックを通してメンバーの成長を促しつつ、長期的な人材戦略から採用活動や対外PRに貢献する。
・コミュニティ:各種イベントの企画、登壇者調整、イベント中の司会および盛り上げを行っています。MLOpsコミュニティ以外でも自社PRのためのミートアップ開催や、外部ミートアップでの登壇も積極的に実行。
・スマホの低レイヤー
・UI/UXデザイン
姿勢を変えながら作業ができる椅子や机で仕事をすること