snaqme Engineers Blog

おやつ体験メーカー snaq.me エンジニアによる開発プロダクトブログ

おやつの会社のオペレーションにClaude Codeを入れてみた話

1. はじめに

スナックミーというおやつの会社でCTOをしている三好 (@miyoshihayato) です

今年の2月下旬から、オペレーション全体を自分が見ることになりました。製造・出荷・在庫・シフト管理、エンジニアとして関わってきた期間も長かったけど、「全体を回す」立場になったのは初めてで、かなり新鮮でした。

そのタイミングで、ずっとやりたかった「AIを社内に本格インストールする」という取り組みを始めることにしました。Devinでの非エンジニアの活用は昨年から始めていました。だが、痒いところに手が届いていない感じがあり、世の中のさまざまな動きからまずはオペレーション領域でClaude Codeを試してみることに。

この記事は、ここ1ヶ月でやってきたことの記録です。技術的な話というより、「エンジニアが現場に入ってみて気づいたこと」「AIを現場に入れるときに本当に大事なこと」を中心に書きます。

年末に書いたブログを読むとここの内容がもっと解像度上がります

labs.snaq.me


2. スナックミーのオペレーションって何してる?

スナックミーは、おやつの定期便サービスを運営している会社です。毎月、ユーザーの好みや苦手なものに合わせてパーソナライズされたおやつBOXをお届けしています。

オペレーションとして何をしているかというと、一言でいうとおやつの物流。

まず、キッチンがある。焼き菓子を手作りしていて、クッキーやバーなどを社内のキッチンで製造しています。それを袋に詰め、ラベルを貼り、BOXに梱包して出荷する、という流れがほぼ毎日動いています。

毎日の作業は大きく「製造」と「出荷」に分かれていて、それぞれに優先順位とルールがある。定期便・ストア・オフィス向けと複数のチャネルがあり、シフトに入るパートさんたちと一緒に回しています。

デジタルとリアル(おやつ)が混在しているのが、このオペレーションの面白さでもあります。システムで管理している情報もあれば、現場の感覚でしか持っていない情報もある。その混在をどう整理するか、が今回の取り組みの出発点でもありました。


3. エンジニアと現場のすれ違いを肌で感じた

エンジニアとして関わっていたころから、「EngとOPの目線が違う」と言うことに感じていました。でも、それを肌感覚で理解できたのは、実際に現場に入ってみてからです。

一言で表すなら、エンジニアは森を見て、現場は木を見ている

エンジニアは「システムを通して運用してほしい」と思っています。なぜなら、データが蓄積されれば分析できるし、のちの効率化につながるから。長期的な最適化に向けた投資として捉えている。

一方、現場のスタッフは「今日、正しく動けること」が最優先です。少し回り道になる動線や、慣れない操作を求められると、どうしても前向きになりにくい。今日の出荷が滞れば、お客さんに迷惑がかかる。それが大事。

どちらも正しい。でも、歩み寄れるポイントを見つけにくかった。

今回この両方の立場を行き来するようになって、気づいたことがあります。現場スタッフの技量は、想像以上に高いということ。

パートさんたちは、小さな商品の違和感に気づいたり、運用の改善案を自主的に共有してくれたりします。スピードも正確性も、エンジニアが「なんとなく早そう」と思っていた以上のものがある。

だとすれば、「現場と一緒にツール」を作れれば、むしろ早く広がる可能性がある。そこに可能性を感じました。


4. まず「本質」と向き合うことから始まった

Claude Codeを使い始めた最初の1週間、正直なところスキルやエージェントをとにかく作りまくっていた。現状の棚卸された業務について一つずつ「これも自動化できそう」「あれもAIに任せたい」という気持ちで。

でも途中でふと気づいた。何のために作っているのか、ちゃんと言えるか?

闇雲に自動化しても、現場の動きと噛み合わなければ意味がない。むしろノイズになる。そこで一度立ち止まり、「オペレーションの本質って何だっけ」という問いに向き合うことにした。

