UUUO Tech Blog

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

JaSST'26 Kansaiに参加してきました 〜「説明できるテスト」と「未来を語るふりかえり」〜

はじめに

こんにちは。UUUOでQAテスターをしているさよりと申します。

前職ではネットワーク機器・サーバー機器の組込みソフトウェアテストを約1年半経験し、現在はUUUOでスマホアプリとWebアプリのQAを担当して1年3ヶ月ほどになります。

今年度は「QAテスターからQAエンジニアへ」を目標に掲げています。

ただ、日々の業務の中だけでは、自分のやり方が世の中のQAの標準から見てどうなのか、なかなか確かめる機会がありません。

そんな中、2026年7月3日に開催されたJaSST'26 Kansaiに参加してきました。あわせて、testingOsakaさん主催の「QAなんもわからん会関西'26」にも参加したので、記事の最後に番外編として紹介します。

想像以上にたくさんの持ち帰りがあったので、参加レポートとしてまとめます。

イベント概要

JaSST(ソフトウェアテストシンポジウム)は、NPO法人ASTERが主催する国内最大級のソフトウェアテストのシンポジウムです。全国各地で開催されていて、今回参加したのはその関西開催です。

多くのセッションに参加しましたが、この記事では特に印象に残った3つのセッションを中心に紹介します。

基調講演 セッション S1-A『AIに負けない』より『AIと遊ぶ』〜ワクワクが最強のテスト・QA学習戦略〜

DMM.com、ASTER 大段 智広さんによるセッションです。テスト設計コンテストの実行委員も務められている方で、ご自身の実践事例も交えた講演でした。

キーメッセージは「AIと遊ぶ」。

義務感や強制による学習は短期間しか続かない。「やってみたい」という自発的なワクワクこそが、長く学び続けるための鍵だという話でした。

印象的だったのは、AI時代の個人学習ロードマップです。「基礎を固める→AIを使いこなす→開発全体に波及させる→組織の仕組みを作る」の4ステップで、ステップを飛ばすと成長が止まってしまうとのこと。

特に刺さったのは、最初の「基礎を固める」の位置づけです。

テスト設計技法や共通語彙といった基礎は、AIの出力を論理的に評価するための基準になり、AIが使えるから基礎が要らなくなるのではなく、むしろ基礎が効いてくるそうです。

AIを使えば基礎がスキップできると勘違いしがちですが、AIを上手に使っていくためにも基礎を固めていく必要があるとひしひしと感じました。

デモではAIによるテスト環境のセットアップが従来の3時間から約3分に短縮され、仕様書から約80件のテストケースが自動生成される様子も紹介されました。一方で、仕様書と実システムの乖離により実装と合わないテストが生成されるなど、実践して初めて見える落とし穴も率直に共有されました。

「今日か明日から、AIを使ったテストを1つ試してみる」

講演で提案されたこの最初のアクションを私も持ち帰ることにし、まずは小さな1ケースから試してみようと考えています。

テーマセッション S2-A「テスト設計の本質を改めて考えてみる」

株式会社ベリサーブ 山崎 崇さんによるセッションで、今回一番刺さったセッションになります。

こんな経験はないでしょうか。テスト技法を勉強したのに、いざ実務になるとどこでどう使えばいいのかわからない。生成AIにテストケースを作らせてみたものの、それが妥当かどうかを自分の言葉で説明できない。

この講演は、そんな「あるある」な課題感から出発します。

テーマは「テストベース(仕様書など、テストの元になる資料)から『なぜこのテストでいいのか』を説明できる、説明性の高いテストケースをどう導くか」。

テストケースはある日突然ポンと出来上がるものではなく、本来は「テスト分析→テスト設計→テスト実装」という段階を経て作られるもの。この過程を省略せずに丁寧に踏むことこそが、「なぜこのテストでいいのか」を説明できるようになる道筋なのだと、順を追って解きほぐしていく内容でした。

聴き終えたとき、「説明性の高いテストケースを作れるようになりたい」と強く思いました。これは今の私の、今年度一番のテーマになりそうです。

「正しいテスト」は存在しない

一番印象に残ったのは、「正しいテストは存在しない。重要なのは『なぜこのテストで十分なのか』を説明して、関係者に納得してもらうこと」という考え方でした。

この視点は、私の今年度の目標にそのまま重なります。

確認手順書を整備してチームに共有するということは、「なぜこの確認で十分なのか」を自分以外の人にも伝わる形で言語化することに他なりません。説明できない手順書は、結局「書いた人に聞かないと使えない」属人的なものになってしまう。

属人化を防ぐ鍵は、手順の量ではなく説明性なのだと気づかされました。

PdMや開発と品質観点で対話することも、突き詰めれば「テストの根拠を説明して、関係者に納得してもらう力」です。バラバラに見えていた目標が、「説明できる」という一点で繋がった感覚がありました。

テスト設計の前に「テスト分析」

もうひとつの学びは、テスト設計の前段階である「テスト分析」の重要性です。設計の前に、どれだけ対象の解像度を高められるかが勝負、という話でした。

特に「テストベースは開発のために作られていて、テストに都合の良い構造にはなっていない。だからテスト視点で再構造化する必要がある」という指摘には考えさせられました。

テストベースを読みながら3色ボールペンで書き込み、積極的に“汚しながら”読む。そんな実践的な話も紹介されていて、明日から真似できそうだなと感じました。

私は普段コードを書かない立場なので、テストベースをどう読み解くかがQAとしての生命線になります。

「読む」から「分析して構造化する」への意識の切り替えが、説明性の高いテストケース作りの第一歩になりそうだと感じました。

