UUUO Tech Blog

水産流通のDXや業務効率化を実現するアプリケーション「UUUO」「atohama」を開発・展開している株式会社ウーオのテックブログです。プロダクトにまつわる様々な情報発信を行います。

2021年〜2024年前半の担当施策振り返り

こんにちは! ウーオのソフトウェアエンジニアの井草です。 私事で恐縮ですが、産休でしばらくお休みをいただくことになりました。今回のブログでは、入社した2021年後半から現在まで私が関わった施策をメインとした振り返りをしていきます。

タイムライン

2021年

アプリ「Maehama Cloud」リリース

現在まで続く魚を仕入れるためアプリ「UUUO」の他、全国の水揚げ情報を配信するアプリ「Maehama Cloud」の開発を開始し、2021年7月にリリースしました。 水揚げについてはリリース以前もLINE公式アカウント上で案内していましたが、取引先産地が増えるにつれテキストでの配信に限界があり、アプリでの情報発信へと切り替えました。

アプリでは魚種ごと・産地ごとで水揚げが見れる他、過去その魚がどのくらい獲れていたかも見れるようになっていました(※現在は水揚げ情報の配信を停止しています)。

漁獲情報は各産地のLINEグループからの情報やHPから取得しているのですが、配信のためのオペレーション改善については↓で記事化されています。

note.com

kg売り出品

UUUOアプリではそれまでケース売りでのみ出品可能でしたが、kg売り出品に対応しました。その対応により、出荷する段階まで合計kg数が分からず金額が確定しない商品についても出品することが出来るようになりました。

出荷タブ

出品者向けアプリ「UUUO Sellers」にて、受注したものを表示する購入一覧タブに加えて出荷タブを追加しました。 出荷便ごとの表示に対応し、商品を何時の出荷便で出荷するのか分かりやすくなりました。

2022年

アプリ統合

前年にMaehama Cloudをリリースし、発注用のアプリUUUO(+出品者向けアプリUUUO Sellers)と並行して開発を進めてきましたが、検証を重ねた結果水揚げ情報機能をUUUOアプリに体験を統合する流れとなりました。

アプリの統合の経緯について👇

note.com

リクエスト出品

水揚げ日前日に事前注文を取りたいという要望に応えて、リクエスト出品機能を追加しました。 「セリ前商品」という名前に変わって現在も活用されています。

鮮魚BOX内訳表示

鮮魚BOXの取り扱いが増えるにつれ中に入っている魚種が多様になったため、魚種の内訳を入力しやすくし、アプリ上の表示も分かりやすく改善して出荷ミスが起きにくいように対応しました。

販売時間ごとの出荷便の締切時間改善

それまでは各出品に紐づく販売時間で登録されている締切時間によって各ユーザーが購入できる期間を一律で管理していましたが、出荷便の締切時刻に合わせたり、その日によって締切の時刻を変えられるようにして柔軟に締切時間を設定出来るようになりました。

この頃開催したイベントで登壇する機会があり、この施策について触れています👇

speakerdeck.com

荷口番号対応

2022年12月1日、違法に採捕されたアワビ・ナマコの流通を防止するために施行された水産流通適正化法により、荷口番号(漁獲番号)という取引の際に発行された番号の伝達・管理が義務付けられました。アプリ上でも施行に合わせて荷口番号を管理できるように対応しています。

2023年

️タイムライン

出品以外の形で情報発信を行うことで売上の向上につなげるため、タイムライン機能を追加しました。 現在はオススメタブの中で出品者からの投稿を確認する事が出来ます。

️クレカ決済 / ヤマトクール便対応

新規顧客層の飲食店の利用シーンに合わせ、クレジット決済機能・ヤマト便で受け取れる機能をリリースしました。 それまでは支払いは銀行振込、発送は市場便(産地と市場間を輸送する専用の便)のみでしたが、飲食店ユーザーでも購入ができるようにインフラ整備を進めました。

tech-uuuo.hatenablog.jp

出品コピー

以前出した魚種と同じような商品を出品する際、一から作成する必要があり出品作業に時間がかかる問題がありました。 過去の出品をコピー出来るようにする事によって出品時間が減り作業効率が上がりました。

