見出し画像

水揚げ情報のデータ配信を徐々に仕組み化した話

こんにちは!宗原です。
昨年4月にウーオに入社して既に1年が過ぎました。

会社内で唯一の新卒ということもあり、プロダクト開発チームという所属ですが、最近は総合職的な感じで、カスタマーサクセスや自治体との連携など、プロダクトの領域に囚われない、チームの垣根を超えた動きを行っています。
(半年前にインタビューいただいた記事はこちらです!)

今回のnoteは、昨年行ったプロダクト開発チーム寄りの仕事についてです。UUUOアプリ機能の1つである水揚げ情報が完成するまでの裏側についてご紹介します!


■水揚げ情報ってなに?

水揚げ情報とは、その日に「どの魚種が」「どれだけの量」獲れたのかという一覧情報を指します。各漁港ごとに水揚げがあった毎朝(深夜)作成され、この一覧情報が記載された書類は「漁獲報告書」と呼ばれます。

この漁獲報告書は適切な指値で魚を購入したい産地仲買さんがセリ前に確認することが多く、仕入れの見当をつけたい小売スーパーのバイヤーさんも参照するなど、水産流通に関わる幅広い方々にとって有益な情報源です。
(「産地仲買」という言葉がピンとこない!という方は、下記を参照ください。)


■なぜこのサービスを作ったのか

毎日、各産地の漁協が紙やメールで漁獲情報を提供しているのですが、各産地ごとに独自のルールで作ったフォーマットを用いて水揚げ情報がまとめられています。
場合によっては黒板に書いて終わりというような産地もあり、特定の解読可能な人にしか行き渡っていませんでした。

各産地の漁獲情報
毎朝、魚種ごとにどのくらい漁獲があるのか書かれている
黒板に書かれた漁獲情報
  • 仕入れる人:実は買えたのに情報が足りないために発注ができなかった。

  • 販売する人:実は高く売れる可能性があったが、情報が適切に届けられず安価でしか売れなかった

というように、双方にとって機会損失が発生してしまっている状況でした。

そこで、はじめは港数を限定した形で、UUUO baseというLINE公式アカウント上でテキストベースで漁獲案内を行っていました。

アプリ開発以前に公式LINEで配信していた内容
産地が増えると欲しい産地や魚種を探すのも大変・・

消費地市場の荷受の方など、想定以上に多くの方にご覧いただいていましたが、取引先産地が増えてくる中で、LINEを使ったテキストでの配信に限界が見えてきました。

そんな課題が見え始めた中、プロダクトチーム内で会話した際に、各漁港の水揚げ情報を発信するアプリがあれば良いのではというアイデアをきっかけに、アプリ開発がスタートしました!


■サービス開始!

2021年5月ごろに企画が上がり、同年7月に「Mahama Cloud」という名称でアプリケーションをリリースしました!

Maehama Cloudアプリ画面
  • 魚種や産地ごとに網羅的に閲覧可能

  • お気に入り魚種や産地の登録

  • 過去のトレンド閲覧

など、仕入れに際して確認しておきたい漁獲情報が手軽に確認できるサービスです。


■ここからは配信の裏側の話

情報をサービスとして提供する以上、サービスの価値の根幹を支えるために以下の条件を達成する必要がありました。

  • 紙の情報がデジタルに規格化され、誰でも分かるようになっていること

  • セリの前に即時に配信されること

そのために、毎日LINEグループやメール、産地のホームページなどから取得している、数十港分の漁獲報告書をリアルタイムでデジタルデータに加工する必要があり、その体制を構築するのが私のミッションでした。

ゆくゆくOCR等を駆使して機械に置き換える前提で、まずは100%人力で配信をする体制を構築していきました。

人力でやるにしても、

  • 配信が必要なタイミングと必要な人員の算出

  • 読み取り精度の担保と向上

  • オペレータの配信工程の整備