生成AI時代のテスト開発プロセス

生成AIにテストベースを丸ごと渡してテストケースを出力させても、その妥当性を人間が判断できない。そんな問題提起もありました。

解決の方向性は、中間成果物を段階的に出力させて、その都度確認・修正するプロセスを設計することです。

私自身の業務でのAI活用は、まだ価格計算の検算を手伝ってもらう程度です。それでも、一度に全部を任せるのではなく、中間の結果を確認しながら進めるという考え方は、これからAI活用を広げていくうえでの指針になりそうです。

「プロセスが設計できていれば、AIにやらせる場合も人が自分でやる場合も道筋を描ける」。この言葉は、AI活用と自分のスキルアップを対立させずに考えるヒントになりました。

テクノロジーセッション S7「ふりかえりが「生存報告」から「未来の話」に変わるまで」

株式会社 bubo 小野 凌 さんによるセッションで、タイトルが気になって聴講しました。

皆さんのふりかえりは、「今週はこれをやりました」という“生存報告”になっていないでしょうか。私は正直、心当たりがありました。

印象に残ったのは、ふりかえりを未来の話に変えるためのAIとの組み合わせ方で、下記のように実施します。

  1. Fun Done Learnのふりかえり結果をAIに分析してもらう
  2. 日報もAIで分析し、「今の自分」を可視化する
  3. そこから成長のヒントを拾ってもらう

ふりかえりの記録を「書いて終わり」にしない。AIに分析させることで、自分では気づけないパターンや次の一歩が見えてくる。

過去の記録が「未来の話」の材料に変わる、というのが目から鱗でした。

そして、これを続けるための心構えとして語られたのが「小さくやる」「完璧を目指さない」「最小単位でやる」、そして「困った時は頼る」。

この言葉は、私にはふりかえり以上に、テスト設計の学び方へのヒントとして響きました。

テスト設計のセッションで「説明性の高いテストケースを作れるようになりたい」と思ったものの、正直、道のりは長そうに見えていました。でも、最初から大きな機能の完璧なテスト設計を目指す必要はない。

小さな機能をひとつ選んで、テスト分析から設計までを最小単位で回してみる。「説明できる範囲」を少しずつ広げていく。そして行き詰まったら一人で抱え込まずに頼る。

そう考えると、遠くに見えていた目標に向かう最初の一歩が具体的になった気がします。

その他の参加セッション

上記のほかにも、次のセッションに参加しました。簡単に概要と感想を紹介します。

コラボセッション S4-A-4 要求とテストのMIRAI~生成AI時代の開発における要求とテストの新しい関係

派生開発推進協議会 代表 / エクスモーション エグゼクティブコンサルタント 斎藤 賢一さんとJaSST Kansai 実行委員長/派生開発推進協議会 堀川 透陽さんのコラボセッションでした。

前半はテストの各工程でAIがどこまで使えるようになっているか、後半は要求を整理して書く記法「USDM」と生成AIの相性の良さについてのセッションでした。テストは要求を確認するだけの後工程ではなく、テストの視点が要求をより良くしていく、という関係の変化が語られました。

これからは仕様を「書ける人」より、AIが書いたものが正しいか「確認できる人」が大事になる。この言葉が心に深く残りました。

テクノロジーセッション S5-B-1 ブラックボックステスト偏重を超えて ―グレーボックステストから考える、これからのテスト設計―

株式会社iTest 田嶋 享平さんのセッションです。

仕様書だけを頼りにするブラックボックステストでは、内部の状態の切り替わりや機能同士の連携に潜む不具合を見つけにくい。そこで、設計情報を必要な範囲だけ取り入れる「グレーボックステスト」でリスクを捕まえよう、という内容でした。

仕様書だけで作ったテストにグレーボックスの視点を加えたら、実際の不具合につながり得る観点が見つかった、という実験結果も紹介されました。

前職が組込みテストだったこともあり、「仕様書をなぞるだけでなく、仕組みを理解して不具合を探しにいく」という考え方がとても身近に感じられました。

テクノロジーセッション S6 AI駆動開発におけるQAエンジニアの役割事例

JSTQB技術委員&広報 小林 依光さんのセッションです。

テストの計画・設計・実行をAIが担い、人間は「AIがやったことをチェックしてOKを出す役」に変わりつつある。そんな時代にQAエンジニアはどこで価値を出すのか?という問いに、現場の実例で答える内容でした。

答えとして提案されていたのは、経験や勘でやっていた「どこが危なそうか」という判断を言葉やルールに書き出してAIでも判断できるようにする役割(QE)と、そのルールが自動で回る仕組みを作る役割(QAHE)へのシフト。たとえるなら、レシピを書く人と、そのレシピ通りに動くキッチンを作る人です。

AIに仕事を任せるには、まず自分の頭の中にある判断を言葉にできないといけない。テスト設計のセッションで感じた「説明できること」の大切さに、ここでもつながりました。締めくくりの「変化に対応するために基礎力をUP」というメッセージは、これからJSTQBを学ぼうとしている自分への応援のようにも聞こえました。

招待講演 S8 AI時代における最適なQA組織の作り方

freee株式会社 湯本 剛さんのセッションです。

約130名という大きなQA組織で、AI活用をどう広げてきたかの実践談です。仕事のやり方や成果物の形を揃える「型化」、AIに正しく判断させるための用語や仕様の整備、そして内製のAIアシスタントの運用まで、組織ぐるみの取り組みが紹介されました。

「型のある仕事ほどAIで速くできる」という話を聞いて、いま取り組んでいる手順書の整備が、将来のAI活用の土台にもなるのだと励まされました。