オペレーションの仕事は、突き詰めると「今日、正しくおやつを届けること」 に尽きる。製造・出荷・在庫・シフト、それぞれが複雑に見えるけど、すべてはその一点に向かっている。

そう整理すると、AIに何をやらせるべきかが自然と見えてきた。

  • 毎日変わるデータ(出荷件数、製造進捗、シフト状況)を集めて判断材料を作る
  • 現場スタッフが「次に何をすべきか」を迷わずわかる状態にする
  • ルールや例外をスタッフの頭の外に出す(ドキュメント化ではなく、聞けば答えてくれる形に)

本質がわかれば、作るものが絞れる。これがすべての出発点だったと思う。


5. Claude Codeをオペレーションに入れてみた

Claude Codeは、CLIで動くAIエージェントツールだ。コードを書くだけじゃなく、「スキル」と呼ばれる業務知識のかたまりを持たせることができる。

今回作ったのは大きく2種類。

① 毎朝のオペレーション確定レポート

製造・出荷・シフトの状況を各データソースから集めるSkillsを作り、「今日何をやるか」を1枚にまとめるエージェント。

毎朝手作業で確認していた「定期便の残件数は?」「製造の在庫は足りてる?」「今日のシフトは何人?」といった問いに、Claudeが自動で答えてくれる形にした。最初は「本当に信頼できるか?」と半信半疑で人力でダブルチェックしていたけど、1ヶ月経った今は精度が上がり、そのまま現場に共有できるレベルになってきた。

② 現場スタッフが使うスキル群

  • 出荷指示書の自動生成(定期便・ストア・オフィス向けそれぞれ)
  • 棚卸しリストのPDF出力
  • 製造指示書の作成(定期便用、clr bar、ストア)
  • 賞味期限管理リスト

これらはパートさんが直接Claudeに話しかけて使う想定で設計した。「コマンドを覚える」ではなく、「今日の作業を教えて」という感覚で動かせるように。

ここで少し立ち止まって考えたことがある。

エンジニアがGitHubでコードを管理するのは、「細かい仕様をすべて頭に入れておく」ためじゃない。コードを読めば逆算できる状態にしておくことで、誰でも理解できる・引き継げる・改善できる状態を保つためだ。

オペレーションも同じ構造にできるはずだ。ただし、コードで表現できるのは「仕様」であって、「なぜそうなったか」という意思決定のプロセスや現場の文脈はコードに落ちない。

ここをスキルやサブエージェントで持つことで、「なぜ月曜は定期便を最優先にするのか」「なぜこのタイミングで在庫を確認するのか」という判断の根拠ごと管理できるようになる。これが属人化を崩す鍵だと思っている。


6. スプレッドシート ≒ データベース、という発想の転換

オペレーション現場では、スプレッドシートがすべての情報の中心にある。商品の梱包方法、必要な資材、製造の賞味期限、依頼ごとのメモ。

エンジニア視点だと「スプレッドシートはデータベースじゃない」とつい思ってしまう。でも、現場にとってスプレッドシートは歴とした「記録と参照の場所」だ。

今回やったのは、この2つを≒(ほぼ等しい)と捉え直すこと。

スプレッドシートの情報はデータベースでも管理しているが、実運用には信頼性が低かった。だが、その連携をチーム間で認識レベルを統一させることで「この商品の梱包資材は?」「製造期限はいつまで?」という問いに、Claudeが即答できるようになる。

ただ、データベースには限界がある。ルールは持ちにくいのだ。

例えば「定期便の出荷は優先順位1位だが、月曜は件数が多いのでシフトを厚くする」、これはデータじゃなく、現場の文脈から生まれた判断ルールだ。データでも判断できるようにすることは可能だが、前段階では一定のルールベースがスムーズにことを運べるようになる。

ここをカバーするのがスキルとエージェント。データベースに「事実」を持たせ、スキルに「判断ルール」を持たせる。この役割分担が決まってから、設計がぐっとシンプルになった。