など、目に見えて課題が山積みでした笑
これらを実現するため、下記のような漁獲報告特有の課題を解決していかなくてはなりません。

  • 配信している漁獲情報元が点在していること(LINEグループやメール、産地のホームページなど)

  • 送付される時間も産地ごとにバラバラ

  • 情報の媒体も多様(写真やPDF、テキストメッセージなど。。)

  • 産地ごとの独自ルールの解読

これらをどのように解決していったかについて、詳しく説明します。


フェーズ1.  オペレータで配信の運用が出来るまでの足跡

以下を意識して配信体制を構築しました。

  • 最少人数のオペレータを適切な時間に配置すること

  • 管理者とオペレータの双方が確認しやすいこと

  • 魚の知識がゼロの人でも配信ができること


1.  最少人数のオペレータを適切な時間に配置すること

即時に配信をするといってもオペレータを24時間常駐してしまっては、コストがかかり過ぎてしまいます。

そこで、「どの時間帯」に「何人」オペレータを配置するべきか決めるために、スタートは1人で運用し、

  • だいたい何時に情報が来るのか。

  • 入力にどのくらい時間がかかるのか。

などを調べて、スプレッドシートにまとめました。

各産地の漁獲情報がいつ来るのか、入力にどのくらいかかるのか
などをまとめたスプレッドシート

最初にこの表を作成したことで、これをベースにどの時間帯に何人調達が必要なのか関係者も理解がしやすくなり、「とにかく人が必要なんです」などといった非論理的なコミュニケーションも発生せず、無闇にオペレータを配置してコストが逼迫してしまうことを防げました🙌


2.  管理者とオペレータの双方が確認しやすいこと

LINEやメール、ホームページなど色々な情報元を確認し入力を行う運用だと、抜け漏れ重複が起こり得ますし、管理者もきちんと入力されているのか把握出来ない状態となってしまいます😇

解決策として、点在している漁獲情報元を全部slackに集約することにしました。

今でこそ昼に稼働してくれる業務委託や社内に複数エンジニアが在籍していますが、当初エンジニアは少なく、さらにリリースしたばかりのMahama Cloudの開発でタスクが山積みだったので、エンジニアの方のリソースが無く。。。
僕でも手早く出来そうなGoogle Apps Scriptで上記の目的を達成可能な簡易なプログラムを作成しました。

slackに集約されるまでのデータの流れ
①メール、②LINEに流れてくる画像、③ホームページ情報が
slackのチャンネルで確認出来るように。。。

slackのチャンネルにアルバイトを招待していれば、入力すべきものが分かりますし、入力完了分はチェックマークを付けるようにした事で、重複も抜け漏れもなく配信出来るようになりました🙌


3.  魚の知識がゼロの人でも配信ができること

初見の人が入力で困るのが、産地の名称産地ごとの独自ルールの解読法です。ウーオ社員でも分からない場合がある情報なので、それをオペレータに依頼するとなると、魚の知識がゼロの人でも配信出来るようにする必要があります。

同じ「ケンサキイカ」という魚種でも産地によって「白いか」「赤いか」など呼び方が変わります。(大変なことに、正式名称が「アカイカ」のイカもいます笑)

①各産地ごとに名寄せテーブル(産地名称から配信名称に変換するテーブル)と独自ルールの解説書を作成しました。

スプレッドシートで作成した名寄せテーブル

②漁獲情報をslackに転送する際に、上記の名寄せテーブルから該当の産地の名寄せ情報のみ抽出して以下のようにスレッドに流れる仕様にしました。

左)slackのチャンネルに流れてくる漁獲情報一覧
右)各スレッドに流れてくる産地名称辞書と独自ルールの解読書

最後の入力は結局全てマニュアルですが、魚の知識がゼロの人でも配信ができる状態を作ることができました🙌
とはいえ、結構雑なところはあったのですが、入力オペレータの皆様のおかげで正確な情報をリアルタイムで配信できる状態にはなりました!(オペレータの皆様いつもありがとうございます🙇‍♂️)


フェーズ2. 自動読み取り化までの足跡