加工対応

加工オプションの設定を追加し、出品者が対応できる場合は内蔵処理等の加工をした状態で商品を提供出来るようになりました。 商品によって加工賃の設定を変更出来るため、対応の手間の違いから適切な価格で販売出来るようになっています。

Algoliaによる検索機能の改善

UUUOアプリの検索機能は2021年時点でありましたが、魚種名での検索しかできませんでした。「産地や漁法、食べ方などで検索し、意図した商品を見つけたい」という要望に応えるべく、検索機能改善を行っています。

tech-uuuo.hatenablog.jp

出品アプリのWeb対応

商品の発注はUUUOアプリを使用してのみ行う事が出来ていましたが、アプリをインストールしなくても発注が出来るようにWeb版の立ち上げを行いました。 Next.jsを採用しています。

tech-uuuo.hatenablog.jp

リリースしたWeb版はこちら👇

https://app.uuuo.jp/commerces

2024年

産直表示

UUUOアプリでは産直品の取り扱いがメインでしたが、市場入荷品(入荷量が多く供給が安定しているため安価な商品)が増えた事で一見して商品の区別がつきにくい課題がありました。アプリ上の表示を改善し、産直品/市場入荷品が分かりやすいように変更を加えました。

おわりに

今回は、私が関わってきた施策についてまとめました。
入社してから3年弱も経っていることに驚きですが、振り返ると色々なことをやってきたなと感慨深い気持ちになりました笑
今年に入って約3割が経ちましたが、その間に私が関わった施策以外にもおすすめ商品の提案等、大きめの機能がリリースしていて勢いを感じます。 この勢いに乗り遅れないよう、復帰した際には今まで以上に頑張ります💪

ウーオでは水産流通を革新するため、プロダクトを通じてあらゆるアプローチをしています。ウーオの事業やプロダクト開発にご興味がある方は、以下をぜひご覧ください 👇

uuuo.co.jp

◆カジュアル面談はこちらから◆ / 株式会社ウーオ

各ポジションの募集要項はこちら

<業務委託スタート可>ソフトウェアエンジニア(Mobile Application/Flutter) / 株式会社ウーオ

<業務委託スタート可>ソフトウェアエンジニア(Frontend/Flutter on the Web) / 株式会社ウーオ

<業務委託スタート可>ソフトウェアエンジニア(Backend/Ruby on Rails) / 株式会社ウーオ

鮮魚バイヤー向けおすすめ提案のアプリデザイン

このブログは、2024年2月29日に note に投稿した記事を転載したものです。 note では技術記事以外にも多くの記事があるので、是非ご覧ください!

note.com


こんにちは!株式会社ウーオでUI/UXデザイナーをしている久保坂(@misaaa09)です。

先日水産流通マーケットプレイス「UUUO」でユーザーに合った商品提案を行う「オススメ提案機能」をリリースしました。

オススメ提案機能の画面イメージ

約6ヶ月で構想からリリースまでを行い、その中で様々のメンバーを巻き込みながら進めたプロジェクトでした。 今日は具体的な開発フローの紹介とともに、周囲を巻き込みながらデザインしていくうえで工夫しているポイントをお伝えしたいと思います。

構想〜リリースまでの半年間のタイムライン

続きを読む

OCR/AI を用いた FAX の読み取りによる商品掲載自動化の仕組みづくり

こんにちは! ウーオのソフトウェアエンジニアの髙橋(@yt_hizi)です 👋 今回は OCR/AI のプロダクトへの適用事例について紹介します。

tl; dr

  • 入荷案内の PDF は毎日複数社から届き、これを入力するのに大変な時間がかかる
  • Azure の Document Intelligence を用いて入荷案内情報を OCR で解析し効率化した
  • OCR をプロダクトに組み込む際は、業務に沿った形でデータを変換することがプロダクトの価値になる

ウーオは日々の入荷案内を全国に届ける

市場では日々、さまざまな魚が取引されています。日によって市場にある魚の種類が違えば量も違います。 そういった情報を、市場の事業者は「入荷案内」という形で1つのドキュメントにまとめて、取引先に入荷情報を伝えます。 取引先は、入荷情報を見てどの魚をどれだけ買おうか、というのを日々判断して購入し、これが最終的に私たちの食卓に届くわけです。