データベース → 事実(在庫数、件数、シフト人数)
スキル/エージェント → 判断ルール(優先順位、例外ケース、文脈)

複雑に見えたオペレーションが、実は事実 × ルールのかけ合わせでできていた。本質はシンプルだった。


7. パートさんまで使い始めた

最初は自分とチームで使い始めたスキル群ですが、今はパートさんにも使ってもらっています。

たとえば出荷指示書の作成。以前は担当者が手作業でスプレッドシートを確認しながら作っていたものが、Claudeに頼むだけで出てくるようになった。棚卸しリストも同様。

「AIを現場スタッフに使ってもらう」と聞くと、ハードルが高そうに思えるかもしれない。でも実際は意外とスムーズでした。

理由は2つあると思っています。1つは設計の問題。コマンドや難しい操作を覚えてもらうのではなく、「いつもの言葉でClaude に話しかける」だけで動くように作ったこと。

もう1つはスタッフの能力の高さ。前述の通り、現場スタッフは新しいやり方への適応力が高い。「これ便利だね」と言いながら使い始めてくれる人が多かった。

まだ全員が日常的に使っている段階ではないけれど、「ツールが現場に根ざしていく」手応えは感じています。


8. 1ヶ月やってみてわかったこと

やってみて感じた、正直なところをまとめます。

良かったこと

  • 「なぜこれをやっているのか」「どのページを見ればいいのか」「何に気をつけるべきか」、こうした情報が必要なものだけに絞られ、現場がシンプルになってきた
  • 属人的にしれっと対応されていた部分が表面化した。隠れていた複雑さが見えるようになると、整理できる
  • 毎日のレポートが、自分で手を動かすのと同じ内容になってきた。信頼度が上がっている

まだ途中なこと

  • スキルやエージェントはまだ増やしている最中。「本質から作る」を意識しつつも、まずは触ってみないとわからないことも多い
  • 現場全体への浸透はこれから。使い方の定着には時間がかかるが遠い話ではない

一番の学び

スキルやエージェントを使い始めると、「自分やチームの仕事の本質って何か」と向き合わざるを得なくなる。これが一番大きかった。

闇雲にスキルを追加し続けると、最終的には崩壊する。使われないスキルが増え、何が動いているかわからなくなり、誰も信頼しなくなる。エンジニアリングでもよくある、「技術負債」に近い状態だ。

だからこそ、アウトカムから設計する必要がある。「このスキルを作ることで、誰の何が変わるのか」、これに答えられないものは作らない。技術を先行させずに、課題から設計する。エンジニアリングと同じ原則が、オペレーション×AIにもそのまま当てはまった。


9. おわりに

「おやつの会社でAI」と聞くと、少し意外に思うかもしれません。でも、毎日の製造・出荷・在庫管理・シフト調整、こういうオペレーションこそ、AIが入り込む余地が大きい領域だと感じています。

しかも、扱っているのはリアルなおやつ。キッチンで焼いて、手で詰めて、届ける。デジタルだけで完結しない面白さがスナックミーにはあります。

AIは魔法じゃないし、入れれば勝手に現場が変わるわけでもない。でも、「本質に向き合う」ことを促してくれる。

自分の仕事の本質って何だろう、そこから始めると、AIの使い方が自然と見えてきます。

まだまだ途中ですが、またアップデートを書きます。

engineers.snaq.me

「エンジニアが全部作らない」内製開発へ ー アサインと事業開発のアップデート

お久しぶりです。スナックミー CTO の三好 (@miyoshihayato) です 2025年も終わり来週には2026年になるということで、この1年の簡単な振り返りをしようと考えてます

はじめに

2025年のスナックミーを一言で表すと、
「作り方そのものが変わった一年」でした。

スナックミーは創業以来、基本的に内製でプロダクト・業務システムを開発してきました。
一方で、各チームに常に十分なエンジニアリソースがあるわけではありません。