おわりに

JaSSTの各セッションから持ち帰ったことを、行動に落とすとこうなります。

  • テスト設計の学びは、小さな機能ひとつのテスト分析から。完璧を目指さず最小単位で始めて、困ったら頼る
  • 手順書の整備では、手順だけでなく「なぜこの確認で十分か」まで言語化して、属人化を防ぐ
  • テストベースは“汚しながら”読み、テスト視点で構造化する練習をする
  • 「AIと遊ぶ」気持ちで、まずAIを使ったテストを1つ小さく試してみる
  • ふりかえりや日報のAI分析を試して、自分のふりかえりも「未来の話」にしていく

日々の業務の中だけでは確かめられなかった「世の中のQAの標準」に触れて、目標に向かう最初の一歩がいくつも具体的になった一日でした。

番外編:QAなんもわからん会関西'26 での体験

ここからは、JaSSTとは別のイベントの話です。

QAなんもわからん会関西'26は、大阪・関西のテスト系コミュニティtestingOsakaさんが主催する、「大きな声で『わからん』と言える場所を作る」がコンセプトのイベントです。

当日はOST(オープンスペーステクノロジー)形式で行われました。OSTとは、参加者がその場で話したいテーマを提案し、提案者自身がセッションを立てて自己組織的に進めていく形式です。

「ここにやってきた人はだれもが適任者である」という原則のおかげか、初参加でも自然に輪に入れました。

いくつかのテーマに参加した中で、特に気になったのが「QAテスターからQAエンジニアになるには」というテーマです。

まさに自分ごとのテーマ。ここでは思い切って「わからん」を口に出しながら、社外のQAの方々と語り合いました。

nanmowakaran_kansai26

対話の中で特に心に残ったのは、次の2つの視点です。

  • 全体感を持って、目的意識を持ってテストしている人は、テスト実行者であってもエンジニアと呼べるのではないか
  • QAがCS(カスタマーサクセス)をやってもきちんと仕事ができるくらい、プロダクトへの解像度を持つ

2つ目の話は、個人的に特に刺さりました。というのも、私自身、テスト設計と業務理解のためにCSにチャレンジしてみたいと考えていたからです。

ユーザーからの問い合わせに答えられるくらいプロダクトを理解していれば、「ここで不具合が出たらユーザーはどう困るか」からテスト観点を考えられるはずです。

自分の中でなんとなく考えていたことが、社外の方の口からも出てきた。そのことで、進む方向に自信が持て、プロダクトへの解像度を上げるためのCSへのチャレンジも、持ち帰りリストに加わりました。

肩書きや役割の名前ではなく、「どういう視点で仕事をしているか」がテスターとエンジニアを分ける。この話は、テスト設計のセッションの「なぜこのテストで十分かを説明できること」ともつながっていると感じました。説明できるということは、目的から考えられているということだからです。

「わからん」と口に出せる場があること。そして、社外のQAの方々と話せることのありがたさ。それを実感した2つのイベントでした。

関西付近でQAに関わっている方には、JaSSTもtestingOsakaのイベントもとてもおすすめです!

ウーオにソフトウェアエンジニアとして中途入社して3か月でやってみたこと

はじめまして、山中です。
入社から3か月が経ち、プライベートでは魚を捌くことと業務ではRuby on Railsに少しずつ慣れてきました。少し遅いですが入社エントリとして、これまで取り組んできたことや学びについてお伝えします。

中途入社ですが、スキルセットとして即戦力とは言えません(詳しくは後述)。その中で、どうすればチームや会社に貢献できるかを考え、実行してみました。
転職直後の人にはどんなことができるのか?そんなことを考えている山中をウーオはどう受け入れてくれたのか?ということを紹介します。

自己紹介

あらためて自己紹介です。

プロダクトチームに2024年9月に入った山中といいます。

前職は小売業の会社で主にECサイトのバックエンドの運用保守をしていました。
具体的には、ECサイト用のWebAPIと、そのWebAPIが参照するDBや検索システム、DBや検索システムを更新するバッチを担当していました。
担当システムのミドルウェアやOSのアップデート、システムリプレースをするときにアプリケーションが正常に動くように修正して、テストをすることが多かったです。
EOL対応を数年連続していたので直近は、半分冗談半分本気で「俺がEOL対応エンジニアだ」とか言ってました。

メインで使っていたプログラミング言語Pythonです。

経歴を見直すと、新卒のときから今まで携わってきたプロダクトはすべて、作られてから10年以上のものでした。
開発スピードを維持しながら長くサービスを提供するうえで、ソフトウェアも運用作業も設計とテストは大事であり、そこはさらに磨いていきたいスキルだと考えていました。
加えて、まだまだ新しいことにも挑戦したいと思って転職することにしました。そのうえで、ウーオの事業や考え方が好きだったので、面接をお願いして今に至ります。

入ったばかりの場所でどう貢献するか?

さて、こんな私ですがウーオでなにをすることになったのかというと、Ruby on Railsで作られているプロダクトのバックエンドで機能開発を主にすることとなりました。

水産業の市場で例えるなら、以前は魚の売買に携わっていたのが、しばらくは冷蔵設備の入れ替えや間接資材の整理などの業務に専念しており、今回久しぶりに魚の売買を再開する状況でしょうか。

ごめんなさい、この例えはわかりにくいかもしれませんが、ご容赦ください。(言ってみたかったのです。)
つまりはソフトウェア開発という仕事の流れはおおよそわかっているが、詳細なところは慣れがないという状態です。
機能開発も数年ぶりです。
RubyRuby on Railsも業務経験はなく、入ったばかりのときは業務で使えるレベルではなかったため、他のメンバーからたくさんサポートをもらいました(これは本当に感謝)。また、業界が変わったため、ドメイン知識も不足しています。