そんな入荷案内は、市場の事業者の取引先であるウーオにも日々届きます。 ウーオは各社から届く入荷案内に載っている情報を、市場の事業者の代わりに水産マーケットプレイスである「UUUO」に掲載し、全国のお客様が買えるようにしています。

これだけでも全国のお客様にとっては大きな価値となりうるのですが、日々入荷案内は複数社から届き、各社の入荷案内には約50商品ほどが掲載されています。

これら全てをアプリに掲載するために人力で入力すると、毎日数時間をこのために使うことになってしまいます。これでは効率が良くないので、なんとかしようというのが今回のプロジェクトです。

続きを読む

Algolia (with Ruby on Rails) を使って検索機能を改善してみました。

はじめに

こんにちは! 冬に美味しい鰆が準絶滅危惧種に指定されたということに驚きを隠せない t3qyo です。
特選京サワラはUUUOでも購入できます。飲食店様、仲卸様、スーパー発注担当者様、UUUOをどうぞ鮮魚仕入れにご活用ください!

app.uuuo.jp

先日のウオ会でセールスチームが握ったサワラ鮨

前置きはさておき、 最近、UUUOアプリで検索の改善を行ったので共有します。

改善後の画面
改善後の画面


続きを読む

Ruby biz 2023 大賞受賞に寄せて、水産流通における Ruby や Ruby on Rails の活用についての話

こんばんは、土谷(@taihaku0415)です!

ウーオは、11月8日に行われたRuby biz Grand prix 表彰式でありがたいことに大賞をいただきました。 個人的には、プログラミングを始めた一番最初の言語がRubyだったのもあり、非常に感慨深かったです。

Matz-product-uuuo
まつもとさんとプロダクトチームで写真

せっかくいただいた大賞をきっかけに、ウーオの開発のことを知っていただければなと思い、ブログを書きました(11月最終日になってしまいました)。

ウーオは、

の2つのサービスを開発しています。

まず、UUUOとatohamaの使用技術を非常に簡単にご紹介すると、ユーザ側のクライアントサイドのアプリから叩かれるAPIサーバーは全てRuby on Railsを採用しています。APIサーバーはWebとWorkerからなり、非同期関連のジョブはSidekiqで構築しております。

また、基本的にインフラはPaaSのHerokuを使っており、データベースを始めエラー検知、データ解析、モニタリング等を目的としたツール等もHerokuのAdd onで実現しています。

社内で利用している管理画面(sashimori)はRailsのView(Haml)を利用してフロントを構築しています。

このブログでは、2019年に入社してから今まで、ウーオの開発でRuby+周辺技術*1を利用していますが、そこの背景や意図について書きたいと思います。

1. プロダクト作りに集中したかった

採用資料より

この構成(主にRails + Heroku)にしたのには、水産業におけるプロダクト開発(≒価値の具体化)に集中し、標準的に備えたい仕組みや機能とともにサービスを素早く立ち上げて価値検証に時間を使いたかったから*2、です。

水産業は専門性が高く、開発者も身近に感じづらい領域で、ユーザの課題1つとっても理解するために乗り越えるべきハードルが高い業界だと思います。

それは、具体的には

  • 関わるプレイヤーが多く多岐に渡る
  • 電話やFAX等の通信手段で売買が行われる
  • 特有の商習慣があり参入しづらい

等、サービス開発するにおいて私自身も、どこから手をつけたらいいかわからないことだらけでした。

ウーオでは、頻繁にエンジニア、プロダクトマネージャーが現場に行って観察を行います。 開発の比較的多くの時間を現場に入り込んで業界・ユーザ理解に比重が多く置かれる場面もあります。 詳しくは パソコン捨てて、市場に行こう港でパフォーマンスチューニング 等をご覧ください。

2. 入社後のキャッチアップのしやすさ