そのため目指してきたのは、

  • エンジニアがすべてを作る前提をやめる
  • 各チームが、エンジニアを必要最低限に頼りながら事業開発を回す
  • それでもコアの品質とスピードは落とさない

という内製開発の形です。

今年はその前提が、ようやく実装としても運用としても噛み合い始めました。


非エンジニアが事業開発に入り込む

今年、最も大きな変化は
非エンジニアが開発・分析・改善のループに自然に入り込むようになったことです。

Devin, Geminiなど の活用により、

  • データを見て
  • 仮説を立て
  • 変更を加え
  • 結果を検証する

という一連の流れを、エンジニアを介さずに回せる場面が増えました。

実際に行われたこと

例えば、以下のような改善が非エンジニア主導で進みました。

  • ストアのデータ分析
    • 施策分析
    • 新商品分析 -> 発注予測
  • 定期便のマイページ開発
    • アドオン初回導線の分析
      (※アドオン=定期便にドリンクなどを追加できる仕組み)
    • マイページの背景画像の更新
  • A/Bテストの設計・実施・振り返り

エンジニアは「全部作る」役割ではなく、

  • 詰まりやすい部分
  • 技術的に難しい部分
  • 設計として整理すべき部分

に集中する形へと役割が変わっていきました。 また、エンジニアが関わる部分はコンテキストとして理解しにくい部分も定期的に社内wikiのようなものにアップデートし精度を上げていく動きもできつつあります


内製だからこそ成立する形

この形は、外注前提では成立しません。

  • 現場の気づきが即改善につながる
  • 小さな仮説をすぐ試せる
  • 失敗コストが低い

内製であることが、
非エンジニアが入り込む余地を広げる前提条件になっています。


スナックミーのコアは「アサイン」

その中でも、最も重要なコアが アサイ です。

アサインとは、
snaq.me のおやつの定期便に入れる商品を、どのユーザーにどの組み合わせで届けるかを選定する仕組みです。

体験の質、在庫、製造、オペレーションのすべてに影響する、事業の中核となるロジックです。

アサインの考え方や初期の仕組みについては、過去にこちらの記事で紹介しています。

labs.snaq.me


一括アサインから個別アサインへ

当時のアサインは、

  • 精度は高い
  • ただし計算コストが重く
  • 一括・バッチ処理が前提

という設計でした。

今年はこの前提を見直し、
個別アサイへと進化させています。

個別化を可能にした2つの変更

1. 独自アルゴリズムの軽量化

ロジックの責務を整理し、

  • 計算コストの高い部分を分離
  • 毎回フルで考えなくても成立する設計へ変更

することで、

  • ユーザー単位での再計算
  • 状況に応じた柔軟なアサイ

が現実的になりました。

2. 在庫に対する考え方の変更

在庫を単なる制約条件として扱うのではなく、

  • 減り方
  • 滞留
  • 回転

といった 変化のシグナルとして捉え直しました。

これにより、アサイン・在庫・製造・出荷を
一つの流れとして扱えるようになっています。


アサインを支えるオペレーション改善

アサインを止めないために、周辺の改善も進めました。

  • 宛名出力の自動化
    • 朝には宛名が出そろう状態に
  • アサインシステム 4.0
    • 一括から個別へ
    • より細かな最適化が可能に
  • 作業報告のペーパーレス化
  • snaq.me officeアサインも個別アサインしロジックもほぼ毎週アップデート

いずれも派手ではありませんが、
事業開発のスピードを落とさないために効く改善です。


アサインはアルゴリズムだけでは完成しない

アサインは、

  • アルゴリズム
  • データ
  • オペレーション
  • 使う人(エンジニア・非エンジニア)

が噛み合って初めて成立します。

今年は、その全体がようやく
一つのシステムとして回り始めた一年でした。


おわりに

何を作ったか以上に、
どう作るかが変わった一年でした。

  • 非エンジニアが事業開発に入り込み
  • エンジニアは難所に集中し
  • 内製の強みが最大化される

この形を前提に、アサインも、事業も、まだ進化していきます。