中途採用でここまでガラッと変わる人はあまりいないかもしれませんが、多少は変化があってパフォーマンスや成果を出しにくい人は多いと思います。
一方で何もできないのかと考えると、そうではなく、できることがあって実施してよかったことを紹介します。

ポイントとして、以下の3つのステップで取り組んでいくとよかったです。

  1. 簡単で実績がある方法を導入してみる
  2. 途中から入ったからこそ見えたことを伝える
  3. 少しストレッチして実績がある方法を導入してみる

入って3か月間でやったこと

【ステップ1】簡単で実績がある方法を導入してみる

Slack絵文字にネコチャン絵文字を導入する

ウーオではSlackを使っています。前職でSlackやDiscordで使えるネコチャン絵文字が使われていて、コミュニケーションがいい感じになっていたので、入れました。

絵文字を入れたことを共有

これは今思うと勢いで入れた感じはありますが、振り返ると、良い成果が得られたと感じています。
ウーオは常に皆がオフィスにいるわけではありません。
リモートで働くときもあれば、市場や営業先にいくこともあります。オフィスにいることが多い人もいます。
そのため、少しでもテキストコミュニケーションが良い感じになったのはよかったと思います。

1on1を総当りでやってみる

水産業界では、漁師さんから消費地市場を経由して消費者に届くまででいろいろな職種の人が関わります。
ウーオ社外だけではなく社内にもさまざまな仕事をしている人がいます。
人によっては仲買人さんや荷受けさんと主に接したり、小売・飲食店と主に接する人もいます。
入社前にウーオのブログ水産流通のしくみ を読んでいたのですが、それでもわからないことが多かったです。

どうキャッチアップしていくかと考えていたときに、以前読んだブログの記事オンラインでも一人目職種のオンボーディングを成功させる知見を紹介しますを思い出しました。
わたしは一人目職種なわけではないのですが、

仕事の話をしようにもお互い「知らない人」だとうまくコミュニケーションを取れないことが多いので、1on1で人となりをまず知る / 知ってもらうことが大事です。

という点は同じだと考え、やってみました。

ちょうど入社して2週間目に広島本社出張があって、対面でできる方とは対面でリモートや東京本社の方々とは、オンラインで実施しました。どの方も当初予定の時間45分オーバーするくらい話をしてもらえて、どういうところで連携できそうか、新しく入った山中というやつはどんなやつかっていうのをざっくり知ってもらえました。
また、自分自身も他の人の業務の具体や、考え方を知ることで、MTGで顔を合わせて話しかけるときの心理的なハードルは低くなったと思います。

パラメータ化テストを書く

さて、ようやくここから、ソフトウェアエンジニアっぽいことの紹介をします。

別にそうやらなくても困らない、けど知っているとちょっと楽というものはあります。
細かいところで言えば、なにかのショートカットコマンドやシュガーシンタックスなど。ウーオはテストコードを書く習慣があって、テストケースも充実しています。
ただ、意外にも以下のように書いているテストコードがありませんでした。

    [
      %w[SendGridがJSONのTOPレベルから仕様と異なるものを送ってきたとき SendGridの署名が有効なとき],
      %w[SendGridが仕様通りのパラメータを送ってきたとき SendGridの署名が無効なとき],
      %w[SendGridがJSONのTOPレベルから仕様と異なるものを送ってきたとき SendGridの署名が無効なとき]
    ].each do |event_type, signature_type|
      context '異常系のとき' do
        include_context event_type
        include_context signature_type
        it '400を返す' do
          post webhooks_sendgrid_path, params: send_grid_request_param, headers: stub_headers
          expect(response).to have_http_status(:bad_request)
        end
      end
    end

別にこれは、以下のように書いても大きな問題になりません。

     context '異常系のとき1' do
      include_context 'SendGridがJSONのTOPレベルから仕様と異なるものを送ってきたとき'
      include_context 'SendGridの署名が無効なとき'
      it '400を返す' do
        post webhooks_sendgrid_path, params: send_grid_request_param, headers: stub_headers
        expect(response).to have_http_status(:bad_request)
      end
     end
     context '異常系のとき2' do
        include_context 'SendGridが仕様通りのパラメータを送ってきたとき'
        include_context 'SendGridの署名が無効なとき'
        it '400を返す' do
          post webhooks_sendgrid_path, params: send_grid_request_param, headers: stub_headers
          expect(response).to have_http_status(:bad_request)
        end
      end
      ...

この書き方はライブラリを入れずとも導入できるコストの低いことであり、 テストコードが見やすくなると言っても少しずつです。それでも大事だろうと考え、書いてPRをだしたら、すっと承認されてちらほらと他にも同じ書き方のコードが見えたのは嬉しいところでした。

【ステップ2】途中から入ったからこそ見えたことを伝える

言葉の認識合わせをしていく

プロダクト開発に何年か携わっている人であれば「アジャイル開発のスクラム」と言うと、おおよそどんなことをやるのかイメージは一致すると思います。

ある言葉や、やり方が組織内で使われるうちに、もとは一般的な意味だったのに徐々に別の意味に変わることがあります。
これは必ずしも悪いことではありませんが、同じ言葉でも指すものが異なるとコミュニケーションに支障が出ることがあります。とくに新しい人が入ったときに問題になりやすいです。

そういったことを解消していくためにも、違和感があったら

というのは確認していくようにしました。
自分自身もチームに馴染めるように理解を深めるのと、チームの人にもなにかしらプラスになると思うので進めていきました。

