DevLOVE関西『「価値探索型のアジャイル開発」をはじめよう』に参加して

こんばんは。akitoshigaです。
来週から大学の試験が始まるので最近は鬼のようにレポートを書いています。

表題の通り、先日の11/5(火)にDevLOVE関西さんにお邪魔してきました!🙌
この日の回は、最近「アジャイルなプロダクトづくり」を出版された市谷聡啓さんのセッションが聞ける特別な回でした。
ちょうどその少し前にアジャイルなプロダクトづくり」を読んで感動した自分はこの日をとても楽しみにしていました。

そのセッションの内容が最高だったので自身のための整理も兼ねて以下に残そうと思います。

概要

このセッションでは、開発プロジェクトを進めていく上で起こる様々な問題をどう検知するかということから始まり、プロダクトの成果とは、何を指標とすべきなのか、価値の探索や仮説を立てる方法について説明していただきました。

見るべきものを見れているか

チームが開発プロジェクトを進める上での問題を検知できないのは何故なのか。
この原因は「見るべきものが見れていない」つまり問題の予兆を検知する仕組みが存在しないためである。

また、判断の指標が存在していたとしても、その指標を定めてから時間が経っており陳腐化していないかどうかにも注意が必要。

では、問題を検知するために具体的に何を見ていけば良いのか、それには以下の三つの視点が必要である。

  1. ユーザーの視点
  2. チームの視点
  3. プロダクトの視点

それぞれ、

  • ユーザーはプロダクトを利用することで必要な目的を果たせているか
  • チームは疲弊しておらずプロダクトを継続的に開発し続けられる状態か
  • プロダクトは健全であり技術的負債などによってデリバリーに時間がかかったりしていないか

これらを継続的に確認し、情報をアップデートしていくことが重要。

そしてプロダクトのアウトカム(成果)はこのユーザー・チーム・プロダクトが健康であり全てが充足した時に生まれる。
言い換えると、たとえユーザーが目的を果たしたとしても、チームもプロダクトも健全な状態になければ価値を提供しているとは言えないということになる。

ここで一つ疑問が生まれる。

収益が出ていれば良いのではないか?

プロダクトのアウトカムとは収益のことであり、収益を追求すべきではないのかという疑問が生まれるが、これは間違いである。

収益とはあくまでプロダクトの「結果」であり価値にはならない。

また、結果が出るのには時間がかかる。

「結果」の追求にのみチームを最適化すると、遅行指標による管理になってしまい金額が出るまでプロダクトに対する判断を下せなくなってしまう。

市谷さん曰く「バックミラーだけを見て運転しているようなもの」

チームやプロダクトに変化がなくてもプロダクトを取り巻くユーザーの状況は日々変わっていくので、絶えず価値を探索していくことが重要。

とはいえ、プロダクトを運営するのに売り上げは必要なので、収益はKPI、成果をOKRとしてそれぞれの指標を見ていく必要がある。

価値の探索をしようにもプロダクトの成果が曖昧なままでは探索のしようがないので、目標と評価指標を定める必要がある。

⁠探索の方法

ユーザー、チーム、プロダクトの視点で成果とは何かの仮説を立て、その仮説をもとにバックログを作成して実行に移す。

仮説を立てる時は書籍で紹介されているフレームワーク「仮説キャンバス」が非常に有効。

価値の探索活動も開発チケット同じように扱ってイテレーションの対象にする。

「成果」を誰かに決めてもらうだけの世界線は終わらせて、自分のハンドルは自分で握ること。
---

最後に

書籍を読んだ後だったので、このセッションを聞いてとても理解が深まりました。

他にも具体的な仮説の立て方なども紹介して頂きましたが、そちらについては書籍に詳しく解説されていたので、気になった方はぜひお手元にとってご覧ください🙌

市谷さん、DevLOVE関西さん本当にありがとうございました🙌

book.impress.co.jp

 

 

 

Rails Wayについて自分なりに考えてみる

こんばんは。akitoshigaです。

先日参加したKaigi on Rails 2024で自分のRails力の至らなさを痛感したので、「Rails Way」について改めて自分なりに整理してまとめてみたいと思います。

 

最初に申し伝えとなりますが、この記事はKaigi on Rails 2024の以下のお二人の発表に影響を受けて書いたもので、その内容をかなり参考にさせていただいています🙏

Vladmir Dementyevさん『Rails Way or the highway』

speakerdeck.com

五十嵐邦明さん『Railsの仕組みを理解してモデルを上手に捉える』

speakerdeck.com

そのため、Kaigi on Rails 2024でこれらをご覧になった方は特に得るものがないかもしれません...🙏

前置きが長くなってしまいましたが以下本編です。

 

そもそも自分の何が至らなかったのか