来年も引き続き、
スナックミーは「作りながら考え、考えながら作る」内製開発を続けていきます。

来年もよろしくお願いします。 興味ある方はぜひ以下からお声がけください

pitta.me

engineers.snaq.me

スナックミーのエンジニアチームで直近動きたいこと (2024年10月)

こんにちは スナックミー CTO の三好 (@miyoshihayato) です
四半期ごとにチームに共有している近期の取り組みを一部変更し、こちらのエンジニアブログで皆さんと共有したいと思います。

オペレーションチームと協働し、効率化と属人性の排除

スナックミーでは、原材料の管理から製造、ピッキング、出荷、そしてユーザーフィードバックを活用した商品開発まで、多岐にわたる業務をシステム化しています。

最近、頼もしいメンバーが増え、オペレーションチームとの協働が活発化しました。これまでは、CTOとCOOが議論しながら決定を下し、それに基づいて動くことが多かったのですが、新たなメンバーの参加により、チーム全体で課題に取り組む体制が整いつつあります。CTOやCOOが現場に関わることで、すべてのHOWを決定することにはリスクが伴います。WHYやWHATは私の役割ですが、HOWはチームに委譲することが重要だと理解していました。しかし、それを実行することは難しかったのです。

新しい仲間が加わったことで、状況が好転し、エンジニアチームとオペレーションチームが協力し、複数のチームに分かれて課題を整理し、同じ目標に向かって進める体制が生まれました。この提案もメンバーから挙がったもので、その結果、スピード感を持ってチームとして動けるようになってきています。

もちろん、立ち上げたばかりのチームなので、最初からうまくいくとは限りません。そのため、確実にチームとしての一歩を踏み出しつつ、大胆な一歩も同時に意識して進めていきたいと考えています。

これまでは、オペレーションメンバーが安全にお客様におやつを届けるために多くの責任を負っていました。属人化された業務やスプレッドシートに蓄積されたノウハウが多く、管理対象の増加に伴い業務量も増加していました。

現在、オペレーションの既存の仕組みとシステム、そして現状の事業を見直し、質を落とさずに効率化を図る方法をオペレーションチームと一緒に模索しています。

これは、エンジニアリングで言う「技術負債」に向き合うのに近い感覚です。現在のスナックミーがあるのは、この仕組みがあってこそであり、その努力には感謝しています。しかし、時代の変化とともに、かつては最適だったやり方も今では動きにくくなってきています。そのため、現行の仕組みを見直し、スナックミーならではのオペレーションシステムを再構築することが必要です。これにより、スナックミーがさらに成長していくための基盤を整え、年末から来年2025年にかけて、良いリズムを作り、さらなる成長を加速させたいと考えています。

labs.snaq.me

まとめ

「おやつと、世界を面白く。」このモットーのもと、スナックミーは常に新しい挑戦を続けています。面白い世界を共に創造しませんか?私たちは新たな仲間を募集しています。興味のある方は、以下のリンクから詳細をご覧ください。

pitta.me

engineers.snaq.me

募集ポジション

ソフトウェアエンジニア Backend (lead) / 株式会社スナックミー

プロダクトマネージャー / 株式会社スナックミー

ソフトウェアエンジニア FrontEnd (lead) / 株式会社スナックミー

ソフトウェアエンジニア Data Engineer / 株式会社スナックミー

スナックミーのエンジニアチームで直近動きたいこと (2024年7月)

こんにちは スナックミー CTO の三好 (@miyoshihayato) です
四半期ごとにチームに共有している近期の取り組みを一部変更し、こちらのエンジニアブログで皆さんと共有したいと思います。

データを活用したオペレーションのシステム化

スナックミーでは、原材料の管理から製造、ピッキング、出荷、そしてユーザーフィードバックを利用した商品開発まで、多岐にわたる業務をシステム化しています。私たちはこれを「サービス・フルサイクルエンジニアリング」と呼んでいます。現在、さらに先進的なシステム化を目指しており、物流の選定から生産までの決定をシステムに委ねることを計画しています。これにより、手動での介入を減らし、効率化を図っています。

