新テクノロジーで基盤システムにINNOVATIONを起こす×ラボ(前編)

f:id:monex_engineer:20190717153804p:plain

こんにちは。マネックス・ラボ 渡瀬です。
社内で開催されたアイデアソンの結果、私たちのチームラボが優勝しました! 今回はチームラボの取り組みをご紹介します。

イデアソンとは


「新テクノロジーで基盤システムにINNOVATIONを起こす」をテーマに第一回アイデアソンが実施されました。
下記の記事でも触れていますがSTAGE:1のアイデアソン から STAGE:2の実証実験と発表を経て、結果発表となりました。

イデアソンの紹介はこちら記事です。
blog.tech-monex.com

今回出場した別のチームの記事です。

blog.tech-monex.com

取り組んだ課題

機械学習を用いた目論見書解析による業務効率化」

当社で取扱いをしている金融商品の一つに投資信託(ファンド)があります。
投資信託の情報を目論見書と呼ばれる投資信託説明書から、マネックス証券の基盤システム「GALAXY」に登録し管理しています。
目論見書はPDFファイルで作成されており、それを目視で確認して設定値を登録していた業務の効率化を考え、画像解析と機械学習を使って実証実験をしてみました。

f:id:monex_engineer:20190717155842p:plain

現在の運用

 

f:id:monex_engineer:20190717155554p:plain

業務効率化後の運用

【環境】

実証実験(1回目)-目論見書解析-

 ①目論見書PDFをOCR処理し、JSON形式で取得
目論見書PDFは一般的に保護されていてテキストデータがコピーできません。そのためテキストデータを抽出するために「Google Cloud Vision」を利用してOCR処理しました。テキスト部分をこの後に利用したいのでJSON形式で取得しました。

f:id:monex_engineer:20190717180451p:plain

目論見書PDFをJSON形式で抽出


機械学習を実施
「Cloud Machine Learning Engine」の機械学習(分類)を使用して投資信託の設定日を取得できるか試してみました。

目論見書PDF約220件を学習データ80%、テストデータ20%に分けて検証しました。
学習データは、目的の設定値の特徴となる要素を何パターンか試しました。

  • OCR結果の文節、目的の設定値を含むかどうかのOK/NGの正解
  • OCR結果の文節、前後の文節、目的の設定値を含むかどうかのOK/NGの正解
  • OCR結果の文節、OCR結果全文、目的の設定値を含むかどうかのOK/NGの正解

などなど


③結果(1)

  •  OCR結果の文節、目的の設定値を含むかどうかのOK/NGの正解

   学習データ OKデータ数:223件 / NGデータ数:158,372 件

   OKデータが正解の正答率:0.36%

   NGデータが正解の正答率:99.89%

  • OCR結果の文節、前後の文節、目的の設定値を含むかどうかのOK/NGの正解

   学習データ OKデータ数:223件 / NGデータ数:158,533 件

   OKデータが正解の正答率:0.28%

   NGデータが正解の正答率:99.87%

  • OCR結果の文節、OCR結果全文、目的の設定値を含むかどうかのOK/NGの正解

   学習データ OKデータ数:101件 / NGデータ数:75,687 件

   OKデータが正解の正答率:0.24%

   NGデータが正解の正答率:99.80%

 

全ての学習パターンの中で最も正解率の高いものでも上記の通り0.36%程度であり、学習データに占めるOKデータの割合に近似していたため、学習データのOKデータとNGデータが不均衡であるとテスト結果に影響してしまうと考えました。
そこで、学習データのOKデータ量をNGデータ量に近づけるようにデータを水増し(augmentation)しました。

 

