こんにちは。インドのバンガロールに赴任し、AIソリューション開発をしているAIエンジニアのヒロシです。赴任生活も7年目になりました。最近のAI技術の発展スピードは目まぐるしく7年前と比べてソリューションの内容も使う技術も大きく変化したと感じる今日この頃です。![]()
私は現在、「製造販売承認書チェッカー」というマクニカ独自プロダクトのコア機能を、AI技術を使って開発しています。そんな私のとある一日をご紹介します。
※製造販売承認書とは、医薬品などを日本国内で販売するために、その製品が品質、有効性、安全性の基準を満たしていることを国から許可されたことを示す文書で、「製造販売承認書チェッカー」はその承認文書と実際の製造手順書間に齟齬が無いかをチェックするためのSaaSアプリケーションです。
AM 8:00 - 9:00 通勤
バンガロールは電車の整備がまだまだ追いついておらず、私が住んでいるアパートからオフィスまで約10Kmの道のりをタクシーで1時間程度かけて移動します。ここは気候がよく一年を通して過ごしやすいためか、多くの人や企業が集中する傾向にあり、近年人口が急増しています。そのため、インフラ整備が人口増加に追い付いておらず、渋滞が常態化しています。
AM9:00 - AM11:00 開発
仕掛中の次のリリースに向けての開発を進めます。開発には大きく分けて次のステップがあります。
1.機能要件定義
2.アルゴリズムなど実装方法検討
3.コーディング
4.テスト
機能要件定義は、顧客に近いプロジェクトマネージャ、セールスやエンジニアの方々からのフィードバックを元に、どのような機能にしていくかを検討するフェーズで、チームで決定していく事が多いステップです。どのような機能を実装するか決めたら、それをどのように具体化し実装するかを検討します。ここからが私の主たる役割でもあり、頭の使いどころです。
例えば、「製造販売承認書」の表から、人間が読むような自然な単位でフレーズを抽出する、という要件があるとします。
↑製造販売承認書の表サンプル
製造販売承認書の表は、この図のような形式で記載されており、人が読むと「配合目的」は「000(有効成分)」、「規格」は「22(生物基準)」、「成分コード」は「999999」などと自然に解釈できますが、機械でこの部分からテキスト抽出すると、次のようになります。
配合目的
規格
成分コード
000(有効成分)
22(生物基準)
999999
このテキストから、「配合目的」は「000(有効成分)」という組み合わせにするというのが要件です。この要件を実現するためのアルゴリズムを検討するのが次のステップです。抽出ペアのルールを書いてしまうと、そのルールでは対応できない異なる形式の表からの抽出が困難になりますので、いろいろな表でも対応できるようなアルゴリズムにする必要があります。
要件定義とアルゴリズム検討は既に終わっているので、今日からコーディングに取り掛かります。コーディングのスタイルはここ数ヶ月で大きく変わりました。以前は、全体構成を考え、必要なクラスや関数を一つ一つ手作りしていましたが、もうそのような時代は終わりに近づいていると感じます。今は自然文でAIに実装仕様を伝えると、見事なコードが高速に出来上がります。生産性が大きく向上したと感じています。ただし、AIが生成するコードは間違いやこちらの意図と違うコードを生成する場合があるので、その点は注意が必要です。今後はこのようなAIが生成したコードの有効性を判断する能力が問われてくると思います。
この時間は、検討したアルゴリズムを具体的にコードにするために必要な実装仕様を頭の中で再度整理し、AIに指示をするためのテキスト作成に着手します。
AM11:00 - AM11:15 開発者ミーティング(毎日)
赴任先のインド人開発者も交えて、昨日の実施事項、本日の実施予定などを共有します。ここで、各々の開発者が現在どのような事に取り組んで、どのような課題に直面しているかを把握します。そして、全体の中での現在の私の立ち位置を認識します。
AM11:15 - AM11:30 PM プロジェクトマネジメントミーティング(週2回)
マクニカ側のプロジェクトマネージャと赴任先のインド人プロジェクトマネージャや開発者を交えて、運用上の課題や今後のスケジュールなど全般的な事項について共有、協議します。私の役割からは外れる部分でもありますが、プロジェクト全体の方向性は把握しておく必要があります。
AM11:30 - PM1:30 プロダクトミーティング(週1回)
日本にいるプロジェクトメンバーとのミーティングです。私はTeamsで繋いで参加します。プロマネ、技術、営業などプロジェクトメンバー全員が参加して、直近の活動についての報告や課題についての議論を行います。
PM1:30 - PM2:30 昼食
ミーティング終了後ランチタイムです。インドのランチタイムは日本より1時間ほど遅い印象があります。オフィスのカフェテリアで昼食を取ります。日本食は無く、インド食のみです。インド食はスパイスの効いたものが多いですが、私はさいわいスパイスへの耐性があるようで、比較的辛い食べ物も平気です。このカフェテリアで私が好きなのは Hyderabad Biriyani です。インドにHyderabad という都市があり、その地域風にアレンジしたBiriyani です。Hyderabadは辛い食べ物が多いことで有名です。
写真は実際のHyderabad Biriyaniです。何種類ものスパイスが効いており、私は美味しいと感じます(感じ方は人それぞれですが、苦手な日本人も多いです)。
PM2:30 - PM6:30 開発とテスト
引き続きコーディングを行います。コーディングには、今年大きく進化したコーディングエージェントを使用します。コーディングエージェントを使うにあたり大切なのは、コード生成してもらいたいポイントを具体的に正確に伝えることです。AIに伝える依頼文のことをプロンプトと呼びますが、私はこのプロンプトの品質が、コード品質に直結していると感じています。そのため、最初の指示プロンプトは、時間をかけて正確に矛盾無く作成するようにしています。ここは国語力、伝える力が問われるところです。具体的かつ正確に伝えるには、前工程の要件定義や実装アルゴリズムを正しく、正確に理解しておく必要があります。ここが曖昧のままだと、意図しない動きのものが生成される確率が上がります。
今日はコードができあがったので、アプリ上でのテストも実行します。こちらの画像は実際の「製造販売承認書チェッカー」の画面です。
機能要件通りの動作になっていることを確認しました。ほっと一安心です。
出来上がったコードをcommitし、リモートブランチに push して今日の作業は終了です。
PM6:30 - PM7:30 帰宅
帰りも大渋滞の中タクシーで帰宅です。帰りは疲れて寝てしまうことが多いです。
帰宅後もコーディングを続けることも多いですが、今日はうまくいったので業務終了します。
最後に
最後までお読みいただきありがとうございます。私がAIエンジニアに転身したのは2016年、いわゆる第三次AIブームの始まりのころでした。それまではマクニカでプロダクトエンジニア、システムエンジニアとして業務に携わっていました。当時のAIブームに興味を抱き、AIビジネスへ挑戦してみたいと提案したところ、当時の上司の賛同を得て了承いただきました。その後、インド赴任の話をいただき、今に至っております。マクニカには、このように挑戦する文化、また、その挑戦が仮に失敗したとしても、それを許容する文化があります。こんなマクニカで一緒に働いてみませんか?
関連記事
前へ
失敗から学ぶしくじりストーリー:PS編