labs.snaq.me

過去8年間で蓄積された膨大なデータを活用して、ユーザーが本当に求める商品を分析し、独自のサプライチェーンを構築することが可能です。詳細は秘密保持の必要がありますが、具体的な構想はかなり進んでおり、これを実現することで、ユーザーだけでなく社内にも大きな利益をもたらすと確信しています。

また、今後はAIの生成モデルを活用したシステムの実例を増やす計画です。

オフィス基盤の構築

スナックミーは一般消費者向けのイメージが強いかもしれませんが、最近ではオフィス向け定期便も多くの企業に導入され、運用が始まっています。これに伴い、オフィス向けの特有のシステム化を推進しています。例えば、請求書の自動送信、消費者データを基にした商品選定、サプライチェーンへの製造指示書から出荷までのプロセスです。

オフィス向けプランには、おやつ以外にもドリンク、パン、プロテインバー、ヴィーガン商品などがあります。詳しくは以下をご覧ください。

office.snaq.me

まとめ

「おやつと、世界を面白く。」このモットーのもと、スナックミーは常に新しい挑戦を続けています。面白い世界を共に創造しませんか?私たちは新たな仲間を募集しています。興味のある方は、以下のリンクから詳細をご覧ください。

pitta.me

engineers.snaq.me

募集ポジション

ソフトウェアエンジニア Backend (lead) / 株式会社スナックミー

プロダクトマネージャー / 株式会社スナックミー

ソフトウェアエンジニア FrontEnd (lead) / 株式会社スナックミー

ソフトウェアエンジニア Data Engineer / 株式会社スナックミー

スナックミーのエンジニアチームで直近動きたいこと (2024年4月)

こんにちは スナックミー CTO の三好 (@miyoshihayato) です
四半期ごとにチームに共有している近期の取り組みたい内容を一部変更し、こちらのエンジニアブログに載せたいと思います。

戸惑い・不要になっているところの整理

おやつの定期便snaq.meを開始してから先月で8年が経過しました。この間、snaq.meはおやつBOXだけでなく、おつまみや焼き菓子、お茶やコーヒーなど様々な商品を取り扱う多様なコースが選択できるようになりました。また、オフラインの展開も強化し、直営店オフィス向けサービス卸事業を展開しています。

また、おやつの定期便以外にも、・卸事業・など、オンライン以外にもオフラインにも力を入れ出してます。

会社の成長と共に、スナックミーのおやつと接する機会が増えるのは嬉しいことですが、それに伴い内部の複雑性も増しています。過去8年間に蓄積されたデータを活用し、これまで手が届かなかった部分を自動化する基盤を整えることができるようになっています。昨年からはABテストを行い、多くのプロセスを自動化できる土台を築いています。最新のLLM(Large Language Models)の活用も、これからは必須となるでしょう。

この取り組みは主に社内オペレーションに関わるものですが、ユーザーが直接触れるページについても同様の取り組みを進めています。詳細は以下の記事をご覧ください。

labs.snaq.me

labs.snaq.me

長期的な視点でプロダクトを継続的に提供するためには、ただ目の前の課題に取り組むだけでなく、将来の開発優位性を意識した取り組みが必要です。即時に効果が見えなくても、1、2年後には大きな差となって現れることも多いです。

まとめ

「おやつと、世界を面白く。」このモットーのもと、スナックミーは常に新しいことに挑戦し続けています。私たちと一緒に面白い世界を創り出しませんか?

私たちは新たな仲間を募集しています。興味がある方は、以下のリンクから詳細をご覧ください。

meety.net

engineers.snaq.me

募集ポジション

ソフトウェアエンジニア Backend (lead) / 株式会社スナックミー

プロダクトマネージャー / 株式会社スナックミー

ソフトウェアエンジニア FrontEnd (lead) / 株式会社スナックミー