③結果(2)

  • OCR結果の文節、目的の設定値を含むかどうかのOK/NGの正解

   学習データ OKデータ数:223件 → 88,261件 / NGデータ数:75,687 件

   OKデータが正解の正答率:0.36% → 21.91%

   NGデータが正解の正答率:99.89% → 98.23%

  • OCR結果の文節、前後の文節、目的の設定値を含むかどうかのOK/NGの正解

   学習データ OKデータ数:223件 → 88,393件 / NGデータ数:158,533 件

   OKデータが正解の正答率:0.28% → 27.71%

   NGデータが正解の正答率:99.87% → 97.84%

  • OCR結果の文節、OCR結果全文、目的の設定値を含むかどうかのOK/NGの正解

   学習データ OKデータ数:101件 → 52,765件 / NGデータ数:75,687 件

   OKデータが正解の正答率:0.24% →  6.10%

   NGデータが正解の正答率:99.80% → 94.47%

 

結果(1)より、OK割合が2割程になりましたが、想定していた結果よりも低いままでした。

ここまでの結果から、↓のことが分かりました。

・学習データの件数が不均衡だと偏った結果になってしまう
・学習項目がランダムな文字列だと特徴を捉えられないようで想定する結果にならない

分類別に学習データの件数を均衡にし、さらに特徴を捉えられる学習項目で機械学習を実施したらどうなのか、ということで実証実験2として試してみることにしました。

(後編へつづく)

渡瀬 桂システム開発マネックス・ラボ

開発本部長が語る「マネックス証券がシステムの内製化にこだわる4つの理由」

f:id:monex_engineer:20190712180934j:plain

なぜ内製化なのですか?アウトソースの方が良いのでは?という質問をよく受けます。

大手ユーザー系システムベンダーのシステムを利用しサービスを提供していましたが、5年以上の歳月を経て、2017年1月より自社の新システムに移行しました。

開発期間中、社員は主にプロジェクトマネジメントに従事しベンダーが開発を担当しました。ローンチ以降、社員が中心となり開発できる体制を構築しようと内製体制強化プランを立案。本年はその3年目にあたります。

1.自由に速く開発したい

世の中の変化のペースがずいぶん速くなりました。
急に開発しなければならない案件の割り込み、急な要件の変更やスケジュールの変更、どれもビジネスの競争に勝つために必要なことです。

しかしながらシステム開発ベンダーにはリスクをとれない事情があり、その変化に柔軟に対応できません。業務委託契約を結び開発を委託/受託しているわけですから、それほど自由が利かないのです。

社員のエンジニアであれば、ビジネスのニーズの変化に併せて柔軟にアサインの変更ができます。

2.ノウハウの社外流出を防ぎたい

システムベンダーにはシステムにも業務にも精通したプロフェッショナルが大勢います。しかし、優秀なエンジニアは引く手あまたなので、システムベンダーにとって重要な開発案件があると、エースはそのプロジェクトに異動になってしまいます。やっと戦力になった若手のエンジニアが異動してしまうこともしばしば。ノウハウが外に流出してしまうことは非常にもったいないことです。

一方、社員が開発すれば、経験もノウハウも社内に残ります。業界のルール以外にその会社特有のノウハウってありますよね。

3.新しいアイデアを秘密にしておきたい

システム開発プロジェクトの中には、制度変更対応のように業界全体が同じ要件を実装するタイプのものがあれば、日本初となるサービスを極秘裏に進めるようなケースもあります。

近年、テクノロジーが進歩し、従来のサービスの延長線上にない新しいサービスを生み出すことがますます求められています。
世の中にないサービスを生み出すとき、情報を外部に漏らさないよう気を遣います。秘密保持契約があっても心配なものです。

当社ではビジネス部門とシステム部門が一緒にサービスを検討したりしますが、全員社員であれば遠慮なく意見交換ができ、そこからさらに新しいアイデアが生まれる、ということも期待できます。

4.システム関連コストを抑えたい

エンジニアの皆さんの中には、自身の1か月の開発活動をコストに換算するといくらになるか気にしていない人も多いと思います。実際のところ、銀行口座に振り込まれる給料の額と比べるとずいぶん高くなっています。

当社の場合、システム開発にかかるコストの標準モデルは次のとおりザックリこんな感じです。

(1)月給(額面)50万円
(2)残業代10万円
(3)社会保険等、会社が従業員に負担する費用9万円
(4)通勤定期代 1万円
(5)一人あたりのスペースの家賃 5.5万円
(6)一人あたりの不動産管理費 0.2万円
(7)一人あたりの水道光熱費 0.6万円