前職での事例を紹介する

業界が違うと言っても、大きな括りで言うとeコマースに関わる仕事という点では同じです。

たとえば振り返りとしてこんな取り組みをしていたということを以下のように共有しました。

実践したことがある振り返り手法を共有

ちなみに前職でやっていた事例を紹介するときに、どこまで話していいかは法務にくわしいコーポレートチームに相談してから、共有しました。

分報チャンネルで悩みをポツリと呟いていたら、スッとコーポレートチームのメンバーが現れて相談に載ってもらえました。ありがたかったです。

【ステップ3】少しストレッチして実績がある方法を導入してみる

GitHub Copilotを導入する

最後は、少しストレッチして実績がある方法を導入してみた例の紹介です。

GitHub Copilotは前職でも学ぶのにも業務を進めるにもすごく便利でした。前職では、GitHub Copilotを導入すると受けられる恩恵のポイントをスーパーなエンジニアの人がサッとまとめて、あっという間に導入してくれました。

正直当時の自分ではそんなにうまくはやれないと思います。
ただ、今の自分なら少しスキルはあがっているし、導入先の組織や状況は違いますがそれをお手本とできます。自分も他のメンバーも業務効率改善にもなるため、これならば頑張ればいけそうだと考えてメンバーにアンケートをSlackで取って、CPOの土谷さんに相談してお試しで導入しました。2か月ほど試用してもらい、アンケートをとり、(厳密に時間を測ってはないですが体感で)平均1日30分以上は作業時間の短縮ができたとアンケートで回答をもらえて、それならばOKということで導入できました。

こういうのは、転職して働く場を変えたときだからこそできることだと思います。
企画、導入、検証までの1サイクルを体験できるのは、個人としてもスキルアップにいいです。
また、新しい環境で一連の流れを実施するにはどんな感じで進めるのかを知る良い機会にもなるので、転職したての方はなにかしら、やってみるチャンスだと思います。

振り返りと感謝

たった3か月、されど3か月。

上記以外にもいろいろとチャレンジさせてもらえました。 転職したばかりだからできるチャレンジがけっこうできて、充実した3か月を過ごせました。

これは決して自分の力だけではなくって、そういうチャレンジを受け入れてくれる環境がウーオにあるからできたのだと思っています。 わかりやすいところだと、1on1とかアンケートは絶対に独力ではできません。 それ以外も全部自分で考えたのではなく、アドバイスを適切にもらえたので実現できました。

チャレンジしたいことを詰め込みすぎて、混乱を招いたところもあります。(1on1で予定いっぱいになった日とかあったり・・。) そこは優先順位の付け方で大いに反省すべきところなので、冷静に見直しつつ、メイン業務でも貢献できるようにします!

まとめ

入ってから3か月間で何をしてどうなったのか?ということで、自分自身が今まで周囲の人から学んだことや良いと思ったことを実践したことを紹介しました。

ポイントは、導入・実施コストやリスクが低いものからしていくことです。 個人としてはなにかを導入するファーストペンギンとなる経験を積めます、 周囲のメンバーに効果は低いかもしれませんがマイナスになりにくいです。

これは、ウーオのValuesの「まずは小さな1ケース」に近いと思っています。

これからケースをたくさん積んで、成果が出せたときにはまた記事を書きます!

最後に最近作った魚料理です。富士山サーモンを自分で捌いてパン粉焼きにしました。めちゃくちゃおいしかったです!

捌いたサーモンをパン粉焼きに

飲食店の皆様!サーモンの仕入れは こちら から!(※現在個人でのウーオのご利用はできません)

app.uuuo.jp

Rails6.1のままRuby3.0からRuby3.2にアップグレードしました

こんにちは!

はじめまして。ウーオのソフトウェアエンジニアの毛利(@morieeeenyo)です。6月に入社しました。

初回なので簡単に自己紹介させていただければと思います。

1996年、広島県生まれ。3歳〜18歳まで岡山で育った生粋の瀬戸内っ子です。

営業やバックオフィスなどエンジニア以外の職種を経験してからエンジニアになり、 DX支援を行う会社で教育・人材領域を中心にWebアプリの新規開発をしたり、グロースフェーズの社内ベンチャーに参画してスクラムによるアジャイル開発をしたりしていました。地元瀬戸内の企業で働けること、エンジニアがビジネスチームやエンドユーザーと接しながら裁量高く働ける環境に魅力を感じ入社しました。

これからよろしくお願いいたします!

今回の記事ではウーオのRubyアップグレードについて書かせていただければと思います。

Rubyアップグレードを行った背景

Rubyのアップグレードを行なった背景としては、インフラのアップグレードに伴いRubyのバージョンも一緒にあげよう!となった形になります。アップグレード先のRubyのバージョンとしてはYJITが使える最低限のバージョンということで3.2を選びました。RailsについてはRails7ではWebpackerが廃止されるなど大きく変更が必要そうであったことを鑑みて今回のアップグレード作業のスコープからは外し、今後段階的にアップグレードしていくことにしました。

なお、Rubyアップグレードを任された当時、私は入社2週間も経っていない頃。まだキャッチアップすべきことだらけで右も左もわからない中、突然メンションが飛んできました。

とんでもないメンションが飛んできたぞ・・・と面食らったのをよく覚えています。 正直Rubyのアップグレードは他の人のPRをレビューしたことがある程度で、自分でゼロからやったことは無かったのですが、ドメイン知識に依らない技術的な課題解決は入社まもない自分にとってチームに貢献する数少ないチャンスだ!と思って手を挙げてみることにしました。