ソフトウェアエンジニア Data Engineer / 株式会社スナックミー

第1回【DDD勉強会】を開催しました!🍫

こんにちは、エンジニアの兼崎です!

先日、第1回 ドメイン駆動設計(DDD)勉強会が開催されました。

スナックミーでは過去の開発における反省のもとDDDを導入していて、開発メンバーがしっかり設計に則って開発できるようにしたいという想いから、エンジニアのタク(@yamataku3831)が当勉強会を企画してくれました。

今回のテーマは、 「値オブジェクト」です。

(当記事は主に文章で構成しています。以下のスライドはサンプルコードもあり理解しやすいので、気になる方はぜひご覧ください💁)

speakerdeck.com

DDDとは何か

勉強会の主題である"ドメイン駆動設計(Domain Driven Design)"とは、「ドメインの知識に焦点を当てた設計手法」と紹介されていました。

少し詳しく書くとすれば、様々な解釈があると思いますが「プログラムが適用される領域を実際に利用している人たちの考え方や視点、彼らを取 り巻く環境を理解することを重視した設計手法」であると、この勉強会では説明されていました。

値オブジェクトについて

エンジニアの方は、「値」や「オブジェクト」に馴染みがあるかと思います。 値オブジェクトはこれらが組み合わさったもので、システム固有の値を表現するために定義されたオブジェクト と理解しました。

なぜ値オブジェクトを学ぶのかというと、integerやstringなどのプリミティブな値だけでシステムを構築しようとすると管理が難しくなるからです。

例えば、氏名を扱うシステムで姓だけを表示したい場合、氏名が文字列型だと姓だけを正確に取り出すことが難しくなります。 そこで氏名をオブジェクトとして定義すると、姓と名を属性として持たせることができ、管理が容易になります。

今回のスライドの文脈では、氏名はオブジェクトであり、値でもあるため、「値オブジェクト」として実装していました。

そもそも “値” が持つ性質とは何か

"値"には、以下のような性質があると紹介されていました。

  • 不変である: 値の変更を行うときには、変数の値そのものを変更するのではなく、変数の内容を入れ替えます。
  • 交換が可能である: 変数の値を変更するには、代入を利用した値の交換を行います。
  • 等価性によって比較される: 同一性ではなく、等価性によって比較されます。

値オブジェクトは値の性質を持つオブジェクトです。つまり、値オブジェクトを変更したい場合は属性単体での変更はせず新しい値オブジェクトを代入します。さらに比較はオブジェクト同士が持つ全ての属性を比較するメソッドを使用するように設計するとよさそうでした。

値オブジェクトを使用するメリット

値オブジェクトには以下のようなメリットがあります。

  • 表現力を増す: 値の構成や設計が明確になり、ロジックを読み取りやすくなります。
  • ロジックの分散を防ぐ: 仕様に関わる処理を値オブジェクト内に閉じ込めることで、仕様変更に伴う修正箇所が明確になります。
  • 不正な値を存在させない: 値の正当性を確認するコードを値オブジェクト内に統一することで、不正な値の存在を防ぐことができます。
  • 誤った代入を防ぐ: 値オブジェクトを使用することで、タイプ不一致エラーを検出し、予測不能なエラーを減らすことができます。

値オブジェクトとして実装すべき基準

前提として、値オブジェクトを実装する基準に正解はなく、システムのコンテキストに合わせて判断する必要があります。 とはいえ、参考になるような基準が欲しいのも事実ですよね。 今回の勉強会では以下のようなものが、基準の例として挙げられていました。

「そこにルールが存在しているか」「それ単体で取り扱いたいか」

おわりに

今回のDDD勉強会では、「値オブジェクト」について学びました。 私自身、これまで設計から考える機会はあまり無かったので、DDDという設計手法を学ぶ良い機会になっています。 今後、「このコードは値オブジェクトか?」「他に値オブジェクトとして表現できるところはないか?」という視点を持って実装できそうです😊