1か月あたりのコストは合計77.3万円となります。

一方、同じ給与のエンジニアがシステム開発会社に勤めているとしましょう。
その会社がシステム開発だけで収益を得ているとします。
会社は黒字にならないといけないので、上記の当社のケースと比較すると、間接部門のコストと営業利益分のコストが追加でかかってきます。

(a)営業や総務その他エンジニア以外の従業員に支払う給料
(b)営業や総務その他エンジニア以外が使っている不動産費、光熱費
(c)営業利益

この通り、自社のエンジニアは自社のシステム/サービスに精通し、詳しいコストも(a)(b)(c)の分、割安となり、いいことづくめです。

あとは、良いエンジニアと出会い、当社の魅力を伝え、開発現場がよりやりがいのある環境になるよう努力を続けていきます。

開発本部長 安原

プロジェクト管理

プロジェクト管理ってどんなことする?

『プロジェクト管理』ってどんなことしているかイメージできますか?

文字通りではあるのですが、具体的にどんなことをしているのかを今日はご紹介したいと思います。

私たち企画設計Gは、この『プロジェクト管理』を主に担当している人達の集まりです。

プロジェクト管理って、システムの知識は必須ですが、同じくらい「人の話を聞けること」・「全体を見ることができること」が大事なんです。そのせいなのか、企画設計Gは特にみんな和気あいあいとしています!

さて、プロジェクトが始まると色々な管理や調整が始まります。

予算の管理、スケジュールの管理、課題の管理、さまざまな要望の管理(時には追加要件の調整…)…などなど山盛りです!

これらを調整、対応しながらリリースに向けて進んでいきます。

この時重要になるのはこの3つ!

  • Quality(品質)
  • Cost (原価)
  • Delivery(納期)

具体的に何をすればよいかというと…私はPMBOKを参考にしています。

PMBOKとは?

「プロジェクトマネジメント知識体系:Project Management Body of Knowledge」の略称です。国際的に標準とされているプロジェクトマネジメントの知識体系(ガイド、手法、メソドロジー、ベストプラクティス)であり、建設、製造、ソフトウェア開発などを含む幅広いプロジェクトに適用できるプロジェクトマネジメントの基盤を提供します。

 PMBOKは10個の知識エリアと5つのプロセスで構成されています。

f:id:monex_engineer:20190708095327p:plain

これらのエリアに分類したときに、それぞれ「何を作成・管理すべきか」について体系化されてます。

(例)「統合マネジメント」の「計画」時には「プロジェクト計画書の作成」が必要になりますよね、
 といった事柄が整理されています。

※詳しくはこちら↓

プロジェクトマネジメント知識体系ガイド PMBOKガイド 第6版(日本語)

業務への適応(経験談

今回担当したのはプロジェクト期間1年を超える大案件のPMでした。プロジェクトを進めていく上で特に難しかったのは「品質管理」でした。

試験計画~品質評価の間は、開発者とコミュニケーションを図りながら試験で発生した不具合分析や強化試験の実施計画を立てましたが、様々な問題もありました。

具体的には試験が計画通りに進まず、スケジュールの立て直しを行い、その中で強化試験も追加で行うためにスケジュールの調整を行うなどの作業負荷が非常に高くなりました。

このような予期しない作業が発生しましたが、最終的にはリリース日を遅らせることなく、予定通りにサービスを開始し、本番稼働後は多少のトラブルはあったものの、サービスは順調に稼働しています。

この後にも同規模のプロジェクトのPMとして担当することが予定されています。今回の反省点を次回のプロジェクトでは活かしていきたいと思います。

まとめ

PMBOKは現場で使うのは難しいといわれています。実際、このまま当てはめてもプロジェクト管理方法は会社、さらにプロジェクトごとでも違ってきます。

ただ、プロジェクト管理と一言で言っても、プロジェクトによって流動的ですし、時間が経てばやり方も形骸化したり、粗末になったりしてくるもので、、、その時にPMBOKの基準を基に初心に返ることは必要と思っています。