Rubyアップグレードの進め方

ウーオのプロダクトチームでは「開発・プロダクト品質向上タイム」という時間を2週間に一度設けています。 これは機能開発以外の不具合の修正やリファクタリング、社内ドキュメントの整備など緊急ではないが重要なことに使う時間で、定期的に枠を設けることによって強制的に品質向上に時間を使えるようにするために実施しています。 今回のRubyアップグレードもこの時間を活用して進めました。

丸一日時間を使えるとはいえ集中して時間を使えるのは2週間に一度しかないため限られた時間でなるべくリリースReadyな状態を作ることを意識して進めました。

具体的には

  • アプリが正しく動作すること
  • デザイン崩れを起こしていないこと
  • CIが通ること
  • ローカルの開発に支障ないこと

を優先的に達成できるようにし、gemやnpm packageのバージョンに起因するWARNINGの解消などは後に回すようにしました。

具体的な作業内容

ここからはRubyをアップグレードするために具体的に行った作業を記載していきます。

Ruby3.1へのアップグレード

Ruby3.2にアップグレードするにあたり、3.0→3.1→3.2と段階的にアップグレードするようにしました。具体的にはmasterブランチからRuby3.1アップグレード用のブランチを切り、そこからさらに3.2にアップグレードするためのブランチを切るという形にしました。これにより、修正内容がRuby3.1へのアップグレードによるものなのか3.2へのアップグレードによるものなのか特定しやすくなります。

1. Dockerのビルドを通せるようにする

ウーオではバックエンドをDockerを用いて開発しています。

そのため、まずはDockerで使うRubyのイメージを変更してビルドを通すところから始めました。

- FROM ruby:3.0.3-alpine3.14
+ FROM ruby:3.1.6-alpine3.20

Dockerで使えるRubyイメージはDockerのOfficial Imagesのサイトから探しました。

イメージを変更したら以下を実行します。

docker compose build --no-cache

するとビルド時のコマンドのどこかしらでエラーが発生するのでこれをひたすら直していきます。

今回のアップグレードでは具体的には以下の2点を修正しました。

  • Node.jsのバージョンアップ
  • python2→python3への変更

Node.jsのバージョンアップを行なったのは当時採用していたNode.jsのバージョンがalpine3.20では使えなかったためです。またNode.jsをアップグレードする際にpython2→python3へのアップグレードが必要になったので併せてアップグレードしました。

使用するNode.jsのバージョンは他のパッケージとの依存関係的に20.13.1を使うのが都合がよさそうだったので、yarn installを通すのに苦戦しない限りはそれを使おうと考えました。

Node.jsのバージョン変更の結果として、yarn installでWebpackerの依存関係のエラーが出たので Webpackerのバージョンアップを行いました。メジャーバージョンを変更しないのであれば大きくは挙動には影響しないはず、という考えから当時使用していた5系の最新版(5.4.4)にアップグレードしました。

ここまで対応した段階でDockerのビルドが通りました。

2. ローカルで動作確認

Dockerのビルドが通った後、軽くローカルで動作確認を行いました。

Webpackerをアップグレードした影響でCSSが正しく当たらなくなったので調査しました。

具体的にはアプリケーションコンテナの中で以下のコマンドを実行し、出てきたエラーを解消していきました。

bin/webpack-dev-server

するとSCSSファイルのインポートでエラーが発生していることが確認でき、修正を実施しました。

3. RuboCopのTargetRubyVersionを上げる

ローカルで問題なく動作してそうなことを確認したので、次にCIを通します。

CIを通すためにまずはRuboCopのTagetRubyVersionを上げました。

.rubocop.yml

- TargetRubyVersion: 3.0.3
+ TargetRubyVersion: 3.1.6

RuboCopでは以下の二つのルールに引っかかりました。

  • Style/HashSyntax
    • EnforcedShorthandSyntax オプションが導入され、デフォルト値alwaysを用いる場合キーワード引数のKeyとValueが同じ名前の場合にValueが省略されます
    • .rubocop.yml の設定でValueを省略しないことを強制することもできます
  • Layout/MultilineOperationIndentation
    • 一つの処理が複数行にまたがる場合にインデントを揃えてくれます

これらはいずれもauto-correctableとのことで、作業が複雑にならずホッとしました。

4. RSpecを通す

ウーオのCIではRuboCopの他にRSpecも実行しています。

Ruby 3.1.6へのアップグレードでは特にRSpecでのエラーは発生しませんでした。

Ruby3.2へのアップグレード

3.1で動作やCIの実行結果に問題ないことを確認したのち、3.2へとアップグレードしました。

3.2でも1~4の手順を行います。

3.1へのアップグレードとの違いとして、RuboCopのTargetRubyVersionに3.2.4を指定するためにrubocop gemのアップデートが必要になったのでアップデートしました。

また、Ruby3.2のscopeでキーワード引数の扱いの変更され、scopeでキーワード引数を使うとArgumentErrorが出るようになってしまいました。

具体的には以下のようなスコープを実行すると wrong number of arguments (given 1, expected 0; required keywords:role) (ArgumentError) というエラーになりました。

class User
   scope :with_role, ->(role:) { where(role: role) }
end

User.with_role(role: :admin)
=>wrong number of arguments (given 1, expected 0; required keywords:role) (ArgumentError)

そのため以下のようにキーワード引数を使わない実装に変更しました。

class User
   scope :with_role, ->(role) { where(role: role) }
end

User.with_role(:admin)