振り返ってみると以下の3点につきると思いました。

  1. Rails Wayの重要性について認識していなかったこと
  2. Rails Wayの理解が浅かったこと
  3. Rails Wayに反した設計理論を持ち込んでいたこと

元々設計は好きで色々勉強はしてきたのですが、振り返ってみれば中途半端に知識があったからこそRails Wayを軽視していたように思います。

また、自分が初めて触れたRailsのアプリケーションがすでにリリースから数年経っており、成長に伴いRails Wayから外れていたものでした。

そのため、この状態からRails Wayを遵守しようという意識にならなかったのも要因の一つだと思います。

Rails Way or the highway 』の以下の一節が非常に重要だと感じました。

Rails Wayとは

Rails Way or the highway 』では以下のようにまとめられています。

これを踏まえ、Rails Wayを自分の言葉で以下のように解釈しました。

RESTを前提にリソース(URL)設計・データモデル設計を正しく行い開発者の設計判断とコーディング量を減らし生産性を上げる」

この解釈に至るまでには、ピクスタさんが運営しているポッドキャストの『texta.fm』が大変参考になりました。

text.fmの第3回『3.Low-Code Development』の中でRailsの思想について概ね以下のように述べられていました。

・シンプルなルールを仮定することで全体の作りをシンプルにする

・シンプルにすることで考えることを減らす
・考えることが減ればコードの量も減り、かつ設計に悩む時間も減る

・コードの量と考えることが減れば生産性は上がる

この思想の代表的な例はRailsのModelの実装だと思います。

RailsのModelは基本的にエンティティになります。

ご存知の通りModelはActive Recordパターンによりデータベースのスキーマと密結合しておりCRUD処理の窓口にもなっています。

その他にも、コールバックやバリデーションなどの仕組みを駆使してアプリケーションにおける複数の役割をModelに持たせています。

この密結合な構造と引き換えにRailsはシンプルなレイヤーを保ちつつ設計判断のコストを減らしています。

そのため、Modelを特定のユースケースと結びつけて付随する処理の殆どをModelに実装するのがRails Wayに沿った設計になります。

一方、サービスなど新しいレイヤーを追加するのはRails Wayに反しているということになります。

 

そして、このModelを有効活用するためにはRESTを遵守したリソース(URL)設計とデータモデリングが必要になります。

先述のtexta.fmでリソース設計、データモデリングについて以下のように述べられています。

  • Railsは必要なデータは最新の物と割り切る事で殆どの事をデータのCRUDで表現可能
  • 殆どの事をデータのCRUDによって表現できるとリソース操作もパターン化が可能
  • パターン化できるとスキャフォールドと規約によるメタプロによって生産性が上がる
  • データモデリングとリソース設計が決まればコーディング自体はある程度導き出せる
  • そのためにはデータモデリングをしっかりやる必要がある

つまり、アプリケーションのユースケースをリソースとそのCRUD操作で表現できるようになれば、実装されるコードはスキャフォールドに近くなり非常にシンプルで生産性を高めることができます。

 

また、この他にもRailsは様々な規約を定めることで開発者のコード量・設計判断のコストを減らしています。

例えば、先ほどのModelはデータベースのテーブル名に基づく特定の規則に則ったクラス名にすることで、開発者がORマッピングの設定をすることなく特定のテーブルと紐づいたエンティティとして使用することができます。

 

以上がRailsの思想に則ったRails Wayを体現する方法だと知りました。

ただし、これには問題があります。

Rails Wayに沿ってどう拡張していくのか

先述の通り、Rails WayによってModelはユースケースと深く結びつくことになります。

アプリケーションが小規模なうちはこれで大丈夫なのですが、肥大化してModelが複数のユースケースと結びついた時にRails Wayが崩壊するという問題を抱えています。

これを回避するために以下の対応方法を取ることができます。

イベント型モデル

  • リソース系とイベント系のデータが一緒になっていないか?
  • イベントを見落としていないか?
  • イベント型モデルを発見することができればユースケースと紐づけることができる

フォームオブジェクト

  • パスワードの確認フォームなど、Modelと画面が1対1でなくなってきた時に使用する
  • ActiveModelのモジュールをincludeすることでバリデーションやコールバックなどを使うことができる

PORO(Plain Old Ruby Object)  

  • 責務がはっきりしなかったり、永続化の必要がなくてもオブジェクトとして扱いたい概念が出てきた時に検討する
  • Rails Wayからは外れそうになるためチーム内でのルールの共有などが必要

具体的なイベント型モデル、フォームオブジェクト、POROの詳細は初めに紹介した『Railsの仕組みを理解してモデルを上手に捉える』で解説されているので、気になる方は是非チェックしてみてください。

また『Rails Way or the highway 』ではRailsを独自の抽象化を定義しても以下の4層から外れないようにすることが重要だと述べられています。

まとめ