100%人力で配信をする体制を構築出来たものの、有難いことにどんどん配信する産地が増えていき、配信工程の処理速度を上げる必要がありました。
次のステップとして、主に2つのアプローチを会社内で考え動き出しました。

 ①入力アプリを作成して産地に入力してもらう。
 ②紙で来る情報を自動で読み取れるようにする。

①については、産地のオペレーションを大きく変えていく必要があり、短期的に成果が出にくいため検証はしたものの採用しませんでした。
②については、無事運用まで持っていくことができて今でも活用しているので、ここからは自動読み取り機能の話を書きたいと思います。

②-1.初期の読み取りプログラムの作成
自動読取については、最初は休日に自動でいくつかの産地を対象に読み取るプログラムを作ることから始めました。

実際に作成したプログラムでの自動読取過程

手書きの文字は読み取りが上手くいかない部分もありますが、画像からきちんと表の部分だけ抽出すれば、それなりに高い精度で読み取れることがわかったので、実際にこれを運用していくようにしました。


②-2.半自動全体の構築
業務委託のちゃんゆーさん(@chanyou0311)と全体の構築を進めて、その後、社内のエンジニアである井草さんにも手伝ってもらいながら、なんとか実現に向けて動き出すことが可能になりました!

結果、画像処理・テキスト処理もほぼ自動で行えるようになり、「自動読取り→人の目で最終チェック」という業務効率化を実現しつつ、入力精度の高いサイクルで回していくことができるようになりました🎉🎉

半自動化プログラムの全体像
autofillという部分で自動読取プログラムが実行されています
(sashimoriはウーオのwebサーバー)
  • フェーズ1:LINE or HP or メール → GAS → slack → 手入力

  • フェーズ2:LINE or HP or メール → GCP(自動読取)→ sashimori(仮入力)→ slack → 手入力

という流れに変わり、slackには画像だけでなく、以下のように弊社のwebサーバーのフォームのリンクが一緒に飛ぶようになりました。

改善後のslackのチャンネルに流れてくる漁獲情報

slackのリンクを開くと、以下のように自動で仮入力された状態のフォームが開きます。自動読取できなかった空欄部分や間違っている箇所をオペレーターが訂正して完了です。

仮入力された状態の入力フォーム
穴埋め箇所は読み取れなかった部分

オペレーターに最終チェックを任せることで情報の正確性を担保しつつ、以前より効率的な配信フローになりました🎉🎉


■今後の展望

このような形で仕組み化できた水揚げ情報配信ですが、今後は蓄積されたデータをうまく活用していければと考えています。
購買に使える精度の日ごとの漁獲量予測は自然相手なので、不確実性が多くまだまだ実現不可能です。そのため、

  • 既にある情報を必要な人に適切に届けること。

  • 産地に点在している情報を集めていくこと。

が重要だと僕は思っています。

既にある漁獲情報を十分に集めることができさえすれば、そこから先は人の行動なので、自然相手よりは予測しやすいと思いますし、購買先の産地・魚種の提案などデータを使った施策も可能なのではと思っています。
それでも変数が多すぎるので、ここは長期的な目標として実現していければと考えています。

僕は大学院修士までですが、水産資源の予測やその予測に基づいた漁業管理について研究していました。
現在の資源管理においては生物学的側面が重要とされる一方で、経済的な側面はそこまで加味されていないように感じていました。それは研究に扱える経済的なデータが十分に無いからというのも原因の1つだと思っています。

理想ではありますが、ウーオが水産流通に関する情報を網羅的に把握できれば、資源量の観点だけでなく経済や流通を加味された形での資源管理なども可能になるのではないかと思っています。
そのための第一歩として、水揚げ情報の収集を今後も行っていきます💪

そして、ウーオは水産流通を革新するため、このほかにもあらゆる方面からアプローチを行っています。詳しく聞いてみたい方は、ぜひこちらからエントリーしてみてください!

そして一緒にウーオで働きたいという方も募集中です。

次回はエンジニアの髙橋さんがプロダクトnoteを投稿予定です!
直近で新しい機能もリリースされたので、そこの話も詳しく聞けるかもしれないですね。楽しみです。


この記事が気に入ったらサポートをしてみませんか?