RSpecでこれが原因で多くのエラーが発生したのですが、こちらのissue等を見るとこのエラーはどうもRuby3.2 + Rails6.1.7の組み合わせで起こり、Railsをアップグレードしないと解消されなさそうでした。そのため、キーワード引数を使っているscopeをgrepしては修正して、を繰り返しました。(これは結構骨が折れました…あとテストコードをちゃんと書いてて良かったと思いました)。

grepする際は 以下のコマンドでリポジトリを検索しました。

git grep -E "scope :.*:.*(\{|do)"

5. リグレッションテスト

Ruby 3.2でCIが通ったら実際にデプロイします。

Rubyアップグレードはアプリ全体に影響があるため、QAエンジニアによるリグレッションテストも行いました。ウーオではリグレッションテストの項目をNotionのテンプレートを用いて管理しており、変更の影響範囲に応じて誰でもリグレッションテストを実施できる仕組みを構築しています。

6. 無事にリリース

リグレッションテストで発見したバグの修正完了後、無事リリースを迎えることができました。

まとめ

今回はウーオのRubyアップグレード対応についてまとめました。

実装開始から1ヶ月でリリースを迎えることができましたが、機能開発と並行して進めていたことを考えるとスピード感を持って対応できたのではないかと思います。影響範囲が広く開発着手時は不安な点もありましたが、CIによる自動テストやリグレッションテストのおかげで安心してリリースを迎えることができました。

ウーオのプロダクトチームでは「技を磨き、持続可能なものづくりを追求しよう」というValueを掲げており、今後も持続可能な開発のためにテストの拡充やライブラリのアップデートを積極的に行っていきたいと思います 💪

※プロダクトチームのValueについては以下の記事をご覧ください! tech-uuuo.hatenablog.jp

最後までご覧いただきありがとうございました!

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

水産流通を革新する自社プロダクトを開発!サーバーサイドエンジニアを募集! - 株式会社ウーオのWebエンジニアの採用 - Wantedly

水産の新しいインフラを作る、フロントエンドエンジニア募集! - 株式会社ウーオのWebエンジニアの採用 - Wantedly

水産業の課題解決をユーザー目線のUI/UXでリードするデザイナー募集! - 株式会社ウーオのUI/UXデザイナーの採用 - Wantedly

Flutterで水産DXアプリ開発!iOS/Androidエンジニア募集! - 株式会社ウーオのモバイルエンジニアの採用 - Wantedly

1日2時間〜遠隔での対応歓迎!水産流通DXを実現するアプリのテスター募集! - 株式会社ウーオのQAエンジニアの採用 - Wantedly

ウーオ プロダクトチーム Values を策定しました

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

note.com


こんにちは!

ウーオに入社した2019年から毎年「ワタリガニ仕入れてカンジャンケジャンを作りたい」と言い続けて、先日やっと実現できて嬉しい、土谷(@ta1haku)です!🦀

ブログの"オープニング"カンジャンケジャン

ワタリガニ、かわいい

あっという間に8月ですね!今回は、2019年にエンジニアとして私が入社してから、現在は総勢17名にもなるプロダクトチームにおいて、今年の5月以降取り組んでいたプロダクトチームの行動指針、通称プロダクトチーム Values の策定について、そのプロセスや策定した7つの Values についてご紹介します。

プロダクトチーム Values 策定の背景

先ほども紹介した通り、ウーオの開発チームは今業務委託の方を合わせると総勢17名です。また、職種もバラバラでエンジニア、デザイナー、PdM、QA等。当然ですがいるメンバーの出身組織もWebの制作会社、メガベンチャーSIer、スタートアップ、と規模も違えば業界やいるメンバーの職種も異なります。

そうした中、開発プロセスの中で意思決定をする際の判断基準が人によって異なってくることも多々出てきました。例えば一部を紹介すると、この機能は価値検証フェーズなのでリリースを最優先でするのか、既存のユーザの体験を守るためにリリースを先延ばしにして細かくQAしていくべきなのか、この機能をつくるべきか、そもそも作らずに検証できないものかまず模索しよう、等です。

ウーオで初めて一緒にプロダクト開発をするメンバーばかりですし、組織が大きくになるにつれ、こういう衝突はあって然るべきだと思います。そんな中、ウーオでのプロダクト開発において大事にしたいこと、を再定義していこうという動きをとることにしました。当時は、 バリューなのか行動指針なのか、曖昧でしたが、今ある会社の Values よりもう一段階具体度をあげた行動指針にしようと決めて動き始めました。

最終的には、「ウーオのプロダクト開発で大事にしていること」を言語化しておくことで、開発をする際の各プロセスで個々人が意思決定すべき時の拠り所だったり、判断する際の指針を組織に提供したいと思っていました。

ウーオの Values

進め方

下記のような進め方で、バリューを策定していきました。1-2のプロセス、割と日頃から開発の振り返りなどで利用しているKPT(Keep, Problem Try)の議論フォーマットのように進めました。

  1. 各メンバーが大事にしていることを付箋で共有していく
  2. 似たような内容はまとめて、グループ化する
  3. 特定メンバーで特に大事にしたい内容を取捨選択し、ワーディングする
  4. メンバーに共有しレビューをしてもらい、清書する

1-2のプロセスでのアウトプットの様子
普段リモートで働いていますが、ちょうど全社の合宿で集まる機会があり、合宿の翌日に疲れた身体に鞭を打ち広島オフィスでバリューについて考えました。

3に関しては、各メンバーに出してもらった内容を踏まえ、今のフェーズで果たして必要なのか、少し具体的すぎてバリューや行動指針としてはフィットしないのではないか等を議論してなるべく多くなりすぎないよう削ぎ落としていきました。

3のプロセスはFigJamを使って。

