1
/
5

学校で学んだプログラミングを使って新機能を実装してみた🙌

こんにちは!エンジニアインターン生の宮岸大輝です。

今日は前回の記事でも少し紹介した、私がウーオでインターンを始めてから取り組んできた、
"売り情報一括配信機能"の開発についてまとめたいと思います。

RubyもRailsも未経験の私がウーオでエンジニアインターンシップを初めて1ヶ月経った話 | 株式会社ウーオ
初めまして!今年の4月からウーオでエンジニアインターンに参加している宮岸大輝です。現在は既存のWebアプリ(uuuo.jp)の機能追加や改善を行っています。このWebアプリはRuby on Ra...
https://www.wantedly.com/companies/uuuo/post_articles/170516

開発の経緯📖

ウーオでは毎朝6時30分頃に鳥取港にその日水揚げされた魚種とその数量をLINE@で配信しています。
また、7時15分に売り情報をuuuo.jpでは売り情報を配信しています。
これらのLINE@の配信や売り情報は、鳥取市にある出荷拠点「UUUO Base」で働いているバイヤーチームの社員さんが毎朝手入力で行っています。
特に売り情報の入力は魚種と画像を一つ一つ行う必要があり、現状は時間がかかっています。

UUUO スマホでつながる水産市場
2019/07/11の売り情報です!
https://uuuo.jp/selling_informations/today

この現状を見たとき、「LINE@で配信するメッセージを使って、売り情報を一括配信できれば便利じゃない?」と思い、売り情報一括配信機能を提案しました。そして、私がその機能を開発することになったのです!\(^o^)/

アイデアを実装💻

やることは決まったので、さっそく開発に取り掛かりました。
まずは、現状LINE@で配信されているメッセージの形式について分析してみることにしました。


LINE@の配信されているメッセージを見ると、魚種の情報は"(魚種)(数量)(単位)"という形式に統一されています

# LINE@で配信されているメッセージの例

【鳥取港セリ・8時開始】
おはようございます!
本日8時より鳥取港セリが開始します。
7時15分頃に、魚の写真を共有します。
問い合わせお待ちしてます!


【釣り・刺し網・カゴ・潜り】
ケンサキイカ189ケース
マダイ19ケース
ハマチ413ケース
...
活魚34セット

この仕様をうまく使えば、LINE@のメッセージから売り情報を簡単に抽出することができそうです。
ざっと見たところ(社員さんにも一応確認した)現状使われてる単位は"ケース"または"セット"のみ。
従って、まずは単純に、"ケース"または"セット"という文字列が含まれる行のみを抽出します。

# "ケース"または"セット"という文字列が含まれる行のみを抽出

ケンサキイカ189ケース
マダイ19ケース
ハマチ413ケース
...
活魚34セット

次に、正規表現を用いて各行を["魚種", "数量", "単位"]という形式の配列になるように分割します。
"数量"は必ず[0-9]の文字から始まり、"魚種"や"単位"に[0-9]の文字列が含まれることは無いため、この仕様を使って配列に分割しました。

# 正規表現を用いて各行を["魚種", "数量", "単位"]という形式の配列に分割

[
 ["ケンサキイカ", "189", "ケース"],
 ["マダイ", "19", "ケース"],
 ["ハマチ", "413", "ケース"],
 ...
 ["活魚", "34", "セット"]
]

あとは、この配列の内容を元に売り情報controllerのcreateメソッドを繰り返し呼ぶだけです。

ロジックだけを見ると、大学の課題とかでよくありそうな感じですが、慣れないRubyとRailsにかなり苦しめられました。
MVCモデルは慣れれば可読性と保守性の高いコードが書けるのでしょうが、慣れないときは、どこにどんなコードを書いてよいのか分からず、コードを眺めているだけでとんでもない時間が過ぎていたときもありました😥

祝🎉リリース 現場からの手厳しいフィードバック😢

なんとか上記で紹介したロジックで実装とテストを終え、無事にリリースしました。

宮岸:これで売り情報配信作業は楽になるだろうな😌

そんなことを考えていた私でしたが、現実は厳しかったのです。

バイヤーチーム:一括で配信されるので、配信漏れが減りそうです😁
宮岸:(うんうん良かった😌)
バイヤーチーム:ただこれ、前より時間かかるよ😅
宮岸:・・・

せっかくリリースした機能でしたが、バイヤーチームからのフィードバックは手厳しいものでした。
事前に価値検証(宮岸「こういう機能あったら便利ですかね?」->バイヤーチーム「便利そうだね〜」)はしていたので、「どうしてだよぉぉ゛ぉ゛ぉ゛ぉ゛ぉ゛ぉ゛」って感じでした😫

原因は実際にバイヤーチームが行う操作をよく考えていなかったのが原因でした。
一括配信による方法(水揚げされた全魚種の売り情報を配信してから、各魚種の写真を選択)よりも従来の方法(魚種と写真を選んで一つ一つ配信)の方がバイヤーチームにとっては良かったようです。
(一括配信機能に慣れていないというのもあるかもしれない・・・)


ただ、バイヤーチームからこうすればもっと良くなりそうという具体的かつ的確なフィードバックを頂きました!
現在はバイヤーチームのフィードバックに沿って改善を続けています💻

どのフィードバックも「確かに!!」と納得するものばかりなので、自分の提案がきっかけでスタートした機能がどんどん便利なものになっていく気がします!
控えめに言ってとても楽しいです\(^o^)/

学んだこと⏫

  1. 価値検証は最初に念入りにするべし
  2. 実際にシステムを使う人のこと1番に考えるべし
  3. 開発に行き詰まったら、周りに聞くべし

まとめ

一括配信機能はまだまだ改善するところはたくさんあり、現在は改善とフィードバックを繰り返しています。自分で提案して自分で実装して自分で改善していく過程は非常に楽しいです!
なかなかインターンシップでここまで実務に近い(というより実務)プログラムを書くことができる会社は少ないと思います!(特に広島では)

学校でもプログラミングは学べますが、やはり実際に使ってもらう人がいるとやる気が出ますし、責任もあります。ただ、そのような環境に身を置くことで成長することができているとウーオでインターンシップを始めてから感じています。

学校で学んだプログラミングがどのように世の中で使われているのか知りたい方、実務でのプログラミングを経験してみたい方、魚や釣りが好きという方、ウオ会に行ってみたい方、、、

ウオ会 Vol.3 絶品!ハタハタのお刺身, ブリ大根 etc... | 株式会社ウーオ
第3回ウオ会を開催しました!こんにちは!ウーオ株式会社インターン生の林です。毎月月末最後の金曜日に行われているウオ会も3回目を迎え、僕自身も2度目の参加となりました!ウオ会とは、鳥取港で水揚げさ...
https://www.wantedly.com/companies/uuuo/post_articles/167756

是非お気軽にお問い合わせください🙌

株式会社ウーオ's job postings
2 Likes
2 Likes

Weekly ranking

Show other rankings
Invitation from 株式会社ウーオ
If this story triggered your interest, have a chat with the team?