知ってしまえばRailsの思想は非常にシンプルですが、同時にモデリングの重要性といった本質的な奥深さも感じて以前よりRailsの事が好きになりました!

そして、自分もRails Wayに則した綺麗なアプリケーションを構築してみたいと思うようになりました🙌

今回自分なりにRails Wayについて考えてみましたが、自分の理解が及んでいないことも多分にあると思います。造詣の深い方がいらしたら是非この記事に関してフィードバックを貰えると嬉しいです🙌

 

その他参考にさせて頂いたもの 

Railsはおまかせ(Rails is omakase翻訳)

Ruby on Railsの正体と向き合い方

パーフェクトRuby on Rails【増補改訂版】

2024/11/03

こんばんは。akitoshigaです。


最近自社の業務でAWSコンソールとTerraformをずっと触っているのですが普段あまりこういったことはやらないので新鮮で楽しいです。

 

プライベートでは英語の勉強を頑張り始めました。(今年ルーカスさんと出会ってからちょくちょくやってた)
mikanでDUO 3.0の単語を勉強しているのですが、難しすぎて泣きそうです。
文法はタロサックさんの動画をみて勉強しています。
www.youtube.com 👆めちゃおもろいです。

 

あとは、「データベース・リファクタリング」を読みました。

データベース・リファクタリング

振る舞いやデータの整合性を維持しながら、データベースをリファクタリングするための手法について解説された書籍です。

 

読んでみた率直な感想としては、手順さえしっかり踏めば手間はかかるけどデータベースもちゃんとリファクタしていけるんだなと思いました。

当たり前ですが、データベースはアプリケーションと違ってデータを永続化しているのでリファクタリングに対して心理的なハードルが上がってしまいますが、データベース構造の歪さをアプリケーションレイヤーで吸収したりせずこの本を参考に臆せずリファクタしていきたいなと思いました。

絶版のため値段は高いですが各リファクタリンングのトレードオフや注意事項も載っていたので買ってよかったなと思いました!おすすめです🙌

 

『アジャイルなプロダクトづくり』を読んで

こんばんは。@akitoshigaです。
最近ふと「本質的な価値提供をするには個人の力だけ伸ばしていてはいけない」と感じて開発プロセスのことを勉強し始めました。

その一環で市谷聡啓さんの『アジャイルなプロダクトづくり』を読んだのですが、それがめちゃくちゃ良かったので感想文を書くことにしました。

どんな本?

平たく言うと仮説検証型アジャイル開発について書かれた本です。
プロダクトづくりにおける成果・価値とは何か、価値をどう探索するか、価値を提供するためにチーム・プロダクトはどうあるべきか、ということについて詳しく解説されています。
ある架空の開発現場を舞台にした物語パートとその解説パートで構成されています。

 

読んでみて

書籍の中で悪い例とされている内容に心あたりがありすぎて胸が苦しくなりました...😇

自分がプロダクト開発について漠然と課題感を持っていた所が言語化されていて腑に落ちたのと同時に、自身がいかにプロダクトについて関心がなかったかを痛感しました。

今までアジャイルについては表層的な知識しかなかったのですが、これからはこの書籍を参考に試行錯誤しながら本質的な価値を提供するために努力してみたいと思います。

 

勉強になった所

勉強になった所は山ほどあるのですが、その中でも特に勉強になった2点について紹介します。

 

1.『価値』を届けるために必要な3つの視点

KPIやOKRといった意図的に設定する目標を漫然と追いかけているだけではプロダクトとそれを手がけるチームとして『価値』を生み出せていない。

『価値』を生み出すには『持続的に活動できる状態』である必要がある。

『持続的に活動できる状態』はユーザー・チーム・プロダクトの3つの視点から判断できる。

1. ユーザーの視点

  • ユーザーの声を蔑ろにしていないか

2. チームの視点

  • 自身の役割に固執するあまりメンバー間で分断していないか
  • 「自分だけ良ければいい」という状態になっていないか

3. プロダクトの視点

  • 技術的負債に向き合っているか
  • 開発プロセスが単なるタスクマネジメントになっていないか

---

書籍の序盤で上記のように述べられているのですが、これが見事に悪い方に当てはまって辛かったです😇

人間は安定を求める生き物なので、日々の開発で一杯一杯になり次第に挑戦する気力を失ってしまいいたずらに時が経ってしまうということはあると思います。

市谷さんはそういった状況からチームを変えるのは難しいとおっしゃっており、これを打破するのがユーザーの声だと書籍で述べています。

加えて、この状態のチームはプロダクトに対する仮説が曖昧になっているので、仮説を立て直すことから始めるのが良いとも述べられています。

 

2.プロダクトの価値の探索における3つの罠

プロダクトを開発するときに、問題と解決策を定義する上で陥りがちな3つの罠がある。

 