採用や組織づくりという観点で言うと、ウーオでは、強弱はあれど実は Ruby に拘らず、一定のバックエンド・サーバーサイドの開発経験があれば、ウーオの事業やプロダクト開発に共感してくれるメンバーを積極的に採用してきました。なので、採用候補者の方へのアプローチ時もあまりRubyという枠では絞っていなくて、プロダクトづくり、ユーザに価値を届けること、課題解決が好き、と言ったメンバーが集まっています。

水産未経験は当然ですが、RubyRailsも未経験だったというメンバーが多くいます。

土谷太皓氏は「Rubyのおかげで会社が成長できている。特にプログラミング未経験の人でも、Rubyを使うことで楽しみながら開発できていると感じる」とコメント - https://news.yahoo.co.jp/articles/7eb969867bdcda6b7dded6ae96ed05c30ea0afcb より引用

(プログラミング初心者ではなく、Rubyが未経験という意味で表彰式のスピーチでは話をしたつもりでしたが...笑) 上の記事にも書いていただいているように、実際今いるメンバーの内7割のエンジニアはウーオに入ってからRubyを書き始めました。

キャッチアップのしやすさの1つに、コミュニティやエコシステムが成熟しており、一定のレベルまでのキャッチアップまではすぐできるように支援してくれるドキュメントも豊富ですし、

何か実現したい解決策がある時も豊富な Gems からパッと探して取り入れることもできると思います。

もちろん、Ruby未経験だったメンバーにとっての難しいところもありますし(ex. 自由(?)に書け過ぎる)、チームとしては社内の開発ガイドラインを設けてみんな一定のルールのもと実装ができるようにしていたりもします。

3. 複雑なドメインロジックとうまく付き合っていきたい

同じカレイでも、サイズの定義は港ごとに違う

冒頭にも書いた通り、水産業は多くの複雑なドメインが混在しています。

例えば、UUUOのRailsアプリのコードを見ても

  • 魚種にまつわるモデル(呼び名、魚種ごとの規格)
  • 物流のモデル
  • 購入や決済のモデル
  • 色々なプレイヤーがいることによる組織のモデル

等がパッと思い浮かびます。

(あまり詳細には踏み込みませんが) 少し具体的な話をすると、上記の例の物流のモデルにも関係する、ユーザごとの出荷方法を決定するだけでも、

  • 通常のBtoBの市場間物流を使う
  • ラストワンマイルを配送してくれるヤマト配送を使う
  • その両方を使う

のか、購入するユーザの種類と、商品(発送地)の組み合わせで色々な分岐があります。 ※複雑なドメインを実装に落とし込む話については水産業ドメイン可視化と実装のコツ〜釣って捌いて食べてみる〜 - Speaker Deck が面白いのでぜひご覧ください!

speakerdeck.com

こういった複雑性を内包するロジックはなるべくカプセル化し外から扱いやすくする工夫を随時していっています。 これはどの言語を扱っても当然行うべきことだと思いますが、プロダクトや事業のフェーズに合わせて、エンジニアが柔軟にロジックの形をアップデートしていきやすい言語だなと思っていて、個人的に好きなとてもポイントです。

Rubyの外観はシンプルです。けれど、内側はとても複雑なのです。 それはちょうど私たちの身体と同じようなものです - https://www.ruby-lang.org/ja/about/ より

実際、上で挙げた例の出荷方法の決定方法についても、最初は1つの方法しかなく特に意識せず、それが複数になってきたタイミングで課題が出てきて、モジュールとして切り出そうという流れで開発されました。その裏側にあるビジネスロジックを詳しく知らないエンジニアでも扱いやすくなるようなっていて、こういう動きは現在進行形で随所で行われています。

最後に

今回は、Ruby biz 2023の受賞に寄せて、ウーオでのRuby+周辺技術の活用について簡単にご紹介しました。引き続き、ウーオでは水産業の新しいインフラをつくっていくべく、どんどん価値あるサービスを開発していきます。

RubyRails を使ってサービス開発したい方はもちろん、Ruby 未経験でも水産業の課題解決に興味があるエンジニアの方もぜひご応募、ご連絡お待ちしております!

*1:今回、上述したRails等を含むフレームワークやHeroku等を総称して周辺技術としています

*2:当然初期のフェーズでインフラエンジニアを採用していく余裕もなかったのもあります