スナックミーでは、エンジニアを積極的に探しています。この記事を読んで興味を持ってくださった方や、おやつが好きで「おやつと世界を面白くしていきたい」とお考えの方がいらっしゃれば、ぜひ応募していただけると嬉しいです!

engineers.snaq.me

募集ポジション

ソフトウェアエンジニア Backend (lead) / 株式会社スナックミー

ソフトウェアエンジニア FrontEnd (lead) / 株式会社スナックミー

ソフトウェアエンジニア Data Engineer / 株式会社スナックミー

スナックミーのエンジニアチームで直近動きたいこと (2024年1月)

こんにちは スナックミー CTO の三好 (@miyoshihayato) です
四半期ごとにチームに共有している近期の取り組みたい内容を一部変更し、こちらのエンジニアブログに載せたいと思います。

シンプル化の追求

プロダクトの視点

2024年が始まりました。過去一年も様々な挑戦を経て、スナックミーはさらに成長を遂げました。多くの方にはおやつの定期便サービスとして認識されていますが、実は私たちは2022年4月から直営店の運営やナチュラルローソンをはじめとするコンビニへの卸事業、オフィス向けの定期便事業と、オンラインだけでなくオフラインでも接点を増やしています。「おやつ、と世界を面白く。」このパーパスのもと、お菓子を食べる楽しみだけでなく、ワクワクする体験を提供したいと考えています。

様々な接点を通じて、スナックミーのおやつとの出会いを豊かにし、プロダクトを通じてさらなる楽しみを提供していきたいと考えています。例えば:

  1. おやつの定期便を利用 -> 直営店の存在を知る -> 直営店を訪問 -> 好みのおやつを購入
  2. コンビニでスナックミーのおやつに出会う -> サービスを調べる -> ECサイトで購入 -> 定期便を始める
  3. 企業がおやつ定期便を利用 -> 様々なおやつと出会う -> 自宅用にも定期便を始める

など、出会いの循環を加速させるような動きを作っていきたいと考えています。

このような循環を加速させることが目標です。しかし、それには機能追加よりも大事ですが、迷いや不要な動きなどを減らすシンプル化が必要です。エンジニアチームとしても、この方針に基づき迅速に動いています。

prtimes.jp

office.snaq.me

開発の視点

プロダクトの理念をシステムにどう落とし込むかが重要です。サービス開始から9年が経過し、後回しにしていたリファクタリングや急ぎで開発した部分の再考が必要になり、開発速度の低下を感じています。過去3、4年の間には、以下のような取り組みを進めてきました。

labs.snaq.me

labs.snaq.me

小さく始めて、一歩ずつ改善を重ねることで、サービスを永続的に提供し、おやつ体験を向上させることが目標です。「サービス・フルサイクルエンジニアリング」を大切にしています。スナックミーは多様なシステムを通じてサービスを提供しており、事業の増加に伴い、システムの複雑性が増す可能性があります。それを防ぐためにも、シンプル化をテーマに選びました。シンプル化は「単純化」ではなく、「明快さ」を意味します。

Netflixの「フルサイクルエンジニアリング」に”リアル”を加えたスナックミーの「サービス・フルサイクルエンジニアリング」について

まとめ

シンプル化は四半期の目標に留まらず、常に意識すべきことです。スナックミーのエンジニアリングガイドラインには「Scale Out」という考えがあります。これは、会社、チーム、個人の成長に不可欠なマインドセットです。シンプル化を通じて、より良いサービスを提供し続けることが私たちの目標です。今四半期はこのテーマを特に強調しています。

おやつと、世界を面白く。」 一緒に面白くしたい仲間をお待ちしてます!!

meety.net

engineers.snaq.me

募集ポジション

ソフトウェアエンジニア Backend (lead) / 株式会社スナックミー

プロダクトマネージャー / 株式会社スナックミー

ソフトウェアエンジニア FrontEnd (lead) / 株式会社スナックミー

ソフトウェアエンジニア Data Engineer / 株式会社スナックミー