4に関して、言葉のニュアンスからそもそもの内容についてもレビューコメントをもらい、違和感なく言葉の意図が伝わるようにチューニングします。

メンバーから言葉遣いやニュアンスを中心にレビューをもらう

7つの Values

結果的に、この7つのプロダクトチーム Values が出来上がりました。

“あの人“にとって、なくてはならないをつくろう

今作ろうとしているものは、「誰のためのもの」なのか、自分がいま作ろうとしているものでその人は助かるのか、実際のユーザを想像しよう。

パソコン閉じて、市場に行こう

百聞は一見にしかず。誰かから聞いた情報だけで考えるのではなく、まずは自分の五感で現場を感じて一次情報を得よう。

オーナーシップを持とう

いわれた・決められているからやる、のではなく、また、誰かが答えをつくってくれるのを待たず、積極的に意見を伝えていこう。自分の想いを込めたプロダクトで価値を届けよう。

越境し、巻き込み合おう

自分やメンバーの強みを把握し、デザイン、開発、ビジネスなどお互いの領分だけに閉じず、強みを掛け合わせて1人では作れないものを作っていこう。周りを巻き込み、自らも巻き込まれよう。

小さな投資で、大きな学びを得よう

素早く、小さく試して、価値検証サイクルを回そう。速く学びを得て次の検証に繋げることは、爆速成長につながる。 どうすれば最速で学びを得られるか、模索しよう。

プロダクトの価値を高めるために、引き算を恐れない

機能が多い状態は時にユーザを迷わせる。価値から逆算して優先順位をつけ、仕様の複雑化を避けよう。初めて開いたユーザが迷わずやりたいことが理解できるプロダクトを目指そう。

技を磨き、持続可能なものづくりを追求しよう

今できるベストを尽くして、提供する価値の質をあげていこう。自らのスキルをアップデートし続けて、プロダクトの持続的な成長を実現しよう。

改めてざっと眺めてみると、非常にウーオらしいいいバリューができたなーと思うと同時に、プロダクトと組織が大きく成長しているんだなと感じました。例えば「パソコン閉じて、市場に行こう」は市場や港といったユーザの現場へ出向いてのヒアリングの機会が多くあるウーオらしいものですが、最近はUUUOとatohamaという複数プロダクトの開発チームがあること、また各プロダクトの中でもユーザの業態(例:飲食店向け等)によってチームが分かれているので、チーム間の連携について言及したものがあるのも特徴的です。また、プロダクトの機能や検証したい価値や体験も多岐にわってきたため、価値を見直して優先順位をつける意識や、ユーザ基盤も増えてきたため、より自分たちの技術的な成長に視点があるバリューもあります。

浸透させる

今回のプロダクトチーム Values は具体的な行動がイメージできるように作ったので文字数も多いため、各メンバー空で言えるくらい覚えていってもらう仕掛けも必要です。今ここは絶賛調整中ですが、Slack等での日々のコミュニケーションの中で触れる機会を増やしたいということで、早速@morieeeenyoがバリューに沿った行動が流れてくるSlackチャンネルを作ってくれたり、@misaaa09が振り返りなどで使うFigJam上にスタンプを作ってくれたりと気づいたら進めてくれていました。

リアクションすると転送されるプロダクトチーム Values のチャンネル

FigJamのお手製スタンプ

よりよい開発チームを目指して

今回は、ウーオメンバーが大事にしていることや、その言語化のプロセスについて方法について紹介しました。

いいプロダクトを作ることといい組織づくりは密接に関連していると思います。また、今回言語化したプロダクトチーム Values は、今と今後の組織において大事にしたいことのスナップショットです。ウーオは、「すべての街を、美味しい港町に。」するために各メンバーがオーナーシップを持って自発的に組織をよりよくしていくのが大事と思っているチームです。今の規模からさらに大きくなったり、いろんなバックグラウンドのメンバーがさらに増えて組織が成長するにつれ、どんどんアップデートしていければと考えています。

特に、今回の記事で、ウーオの大事にしたいこと、に共感された方や、実際の開発での活用など気になる方、ウーオのプロダクト開発に興味がある方はぜひ下記を覗いてみてください。

水産の新しいインフラを作る、フロントエンドエンジニア募集! - 株式会社ウーオのWebエンジニアの採用 - Wantedly

水産流通を革新する自社プロダクトを開発!サーバーサイドエンジニアを募集! - 株式会社ウーオのWebエンジニアの採用 - Wantedly

水産業の課題解決をユーザー目線のUI/UXでリードするデザイナー募集! - 株式会社ウーオのUI/UXデザイナーの採用 - Wantedly

Flutterで水産DXアプリ開発!iOS/Androidエンジニア募集! - 株式会社ウーオのモバイルエンジニアの採用 - Wantedly

1日2時間〜遠隔での対応歓迎!水産流通DXを実現するアプリのテスター募集! - 株式会社ウーオのQAエンジニアの採用 - Wantedly

最後に、この時期は夏枯れ*1で魚が少なくなってきていますが、7月はじめに捌いて食べた宮城のカツオが美味しすぎたので紹介しておきます。また次のブログをお楽しみに!

ブログのエンディングカツオ

*1:水産業では、本格的な真夏の暑い季節に魚があまり獲れなくなる事を【夏枯れ】と呼びます

Flutter の Expanded と Flexible の使い分け

こんにちは。最近はずっと Flutter を触っている石田 (@geckour) です。

今回は Flutter を触っている人なら誰しも一度は思ったことがある (と思っている) 「ExpandedFlexible ってどう使い分けるんだ?」について考えていこうと思います。

続きを読む

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

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

続きを読む