1. 前提が問えていない罠

  • 答えありきでプロダクトをいきなり作り始めてしまう
  • チームがなぜか問題とその解決策を分かっている前提
  • 解くべき問題が適切かが問えていない状態

2. 顧客が正解の罠

  • 想定する顧客やユーザーをそのまま答えと捉えてしまう
  • 顧客の声を鵜呑みにしてしまう
  • 顧客の声に対して開発者は「正解を得た!」とバイアスが働いてしまう

3. 完成 = 本番の罠

  • プロダクトが完成したらいきなり本格的に展開してしまう
  • 形に見えるもの(理解しやすいもの)ができると「これが正解だったのか!」と思い違いを招く

--- 

これも当てはまりすぎて泣きました。

特に「顧客が正解の罠」には何度も引っかかっていて、この原因は自分の中で問題を正しく捉えられていなかったことに尽きるなと思いました。

自分が問題に対してかなり表層的に取り組んでいた事を痛感しました。

 

最後に

書籍では上記に対する解決法やプロダクトの課題設定・価値の探索方法について丁寧に解説されているので、少しでも気になった方は是非チェックしてみてください!オススメです🙌

book.impress.co.jp

 

おまけ

余談ですが、ちょうど今日こんなイベントを発見しました。

「価値探索型のアジャイル開発」をはじめよう - DevLOVE関西 | Doorkeeper

市谷さんが『アジャイルなプロダクトづくり』のエッセンスを踏まえながらプロダクトの「成果」や価値創出についてお話しくださった後、その内容について他の参加者の方とディスカッションするそうで天啓かと思いました。

もちろん参加します!DevLOVE関西のお名前はよく聞いていたのですが参加したことはないので今から楽しみです🙌

 

Kaigi on Rails 2024に参加してきました!

こんにちは。@akitoshigaです。

先日の10/25に有明にて行われたKaigi on Rails 2024に自社の仲間たちと行ってきました!

現地に行ったのは初めてだったので、会場の熱気を肌で感じれてよかったです。

今回自社にスポンサー協賛をしてもらったのですが、自社は今までこういったカンファレンスにスポンサーをしたことがありませんでした。

自分の働きかけで今回それが実現したので感慨深かったです。

また、拙いですがノベルティも作成しました!

会場で見た他社さんのノベルティのクオリティの高さに圧倒されたので、次回はもっと気合いを入れたものを作りたいです。

 

Day2は自宅から参加してました!

 

2日間参加した感想としては、まず自分はRailsのこと何も知らないんだなということ。

Railsには2年半ほどお世話になっており自分の中ではある程度ちゃんと開発ができていると思っていましたが、Railsの良さを生かせてはいなかったと痛感しました。

Railsは自分が考えていたよりずっと奥深く、そして楽しいフレームワークだったのだなと認識を改めさせられました。

こういった場に足を運ぶのは知らないことを知れると言う点でもめちゃくちゃ価値があると思いました。

今日は自分が知りたいなと思ったトピックについて調べたり、他の人がお勧めしてくれた記事やスライドなどを見てたりしていました。

 

2つ目はRailsコミュニティの温かさ。

お話させていただいた人はみんな気さくでそしてRubyRailsが大好きでした。

こういった方達のおかげでこの場があると言うことに感謝するとともに、自分も何らかの形で還元していきたいなと思いました。

 

実になる話が一つもなくて恐縮なのですが最高に楽しかったです!🙌

運営の皆さんには本当に感謝申し上げたいです。

セッションのレポートは自社のテックブログの方で公開する予定です🙌

 

2024/10/23

最近開発プロセスに興味が出てきて市谷聡啓さんの『アジャイルなプロダクトづくり: 価値探索型のプロダクト開発のはじめかた』を読んだ!

ストーリー調で話が進むんだけど主人公の置かれる辛い環境がが身に覚えがありすぎて胸が苦しくなった😇

 

仮説検証とアジャイルについて書かれている書籍で、価値のあるプロダクトを作るために必要なユーザー・チーム・プロダクト3つの健康状態と、価値の探索における3つの罠の部分が興味深かった。

本当に良い本だったので後日ちゃんと感想書こうと思う!

 

あとは大学のレポートを一つ終わらせた。

論述苦手なのでブログを通して言語化能力をもっと上げていきたい。

十月二十二日はブログ記念日

こんばんは。しがです。


あるエンジニアの方が日々の学びや感じたことをブログにアウトプットされいて素敵だなと思ったので、その方に倣って自分も書き記したいことがあった日はブログに残そうと思いました。

 

技術的な記事はたまーにQiitaに書いてたりするのですが、こちらではもう少し雑多だったりプライベートや内面についての記事も書きたいと思います。


とりあえず今日は意思の表明だけにしようと思います。

おやすみなさい。