【イベントレポート】アジャイル開発エンジニア勉強会~各社の取り組みや課題から学ぶ会~

アジャイル開発エンジニア勉強会MV

こんにちは!TECH Street編集部です!

2024年2月27日(火)に開催した、 「アジャイル開発エンジニア勉強会」のイベントレポートをお届けします。今回は各社のアジャイル開発に携わるエンジニアが集まり、それぞれの知見を発表し、学びあう勉強会を開催いたします。

登壇者はこちらの方々!

小熊坂謙太(くまさん)/株式会社ベネッセi-キャリア
出井 彰記/株式会社LIXIL
北島 和茂(きたじー)/パーソルキャリア株式会社

早速、内容を紹介いたします!

 

最初は、小熊坂さんの発表です。

新米スクラムマスターがいきなりLeSSを任された話

新米スクラムマスターがいきなりLeSSを任された話画像01

小熊坂:この発表では「新米スクラムマスターがいきなりLeSSを任された話」について話したいと思います。まずは、プロダクトを開発しているチームについて、簡単にご紹介させていただきます。

開発体制(2022年秋ごろ)

2022年の秋頃、フロントエンドとバックエンドを開発しているチームが大きくなり、これを1つのスクラムとして機能させるのはよくない、という判断になりました。そこで、フロントエンドとバックエンドのチームをLeSSで 2 つに分けました。

新米スクラムマスターがいきなりLeSSを任された話画像04

しかし、この体制で開発を進めていく中で、「チケット精度の問題」が表面化していきました。

開発体制(2023年3月時点)

実際にスプリントを始めるタイミングで要件定義ができていないチケットがそれぞれのチームに落ちてきてしまい、そこから見積もりをしても、結局要件が固まっていないので、作業量がすごい増えてしまったり、要件が決まっていないので、品質も上がらず、それに付随してインシデントや障害に繋がりやすくなる、などと悪いサイクルが起きました。下図がその悪いサイクルです。

新米スクラムマスターがいきなりLeSSを任された話画像05

開発体制(2023年4月〜)

そこで「これではいけない、何とかしないと!」という危機感から、LeSSチームのエンジニアから「専任スクラムマスター設置」の提言があり、そのLeSSチームに専任のスクラムマスターとして、当時インフラチームに所属していた私が入りました。

新米スクラムマスターがいきなりLeSSを任された話画像06

新米スクラムマスターがやったこと(2023年4月〜)

しかし、私はスクラムマスターを務めた経験がないので、「何をすれば良いのか?」「何ができるんだろうか?」と、いろいろと悩みました。

悩んだ結果、まずは、以下のようなインプットを行いました。

  • スクラムガイドのドキュメントを読む
  • スクラムマスター研修に参加する

それと、開発者やプロダクトオーナー、もしくはこのステークホルダーの方など、いろんな方ととにかく対話をし続けました。

新米スクラムマスターがいきなりLeSSを任された話画像08

LeSSイベントの見直し

またLeSSイベントの見直しを行いました。すると以下のことに気づきました。

  • スプリントプランニングが、計画というよりも開発者たちが要件を確認をする場になっていること。
  • プロダクトバックログリファインメントが、ただの進捗確認MTGのようになっていること。
  • レトロスペクティブのMTGの時間が、チームレトロと全体レトロ合わせて1時間しかなく、表面的な話し合いに終始している印象で、やや形骸化を感じたこと。

新米スクラムマスターがいきなりLeSSを任された話画像10

そこで、「本来のあるべき姿ってなんだっけ?」とスクラムガイドを読んで確認しました。そして、

  • 『プロダクトバックログアイテムは、スプリントプランニングの時には選択の準備ができている。』(下図の赤枠の部分から引用)

つまり、スプリントプランニング前にリファインメントは終えた状態であり、開発者たちもプロダクトオーナーもみんな同じ目線できちんと選ぶことができる状態になっているべきである、と再認識しました。

新米スクラムマスターがいきなりLeSSを任された話画像11

そして、主に以下の3つについて取り組みました。

スプリントプランニング

  • 全体パート:見積・リファインメント済のバックログのみチームへ割り振る
  • チームパート:割り振られたチームバックログをタスクに細分化

プロダクトバックログリファインメント(PBR)

  • 全体パート:POが開発者が理解するまで要件を説明、見積不可なら差し戻す
  • チームパート:開発者がポイントを見積る
    →最初は合計3時間以上かかったが、今では2時間程度

レトロスペクティブ

  • 全体パート:15分を1時間に伸ばし、全体でプロセスの調整点を検討
  • チームパート:45分を1時間に伸ばし、成果物ではなくプロセスを議論するように啓蒙

新米スクラムマスターがいきなりLeSSを任された話画像12

開発体制(2023年9月ごろ)

このような見直しと改善を行ったことで、半年ぐらいかけて、少しずつ良い方向のサイクルが回り始めました。

  • 要件定義済の状態でスプリント開始
  • 作業量安定。技術負債へアプローチ開始
  • 開発の大幅遅延が減る
  • 改善プロセスがチーム&全体で回り始める

新米スクラムマスターがいきなりLeSSを任された話画像14

一方で、チーム外に目を向けてみると、LeSSを採用したため、他チームとの連携がより複雑になってしまっていました。

新米スクラムマスターがいきなりLeSSを任された話画像15

そうして、コミュニケーションの課題が生まれたことで、以下のような声も上がったのです。

  • 「インフラチームに依頼しましたが、進捗が出てきません」
  • 「WebとAPIは実装終わりましたが、アプリは分かりません」

新米スクラムマスターがいきなりLeSSを任された話画像16

この状況を改善させるため、
「LeSSチームのフロントエンドとバックエンド以外のチームもこのLeSSチームの中に収めていって、一緒にLeSSを作っていこう」という方向性に持っていきました。

それと、下図のドキュメントにあるように「Just Talk」を徹底しました。つまり、「他のチームに行き、とにかく喋る」という、この指針に従ってコミュニケーションを増やしてもらうように各チームに啓蒙しました。

新米スクラムマスターがいきなりLeSSを任された話画像18

開発体制(2023年11月)

以上、様々な取り組みを行ってきましたが、一番大きな変更は「LeSSをやめたこと」でした。

今まで、バックエンドとフロントエンドのチームで、LeSSチームを作って組んできたわけですが、そのチームの人数が若干減ったタイミングで、むしろそこは統合しようという話になりました。

新米スクラムマスターがいきなりLeSSを任された話画像20

そして、LeSS開発は統合し、他チームと(緩やかな)LeSSを開始し、新LeSS開発を始めました。(下図参照)

新米スクラムマスターがいきなりLeSSを任された話画像21

このように、開発体制を変えたことでうまくいっていることもあれば、まだ課題があるところもあります。例えば、

  • 各チームLeSSの中に入ったが、その中で自己組織化したスクラムチームって難しい‥‥
  • LeSSで繋がったが、果たしてLeSSが正解?他のフレームワークを使った方が正解?

など、どういうチーム構成がいいか、というところについてはまだ悩みがあります。

そのため、このような課題を乗り越えて、「TECH Street」でまた知見共有をする機会があれば嬉しいです。以上で発表を終了させていただきます。

新米スクラムマスターがいきなりLeSSを任された話画像23

 


小熊坂さん、ありがとうございました!
続いては、出井さんの発表です。

 

スクラムマスターとプロダクトオーナーを両方経験した話

スクラムマスターとプロダクトオーナーを両方経験した話画像15

出井:この発表では「スクラムマスターとプロダクトオーナーを両方経験した話」ということで、皆様にお伝えしたいと思います。

スクラムの導入背景

まず、スクラムの導入背景を説明させていただきます。
弊社のデジタル部門では「LIXIL Behaviors」という 3 つの指針があります。この指針を率先して実践するエキスパート集団となることを目指しました。

正しいことをする

  • 法律や倫理を遵守し、かつ当事者意識を持つ
  • 過去の事例や既存のやり方にとらわれず、誠実に正しく判断し、意思決定する
  • 信念を持って行動する

敬意を持って働く

  • 経緯を持つために、まずは相手を理解するように努める
  • 性別、役職、資格、経験に関わらずオープンかつ公平にアイデアや意見を交わす
  • 相互理解によって一体感が生まれ、向かうべき方向が明確になる

実験し、学ぶ

  • 小さな実験を繰り返し、スピードを持った行動につなげる
  • 失敗はイノベーションへの重要な投資になり得ることを認識する
  • 実験から学んだ教訓を、更なる実験のきっかけとする

このLIXIL Behaviorsを実践する、体系的な仕事のフレームワークとして、スクラムが適していると判断され、導入していく流れになりました。

スクラムマスターとプロダクトオーナーを両方経験した話画像3

アジャイルな組織への変革

従来の組織(役割別階層)からアジャイルな組織(小さなチームのネットワーク組織)へ変革しました。

  • 部門を超えた連携を促進し、機動的な対応ができるアジャイルな組織へ
  • マーケットに一番近いチームが自ら判断して行動し、チーム同士が自律的に連携

スクラムマスターとプロダクトオーナーを両方経験した話画像4

デジタル部門のスクラムのビジョンステートメント

デジタル部門の方で、スクラムのビジョンステートメントを以下に掲げました。

  • ユーザーに寄り添い、素晴らしい価値を早く届けることを楽しもう!!

スクラムマスターとプロダクトオーナーを両方経験した話画像5

私が担当しているプロダクトのご紹介

ここからは、私が担当しているプロダクトのご紹介をしたいと思います。

提案見積もりシステム

  • SR・営業・パートナーが利用します。
  • LIXILの商品を3Dで見ながら、見積もることができるシステムです。

かんたんプラン選び

  • エンドユーザー向けにプランを探すことができるサービス、現在LIXILのHPで公開中。頑張ってプロダクトを成長させています!ぜひ使ってみてください。

スクラムマスターとプロダクトオーナーを両方経験した話画像6

自身の経歴と当時のマインド

2019 年にデジタル部門でスクラムを導入し、パイロットチームとして参画しました。その当時は、以下のような想いを持っていました。

  • まずはスクラムに慣れよう!
  • 心理的安全性を向上しよう!
  • ユーザーに早く価値を提供しよう!
  • 仕事を楽しもう!

このような想いを持って、 3 年ぐらいスクラムマスターをやりました。そして、2022 年に役割がプロダクトオーナー(PO)となり、そうなると今までと動き方が変わり、

  • プロダクトバックログの優先順をどうやって決める?
  • SMのときと立ち振る舞いの違いは?
  • プロダクトマネジメントの知識も乏しい

などの悩みが出てきました。

スクラムマスターとプロダクトオーナーを両方経験した話画像7

そこで、以下のようなことを意識することにしました。

スクラムマスターとして意識したこと

  • チームのサーバントリーダーであり、スクラムを芯まで理解したコーチである
  • チームの障害をなくし、開発チームやPOに役割を全うしてもらう
  • チームを俯瞰して見て、どのようにすればチームが良くなるか常に考え、行動する
  • とにかくアジャイル開発を楽しんで、それをチーム全体に伝染させる

スクラムマスターとプロダクトオーナーを両方経験した話画像8

スクラムマスターとして何を取り組んだか

実際にスクラムマスターとして、以下の3つの軸を中心に取り組みました。

他チーム連携強化

  • SM連携強化(SoS、CoP)
  • PO連携強化(MS)
  • チームを跨いだチームビルディング

自チーム強化

  • スクラムの守破離の守を意識強化
  • 各メンバーの強み・弱みを理解
  • 各メンバーの価値観を理解
  • スキル・ノウハウのナレッジ化

仕組み・運用強化

  • CI/CDパイプライン導入
  • ツール類の有効活用(JIRA、Confluenceなど)
  • 技術的負債の棚卸しと実行
  • プロダクト利用実績データ可視化

スクラムマスターとプロダクトオーナーを両方経験した話画像9

スクラムマスターのときのチームの状態

スクラムマスターをしてチームの状態がどうなったかと言いますと、以下のような効果がありました。

  • チームのベロシティは約1.5倍
  • チームの幸福度はほぼ5まで向上

スクラムマスターとプロダクトオーナーを両方経験した話画像10

現在、プロダクトオーナーとして何を意識しているか

では、スクラムマスターを経験して、その後プロダクトオーナーに役割が変り、どんなことを意識したかと言いますと以下になります。

  • データ可視化をしていたため、プロダクト価値を最大化できるようデータドリブンに優先順位を決める
  • チームが理解し、動きやすいように、バックログのwhy・whatの伝え方を工夫し、チームメンバーとともにブラッシュアップする
  • プロダクト開発だけではなく、チームの改善の重要性を理解していたため、バックログの優先順位にはチームメンバーの意見も必ず取り入れる
  • プロダクトに愛着を持ってもらうため、様々な手法を取り入れ、ステークホルダーやチームメンバーと一緒にプロダクトを作っていく

スクラムマスターとプロダクトオーナーを両方経験した話画像11

プロダクトオーナーとして何を取り組んだか

プロダクトオーナーとして何に取り組んだかと言いますと、「目的意識の醸成」「運用強化」です。

目的意識醸成

  • ユーザーストーリーマップ・ペルソナ
  • インセプションデッキ
  • OKR・NSMを活用した目標管理

運用強化

  • ユーザー要求と複数チームのプロダクト開発をJIRAで運用管理
  • 実績データ活用・分析による優先度決定

スクラムマスターとプロダクトオーナーを両方経験した話画像12

両方経験したことによる気づき

両方経験したことによる、気づきは以下になります。

  • チームとの関係性が構築されており、コミュニケーションが円滑、ただしSMとPOではコミュニケーションの質が違う
  • プロダクトの価値を高めることをメンバー自身が楽しむことで、自然とチームが一体となり、自律的チームになっていくと感じる
  • チーム全体がプロダクトに愛着を持ち、理解すること、メンバーの相互理解が重要
  • 自律的チームになると、メンバーが改善を繰り返すため、よりチームが良い方向に進んでいく

スクラムマスターとプロダクトオーナーを両方経験した話画像13

両方経験したことによる悩み

一方、両方経験したことによる、悩みは以下になります。

  • ユーザー要求とチームの改善はどちらも重要だと思う反面、優先度をつけるときにどちらを優先するべきか未だに悩む
  • プロダクトオーナーにも関わらず、スクラムマスターのような動きをしてしまうことがある(癖が抜けません。。)
  • 自身がスクラムマスターだったこともあり、後任のスクラムマスターの動きが気になってしまうことがある(アドバイスすることもあるが、見守ることも必要ですね)

スクラムマスターとプロダクトオーナーを両方経験した話画像14

私の報告は以上となります。ありがとうございました。


出井さん、ありがとうございました!
続いては、北島さんの発表です。

 

駆け出しのスクラムマスター

駆け出しのスクラムマスター画像01

北島:本日は、dodaの開発に携わり、そこで新米スクラムマスターとして務めた私の「学び」や「気づき」を中心にお話できればと思っております。

アジェンダ

  1. dodaサイト開発チームとは
  2. dodaの開発について
  3. 入社後SMに就任した自身の苦労
  4. アジャイルQAとアジャイル開発チーム
  5. 最後に

dodaサイト開発チームとは

まずは、dodaサイトの開発チームの紹介をします。

体制としてはスクラムチームを組んでおり、スクラムマスター(SM)とデベロッパー(Dev)で開発を回しています。
そして、POと呼ばれる企画者(ディレクター)の方が複数人いて、開発が進んでいる形になっています。

駆け出しのスクラムマスター画像05

開発の変遷

続いてdodaの開発について、開発の変遷を紹介させていただきます。

  • 2018年までは外部ベンダー様中心の開発を行ってきました。
  • 2019年:初期スクラムを導入。
  • 2020年:内製エンジニア採用を強化。
  • 2021年:開発チームの個別最適化が行われ、チームによってはスクラム廃止。
  • 2022年:スクラム導入再検討
  • 2023年:スクラム再導入(自己組織化を目指して再スタート)

駆け出しのスクラムマスター画像06

スクラムマスターに就任した自身の苦労

続いて、私がスクラムマスターに就任して苦労したことを紹介します。

課題1:チームがバラバラ!
チーム発足したての頃に色んな事が重なり、SM(私自身)がチーム状態の把握や目標などを示すことができず、ただ乱暴にスクラムを押し付けるような形になってしまいました。

課題2:振り返りとアクションの時間が足りない!
チームの雰囲気が良くなっていくと共にレトロの質も上がっていきましたが、そうすると今度は課題や触れるべきトピックが多くなってきました。

課題3:定量的な指標がない!
開発も安定的に回り出してきたという実感はありつつも、定量的な指標がないので、何がどう良くなってるのかが明確ではありませんでした。

課題4:品質担保の仕組みが無い!
スクラム以前からではあるが、テストが大味で実施結果等もろくに管理されていない状態でした。開発プロセスも明確に整備されておらず、ヒヤリハットや障害の発生率も高い状態でした。

課題5:小さなウォーターフォール
同時に進む施策が複数存在し、1人に1施策が割り当てられ、1人1人が小さなウォーターフォールのように実施していたことです。
1人1人が別々のことをしていて、「助け合いがないとできない」みたいなことも多く、例えば、担当者が体調不良で休んでしまうと、その施策自体が止まってしまう事が起きました。


これらの5 つの課題に対して自分が行ったことを以下の 3 つのポイントから振り返りたいと思います。

  • チームビルディング
  • 開発プロセス
  • 心境の変化

駆け出しのスクラムマスター画像13

チームビルディング

チームとして目指すもの(文化)の共有はとても大事だと学びました。これがちゃんとできていれば、走り出しはまとまるのだと感じました。

駆け出しのスクラムマスター画像14

アイスブレイク

私のチームでは、アイスブレイクを大事にしています。気兼ねなく話せたり、相談しやすい関係性を構築するのが目的です。誰か1人がネタを喋るよりは全体に話を振りながらみんなで会話するのが効果的だったと感じています。
それぞれメンバーの人となりを知ったり、どんどんコミュニケーションが円滑になっていったので良かったなと感じています。

駆け出しのスクラムマスター画像15

期待のマネジメント

「エンジニアからディレクター」「ディレクターからエンジニア」などと、各役割に対して期待していること、期待されていると思っていることを書き出しました。そうすることで、各役割で力を発揮する場所が明確になりました。
ある程度関係性の構築ができた段階でこの取り組みを始めたので、それが効果的だったのかと思ってます。

駆け出しのスクラムマスター画像16

開発プロセス

開発プロセスでは、以下のスクラムイベントを1週間スプリントで回しています。

デイリー
参加者:PO/Dev/SM

リファインメント/スプリントビュー
参加者:PO/Dev/SM

プランニング
参加者:Dev/SM

レトロスペクティブ
参加者:PO/Dev/SM

駆け出しのスクラムマスター画像17

続いて、スクラムの価値基準は「確約」「集中」「公開」「尊敬」「勇気」と5 つありますが、その中で、確約と公開の部分については、以下のようなルールを作りました。

【確約】勤務時間8時間の内6時間を稼働時間とする
日々のMTGの時間や開発相談などの時間を確保できるようにしました。詰まっている他のメンバーのフォローにまわりやすくしたりヘルプの声も上げやすくなったと思います。


【公開】施策内容のやりとり(質問等)は全体チャット
質問の回答などが個人間で留まらないようにしました。
担当者が不在だと最終的な決定事項が不明等の状態を排除しました。

駆け出しのスクラムマスター画像19

1人1施策の脱却(リソース効率→フロー効率)

リソース効率
doda開発では1人のエンジニアが1施策を担当するやり方が主流となっており複数施策がエンジニアの人数分並列に遂行されます。

フロー効率
1施策に2人以上のエンジニアをアサインし、共同調査やモブプロ/ペアプロ、開発相談などを交え、リードタイムの短縮や品質担保の強化等を目指しました。

駆け出しのスクラムマスター画像20

続いて心境の変化についてです。
やはり、チーム発足当初はとても焦っていました。

  • 「早く期待に応えないと‥‥」
  • 「開発リーダーとしてたくさんリリースしないと‥‥」
  • 「スクラムマスターとしてチームを強くしていかないと‥‥」

などです。

しかし、スクラムマスターをやっていく中で、徐々に心境にも変化が出てきました。

  • 「やれることには限界がある。優先度をつけてやれることをやっていく!」
  • 「リリース数より効果(質)があるものを出す!」
  • 「チームは着実に強くなっている!」

それと、チームの関係性が出来上がっていくとともに、徐々に心に余裕が生まれてきたところが一番大きかったかなと思っています。

駆け出しのスクラムマスター画像21

アジャイルQAとアジャイル開発チーム

doda開発での品質課題

現状、以下のようなシステムが長年の開発により複雑に絡み合っており、影響調査の難易度が高く、不具合が発生しやすい状態となっている。

  • カスタマー(個人顧客様)向けのシステム
  • クライアント(法人様)向けのシステム
  • 基幹システム

また、外部委託で開発してきた経験もありナレッジやノウハウも失われていたり、在職期間の長いTL層の知見による属人的な開発プロセス等にも課題がありました。

駆け出しのスクラムマスター画像23

そんな中、アジャイルQA組織が立ち上がりました。
品質保証っていう言葉だけを見ると、以下のように思われるかもしれません。

  • 「メンバーとしてテスト工程を担当するの?」
  • 「各チームの品質管理的なところを担当するの?」


しかし、dodaの QA は違います!

現状、以下のような各スクラムチームのサポートがメインになっています。

  • プロセス改善の補佐
  • 健全性モニタリング(環境の整備)
  • 不具合検出率のモニタリング(環境の整備)
  • 定量評価基盤の整備

駆け出しのスクラムマスター画像25

品質と障害

QA組織と協力し、バグ管理ツールを導入しました。

導入にあたって苦労した点

  • PO側への協力依頼
  • 使い始めのフォーマット等への慣れ

導入してできるようになった事

  • 項目書の一元管理
  • レビュー指摘や実施結果、バグの見える化
  • バグ分析、検出工程のシフトレフト

駆け出しのスクラムマスター画像26

品質と障害に関して、我々のチームでは、バグのシフトレフトの改善を重点的に目指してきました。

バグのシフトレフト

チーム発足当初は本番障害やヒヤリハットを数回発生させてしまいましたが、現状だと本番障害や後工程でのバグ検出の割合が他チームと比べても低くなりました。

仕組み/ルール

  • 方式設計をmiroで見える化し、メンバーからのフィードバックを受けやすくしました。
  • 隔週でバグ内容共有と検出タイミングを振り返る場を作りました。

メンバーの成長

  • 施策共有時点で要件考慮漏れ等を指摘したり潰せるようになってきています
  • 調査段階で複雑になりそうな機能がマストなのかみたいな相談が起きるようになりました(トレードオフ)
  • 開発相談の時間で課題に対して、参加者全員で話せています。

駆け出しのスクラムマスター画像27

最後に

「変化の激しい世の中で、できるだけ早く、安全に、価値体験を提供する」といったところを我々は目指しています。

そのために、以下のような対策を行い、変化に対応し価値提供し続けられるチーム作りを目指します。

  • 各スクラムチームの自己組織化
  • メンバー個人個人の主体性の醸成
  • 属人的リスクの排除

駆け出しのスクラムマスター画像28

発表は以上です!


北島さん、ありがとうございました!
続いては、Q&Aのコーナーです。

 

Q&Aコーナー

(Q)スクラムマスターは開発チームやプロダクトオーナー側から出すのではなく第三者的な立場から出すのが良いのでしょうか。

小熊坂:スクラムマスターとエンジニアを兼任すると、エンジニア業が忙しく、スクラムマスターがおざなりになることがあったり、しがらみが改善の邪魔をしたりするかもしれません。
プロダクトオーナー側からの場合は、事業サイドの視点が強く反映され、開発チームが戸惑ってしまうことが起こりえます。
今回は、しがらみがなく客観視できる、第三者的な立場の人を新たに立たせることは有効だったと思います。ただ、適任者が見つかるかどうかという問題もあるので、ケースバイケースかもしれないです。

 

(Q)いきなりスクラムマスター任命されたのは、どんな事情があったのでしょう??立候補ではないですもんね。

小熊坂:立候補ではなく、いきなり部長に呼ばれました。(笑)前職も現職でもアジャイル開発(カンバン)の経験があり選ばれた、という背景があります。

 

(Q)うまく回っているとき、他部門のMTGも含め、スクラム関係のMTGはどの程度発生していたのでしょうか。週何時間をMTGに使っていたのでしょうか。

小熊坂:突発的なMTGが煩雑に発生するとうまくいかないので、できるだけスクラムイベントで完結できるよう意識しています。
基本的には2週間で スプリントプランニング に2時間、プロダクトバックログリファインメントに2時間、スプリントレビューに1時間、レトロスペクティブに2時間の時間割で進行しています。

 

(Q)スクラムマスターをするにあたって、協力者はいたんでしょうか?? 教えてもらう人や、リソース確保、権限付与などの面です。

小熊坂:「事業会社の中での内製化でアジャイルに開発したい、そのためにスクラムを手段として採用している」という事業サイドとの共通理解があったので、よかったのだと思います。スクラムの改善に向けて、事業サイド・開発サイドのコミュニケーション面改善の協力体制もありました。反対する人もおらず、スクラム研修を受けさせてもらえたのもよかったです。

 

(Q)開発じゃないマーケとかでも採用しているのがむっちゃ気になります。どんな感じなんだろう?推進は横串な部署とかあるんですか?

出井:アジャイルプラクティスというコーチがいます。導入のタイミングで研修をする、この研修を受けたチームが立ち上がっています。

 

(Q)アジャイル開発をほぼ知らない者になりますが、アジャイル開発はどういった開発でも適用できるものなのでしょうか? ご講演を見ると、Webアプリのようなソフトオンリーのようなところが合っているように見えていて、ソフトハード混在のシステム開発にも適用できるものなのでしょうか?

出井:弊社ではマーケ、営業、研究部門にも展開されています。バックログとしてはソフトウェアの開発が成果物ではなく、各々のタスクの成果物がスプリントゴールになっています。

 

(Q)スクラムチームが社内に広がっているというお話ですが、スクラムチームのメンバーは基本的にすべて自社のメンバーなのでしょうか?

出井:チームによっては自社メンバーのみのチームもありますが、ほぼ自社以外のパートナー会社のメンバーと構成されたチームが多いです。

 

(Q)いろいろな部署でスクラムとのことですが、JIRAとかのツール類は全チーム統一ですか?そういった選定はチームに寄りけりですか?ツール選定とか評価は専門部署ですか?

出井:弊社のツールとしては基本、JIRAを活用しています。ツール選定はデジタル部門内で評価して選定しています。

 

(Q)バックログのWhy・Whatの伝え方の工夫について、現在のベストな内容や書き方をおしえてください。

出井:ベストかどうかは分からないですが、Whyは目標に対してどのKPIを上げたいか、そのためにWhatは何をしたいのかを書いています。私のチームではあくまでWhatはやりたいことで、Howは含まないように意識しています。

 

(Q)プロダクトに愛着を持ってもらうためにしたことで、印象に残っている施策を教えて欲しいです!!

出井:対面で集まって、ユーザーストーリーマップなどをつくりあげていく。プロダクトオーナーが作るのではなく、全員でワークをこなしていくのが大切だと思います!ツールを使うのは大事!

 

(Q)@出井さん 提案見積システムのアジャイル開発は、初期開発から適用したのでしょうか。それとも開発後の既存のシステムに対して、価値向上を継続的に進めているのでしょうか

出井:初期開発では導入してなく、開発後の導入です。

 

(Q)性格診断等ではMBTI診断が有名ですが、メンバーの理解を深める上で使用されたフレームワークは具体的に何を使われておりましたでしょうか?

出井:最近MBTI診断使ってみました!チームを立ち上げるときに、それぞれのペインとゲインを出し合って、お互いにフォローしあう認識をつけました。エンゲージメントガードをつかって価値観の認識合わせも行いました。

 

(Q)ベロシティや幸福度を測っているグラフが非常に気になりました!なんのツールを使っていますか?

出井:グラフはスプレッドシートで実施しています。推進チームに作ってもらっていて、スクラムマスターがスプリントが終わるたびに入力しています。

 

(Q)皆さんに質問ですが、スクラムマスターのロールで動くときはどのようにチームに関わりますか? 具体的に何を話したり、何をリードしていますか? 逆に何が起きているときはあえて静観(あえて放って置く)していますか?

出井:プロダクトに関わる障害やナレッジを他から連絡を受けたときに、迅速にチームに共有します。また、各種スクラムイベントはスクラムマスターがファシリテートしています。メンバーが話に参加できるように議題や状況を見ながら話を振ったりします。あえて静観するのはメンバー同士がスウォーミングや議論になっているときはある程度静観し、議題が発散したり、時間をオーバーしそうなときに適宜、交通整理します。

 

(Q)プロダクトオーナーがやってはいけないことはありますか?

出井:プロダクトオーナーはROIに責任を持つため、Why・Whatに対してプロダクトの将来像を考え、内容を整理して、メンバーに伝えます。そこでHowまでは意識的に書きません。そこはチームが責任を持つためです。あとはあくまでチームはフラットな関係でいる必要がありますので、役職は上下関係だとしても指示したりはしていません。

 

(Q)スクラムのチームに入れる人は、スクラムへの向き不向きで選んでいますか?それとも、だれでもできるという感覚でしょうか?

出井:誰でもできるとは思いますが、チームで働くということが大前提のため、その人の特性などを理解した上でコミュニケーションが難しいなどチームとしての障害になる場合は、リソース調整を上長にエスカレすることはあると思います。

 

(Q)SMが開発チームのTLとのことですが、SMと開発者との間に上下意識が生まれ、チームの自律化の妨げにならなかったでしょうか。

北島:なってるんじゃないかなと思うこともあります。意識的にSMとして身を引くべきことはあると思います。口出ししたくなりますが、時にはお任せしてみるのも良いです。

 

(Q)スクラムに対してネガティブなメンバーのマインドはどうやって変えましたか?

北島:上司の協力も得ながら、今の率直な気持ちをヒアリングしていく。何に対してネガティブなのか?をきちんと向き合う。ここはしっかり時間をかけて実施しました。

 

(Q)課題がリアルでいいですね。良い課題分析。逆に、今後発生しそうな課題(リスク)ってありますか?

北島:細かいものから組織横断的な大きなものもある。スクラムチームで大きなものを担当することもあるが、そこを分断して実施しないと、ノイズになりかねないと危惧しています。

 

(Q)チームビルディング大事ですね、新たに要員入ってくるタイミングなんかではやはり性格診断なんかも必須でやっているのですか?また、チームビルディングに役立っているおすすめツールなんかもあればお聞かせください。

北島:MBTIは参考にしています!これをもとにアイスブレイクで会話してみたり。
どんな価値観や気質を持った人なのか共有されていることは大事だなと思います。
ツールは特に利用していないですが、レトロスペクティブの中で些細なことでもメンバー間で感謝を伝え合うなど、各イベントで意識的なコミュニケーションを実施しています。

 

(Q)アジャイルあるある、みなさんあるかと思います。つらかったあるある聞きたいです。あと、アジャイル最高!と思った話なんかも

小熊坂:スクラム+カンバンが好き。MVPやPoCのように小規模からはじめて、大きくスケールアップしていくのに適した手法だと感じているからです。
辛かったことは、外部から「アジャイルだからすぐできるんでしょ」と言われること。
また既に納期と作るものが決まっているものをアジャイルに頑張って載せたけど、最初からウォーターフォールにしておけばよかったなと後悔したこともあります。

出井:パイロットチームだった。他部門への理解を深めるために説明から入らないといけなかったので、そこはつらかったです。ただ、自身のMBTIがエンターテイナーなので、周囲に伝染させることができたと思っています。
また、パートナーの方と最初は契約上の壁がありましたが、現在では自社の人かと思うくらいプロダクトへの意識が高まって、アジャイル最高だと思いました!

北島:転職してきて間もなく、周りの人のこともよく知らないなかで、「スクラムをやりたいです」を提案していくのは、苦労しました。
「こんな取り組みをしてみました」といっても、すぐに結果が出ないときには不安を感じることもあります。
だけど、成果が見えてくると、やっぱりアジャイル最高!と思えます。

 

(Q)せっかく3社さんいるので「これはウチ独特な気がする」な推進があれば聞いてみたい

小熊坂:社員エンジニアの人数がそんなに多くないので、事業面でのビジョンにコミットしてもらうことに課題があります。コロナ以降はフルリモートなので、来期に全員オンサイトで一日だけ集まって、同じ方向を向いて一年間の開発を進めていくべく取り組みを推進しています。

出井:トップダウンからのスタートなので、スピード感はありました。導入するにあたり、プロモーションビデオを作って、社内SNSを通じて共有し、広報活動も積極的に行いました。

北島:POさんと呼ばれる人がいっぱいいる。ディレクター組織としてメンバーが沢山いるのが、独特なところかなと思います。

 

 

いかがでしたでしょうか、レポートの内容は以上です。

次回のイベントレポートもお楽しみに♪

【イベントレポート】Web3エンジニア勉強会~最新動向・IPFSからみるWeb3~

Web3エンジニア勉強会サムネイル

こんにちは!TECH Street編集部です!

2024年2月15日(木)に開催した、 「Web3エンジニア勉強会~最新動向・IPFSからみるWeb3~」のイベントレポートをお届けします。今回は、Web3に関する最新動向だけでなく、分散型ストレージ、および他の分散型プロジェクトで幅広く活用されているIPFS(InterPlanetary File System)を起点としたWeb3技術についての解説など内容盛りだくさんのセミナーとなりました。その様子をお届けします!

登壇者はこちらの方々!

阿部 一也(あべんべん)/フィンテック養成コミュニティ 共同主催者
Masa ‘Senshi’ Kikuchi/Secured Finance AG Founder & CEO
松田祐征/株式会社オプテージ

早速、内容を紹介いたします!

最初は、阿部(あべんべん)さんの発表です。

Web3概略:手早く把握

Web3概略:手早く把握画像1

 

Web3概略:手早く把握画像2

阿部(あべんべん): 早速ですが、本日お伝えしたいことは、以下の2点です。

  • 思想の多様性を受け入れる
  • 個人の選択と方向性
     

本日のアジェンダ

  • 技術的な視点から見たWeb3
  • ビジネスの視点からみたWeb3
  • 開発における乖離ポイント
  • まとめ

技術的な視点から見たWeb3

まずは技術的な視点から見たWeb3について紹介します。
以下のサイトから「ブロックチェーン開発ステップ」がわかりますのでご確認ください。

roadmap.sh

エンジニアの初心者向けのお薦め本

Web3概略:手早く把握画像6

インフラや言語、ツール、テーマなどいろいろなWeb3がありますが、その中でも「目を付けた方が良いもの」や「これは時代遅れかも」といったものが以下のリンクにそれぞれ載っていますのでご確認ください。

outlierventures.io

Tech Radar(最新技術動向を紹介するガイド)のWeb3版

 

Solidity開発環境の一番人気は「Hardhat」ということも分かります。

こういったものを比較しながら、次に流行りそうなものに目を付けてリサーチをすると、開発も便利になるのではないでしょうか。

Web3概略:手早く把握画像8

Trusted Web

Trusted Webとは、「Webで流通される情報やデータの信頼性を保証する仕組み」に関する概念のことです。Trusted Webが目指すTrustの仕組みは、特定のプラットフォーム事業者やサービスに過度に依存しないことにあります。

例えば、海外の学生の成績を、日本で採用する際の参考にしたいとき、成績に関しての情報を会社側は一切見ずに、秘密計算やWeb3を利用して、その学生の評価ができるようになります。

Web3概略:手早く把握画像9

ビジネスの視点から見たWeb3

次にビジネスの視点から見たWeb3について紹介します。

ブロックチェーンの種類(抜粋)

ビットコインは価格も上がっていて盛り上がってきていますが、ビットコインをスケールするためには日本人の技術者が少ないというのが現状だと思います。

パブリックブロックチェーンの中のイーサリアムのレイヤー2については、特にいろんなものが活発に動いている状況です。パブリックではないエンタープライズのブロックチェーンもいろんな種類があり、それらも平行して動いている状況ですね。

 

Web3概略:手早く把握画像10

Web3 Stack

Web3 Stackについては、以下のリンクからご確認ください。

https://www.coinbase.com/blog/a-simple-guide-to-the-web3-stack

 

Web3概略:手早く把握画像12

 

Web3の注目トピック(抜粋)

個人的に注目しているWeb3のトピックを8つ紹介します。

 

・Lightning Network
Bitcoin ETFの影響で、ますますスケーリングに課題が出るためLightning Networkが注目されると思います。

・RWA
海外のRWAではDeFiが注目されていますが、日本ではDeFi以外も注目されています。大阪万博などとも紐付けて欲しいと思います。

・DeSci
研究の資金調達の透明化と査読者のインセンティブにも繋がるため興味深いと感じます。

・ReFi
一般の企業でも取り組んでいるSDGs・ESGがWeb3側でも当然進んでいます。

・DAO法
年内に施行されると思っています。(以下のセクションで深堀して説明します)

・ウォレット競争/DID・VC
スーパーアプリ化やWeb3の課題となるUX体験でますます注目されています。マスアダプション向けの本格的な対策が進んでいます。(以下のセクションで深堀して説明します)

・プライバシーソリューション
日本が世界に先駆けて進めているTrusted Webなども関連して国内ではますます注目されてると思います。

・セキュリティトークン・ステーブルコイン
Progmatは世界でも注目されてるのでステーブルコイン、セキュリティトークンの流れは必然であると思います。

 

Web3概略:手早く把握画像13

 

DAO(自律分散型組織)

DAOとは、簡単に言うと「ビジョンに共感したもの同士で集まって、自律的に意思決定して組織を運営しましょう」というイメージです。(下図参照)

Web3概略:手早く把握画像14

その法制度を整えようということで、自民党などが協力し、「合同会社型DAO」というものを作り、年内に施行される予定になっています。これが上手くいけば、Web3の発展にも繋がると考えています。

 

合同会社型DAO

 

スーパーアプリ競争からの動線

Web3単体だと、例えば、MetaMaskなどはUXがあまり良くありません。しかし、日本には、PayPayや楽天などいろいろな経済圏があり、その下にはキャリアがあります。それらキャリアインフラを上手く利用すれば、フレクションレスなUX体験を取り入れやすくなると思っており、この導線からWeb3へ繋がっていく可能性は高いと思います。

そして、今後はいろいろなウォレットが発展していき、ウォレット競争が起きると考えています。この辺りは重要なポイントなので、注目していきたいです。

 

Web3概略:手早く把握画像15

 

Web3も最新技術と融合していく

Web3も最新技術と融合していくので、みなさんの知見と組み合わせて「新しい仕掛けをつくり」や「Web3だからできる」というものを考えていけたらいいですね。

Web3概略:手早く把握画像16

開発の視点での乖離ポイント

最後に開発視点での乖離ポイントについて紹介します。

ポイントとしては以下の3点です。

  • 開発アーキテクチャが1.5倍規模になる
  • トークンの発行、コード監査のスケジュールを開発工程に取り込むこと
  • 分散側で管理する情報を、中央型に二重持ちしないこと

Web2とWeb3アーキテクチャの違い

フロントは同じですが、バックエンドのところからブロックチェーンの技術を使用したり、ストレージのところはIPFSなどを使用します。しかしこれだけで作れるものはかなり少なく、実際にはミックスしたものになる印象です。完全なWeb3を作るのは、凄い人たちでしか作れないというのが現状です。

Web2とWeb3のアーキテクチャの違い
Web3のセキュリティ

Web3にも、Web2と同様に様々なセキュリティスタックがあります。

Web3概略:手早く把握画像20

分散型ストレージ

分散型ストレージは複数のノードにデータを保存し、単一障害点を排除して安全性・アクセス性を向上させる方法です。

 

Web3概略:手早く把握画像22

まとめ

思想の多様性を受け入れる

私たちの技術社会には、1つの正解だけではなく、多様な文化や思想が存在します。Web2とWeb3は、それぞれ異なる技術的思想を代表しており、この多様性は私たちの進化の一部です。1つの思想が全てに適しているわけではなく、存在する様々なアプローチを認識し、受け入れることが重要です。

個人の選択と方向性

あなたには、1つの体と有限の時間があります。Web3の技術は、中央集権から分散型のアプローチへとシフトし、データの所有権や透明性に新たな視点を提供します。しかし、これはWeb2の延長線上にあるわけではなく、根本的に異なる思想に基づいています。今日の話を通じて、どちらの技術的思想に価値を見出すか、自身にとってどちらが適しているかを考えてみてください。

まとめ

阿部(あべんべん)さん、ありがとうございました!
続いては、Masaさんの発表です。

 

IPFSからみるWeb3

IPFSからみるWeb3画像1

docs.google.com

Masa:私はIPFSのファンでもあり、そしてIPFS・Filecoinのエコシステムの中に入り、「Secured Finace」というプロジェクトを、Founder兼CEOという立場でやっています。そのような感じでがっつりとWeb3プロジェクトに携わっています。

この発表では、皆さんにとって、「IPFSという入り口をきっかけに、Web3というものが少し理解できるようになる」そんなお手伝いができたらと思います。

IPFS・P2P分散型技術・Web3/Cryptoとの関わり

これまでの関わりを以下にまとめました。

 

Web3とは何かを翻訳

2019年に、Juan Benet氏のプレゼン「Web3とは何か」を翻訳しました。
Juan Benet氏はIPFSやFilecoinを作った人で、そんな彼が「Web3とは何か」というプレゼンをしてくれました。(このプレゼンには、私も感銘しました)
現在は、Web2とWeb3の境目にグラデーションがあり、複雑化していますが、「そもそもピュアなWeb3は何を目指しているのか」という原点を考えるときにとても参考になります。

 

IPFSワークショップを企画・開催

IPFSのワークショップを企画・開催しました。Steven Allen氏というIPFSについて何でも知っている人や先ほど紹介したJuan Benet氏など、豪華メンバーが来て、プレゼンをしてくれました。これらを取り仕切ったことで、少しずつ信用を獲得していき、海外のWeb3の中の1つのエコシステムの潮流に入り込むことができたと思っています。

日本初!IPFS Workshop Tokyo - connpass

 

ハッカソンに参加

2020年にハッカソンに参加して、そこで今やっているDeFiの「Secured Finace」の内容を提案し、それが評価されて受賞することができました。

IPFSからみるWeb3画像2

IPFSの誕生背景とブロックチェーンとの関連性

IPFSの誕生背景

Juan Benet氏はそもそも自分で通信プロトコルを0から作ろうとしたわけではなく、インターネットを使っていて問題を発見したのがきっかけでした。それは、もの凄い再生回数のYouTube動画があり、サーバーに負荷がかかっているのをみて、「同じデータが世の中を何度も行き来しているのは無駄だな」と思ったそうです。

そこでJuan Benet氏は「何でもすべて中央集権的にやるのではなく、もっと効率的にできるはずだ」と考えました。そこでアドレス指定ではなく、「コンテンツのハッシュをアドレスとして使う方がよいのでは」という考えから、IPFSは誕生しました。

 

分散型のアプリケーション

Secured Financeでは、たとえ大統領が「サーバーを落としなさい」と指示を出したとしてもシャットダウンすることができないアプリケーションが動いています。それは、凄いことだと感じていて、ブロックチェーンとの相性の良さはあると感じています。
しかし、IPFS自体はブロックチェーンやトークンではありません。経済的なインセンティブとは切り離された純粋なプロトコルレイヤーとして機能しているので、そういう意味でも広く使いやすく、みなさんに受け入れられていると思います。

IPFSからみるWeb3画像3

IPFSの基本原理

IPFSとは何か、その動作原理の説明を以下のリンクの資料でしておりますのでご確認ください。

分散ハッシュテーブル(DHT)

DHTの基本的なアイデアは、ファイルの検索を効率化するために、ネットワーク全体で1つの巨大なハッシュテーブルを構築し、それをネットワーク全体で維持するという点です。

IPFSからみるWeb3画像5

IPFSとWeb3エコシステムの重要性

IPFSがWeb3エコシステムにおいてどのような役割を果たしているのか。
その一例として、IPFSから誕生したlibp2pはEthereum2.0からdevp2pの代わりに使われるようになり、ブロックチェーンノード間の通信プロトコルとして極めて重要な役割を果たしています。

IPFSからみるWeb3画像7

Web3業界の発展とエンジニアのキャリアパス

Web3とはいえ、結局は人との繋がりが重要です。人との繋がりで可能性や仕事が増えています。私の場合、ワークショップや海外で行われているハッカソンなどにどんどん参加し、最初の糸口やきっかけを作り、人と仲良くなり、それから道が開けていきました。

なので、まずはそのようなボランティアベースで貢献することから始めると、チャンスやキャリアパスが見えてくるかもしれません。

IPFSからみるWeb3画像8

最後に、質問や雑談などありましたらご連絡ください。
ありがとうございました!

IPFSからみるWeb3画像9

Masaさん、ありがとうございました!
続いては、松田さんの発表です。

 

Web3エンジニア進化論

Web3 エンジニア進化論画像1

www.docswell.com

松田:本日の発表では

  • Web3に触れて1年ちょっとのエンジニアの体験談
  • エンジニアはどういう面持ちで向き合えばいいのかという、Web3の歩き方

を私なりの体験談を踏まえてお伝えしたいと思います。

Web3 エンジニア進化論画像2

Web3取り組み内容

2022年、社内の有志の集まりからスタートし、それまで弊社においてWeb3に関しての知見は全くなかったため、ドメイン知識の習得からはじめました。当初は個人的に勉強をするという感じでした。

そして半年後、Web3アプリを制作し社内イベントで発表をしたらウケが良く、上層部の人から、700〜800万円ほどするValidatorに「会社のお金を使ってよい」と許可を出していただきました。そして、数名の部下を集めて運用を始めたのです。

今ではありがたいことに、いくつかの会社さんとビジネスPoCをさせていただいています。

Web3 エンジニア進化論画像5

上図の赤枠の取り組み内容について深掘りします。

P2P伝搬技術の調査

「P2Pの伝播はどうなっているのか」「どうすればもっと良くなるのかといった研究」や「技術開発がどのように行われていったのか」などの文献を振り返りました。

Web3 エンジニア進化論画像6

では、「なぜ伝播技術が大事なのか」を改めて振り返ると、それはVISAやPayPalなどの中央集権型と比べて、分散型のビットコインなどは、取引できる処理数が圧倒的に異なるからだとわかりました。

Web3 エンジニア進化論画像7

その処理数を引き上げようとすると、「ブロックサイズを上げる」か「ブロックの生成間隔を短くするか」しかありません。しかしそれには弊害があります。

Web3 エンジニア進化論画像8

その弊害とは、いわゆる「ブロックチェーンのトリレンマ」といわれているものです。つまり「スケーラビリティ」「リスク分散化」「セキュリティ」が両立しないという考え方です。

このように「それはなぜなのか」といったところをまずは体系的に理解し、1つ1つ紐解きました。このような取り組みは重要だと感じます。

Web3 エンジニア進化論画像9

ノードオペレーション

実際にEthereumノードを構築し、Validatorを運用しました。このように、初めは必ず実機を使うことを推奨しています。

例えば、dockerなどを使えば、いい感じのコンポーズファイルが用意されていて、少し手を加えるだけで動いてしまいます。しかしそれでは、自らブラックボックスを作ってしまっていると思い、やはり最初は自分から手を動かして、「経験知」を得ることが大事だと思います。

また、以下のようなWeb3特有の様々な検討障壁にぶち当たることで自己成長にも繋がりました。

  • 秘密鍵はどうやって生成するのが安全か
  • 安全にオフライン保管するべきものがたくさんある(ニーモニック、ウォレットパスワード、パスフレーズetc)
  • クライアントソフトウェアの組み合わせをどうするか

Web3 エンジニア進化論画像10

そして実際に触れば触れるほど、いろいろな謎が雪だるま式に出てきます。

下図のグラフはValidatorが稼いだ日銭のグラフですが、ここにあるパラメーターの数値がどのようにして算出されているのかすら、当初は、なかなか分かりませんでした。もちろん英語の文献もいくつかありますが、それを見ながら計算してもなかなか合いませんでした。そこで、最後は「ソースコードとにらめっこをしながら、検算をして数式を確認する」といったことをして、初めてブロックチェーンの挙動を理解することができました。

進めるたびに謎が深まりましたが、振り返ればとても良い経験だったと思います。

Web3 エンジニア進化論画像11

実際にノードをビジネスユースで動かそうと考えると下図のようになると思います。

Web3 エンジニア進化論画像12

Web3アプリの開発

Web3.js(とGPT)を活用して、独自トークンを扱うアプリ「まなびっとコイン」を自作しました。

背景として、弊社では、就業時間内に自己啓発をしても良いという社内制度ができたのですが、その名前が「まなびっと」というもので、これを聞いたときに、「ビットコイン」をもじったアプリが作れるのではないか、と思ったのがきっかけです。(笑)

動きとしては、Slackにどのような学び(自己啓発)をしたのかを書き込むと、ボットがそれをAIに投げて、AIが採点をします。そしてその結果、採点に応じた「まなびっとコイン」が与えられる、というアプリです。

Web3 エンジニア進化論画像13

下図は実際の動作画面です。投稿者がボットをメンションします。そして、ここに「まなびっとコインアドレス」というものを一緒につけて送ると、最終的にまなびっとコインを付与してくれます。

Web3 エンジニア進化論画像14

裏側では、Event発行コントラクトとERC-20トークンコントラクトで構成されています。

Web3 エンジニア進化論画像15

ここまで、「P2P伝搬技術の調査」「ノードオペレーション」「Web3アプリ」について話してきましたが、なぜこの3つを紹介したかというと、それは「ネットワーク」「サーバ」「アプリ」と、それぞれのエンジニアリングに対応しているからです。

ここから紐づいて必要になった技術スタックやドメイン知識は下図に書かれている通りです。(実際に私がここ1年で理解したものです。)

Web3 エンジニア進化論画像16

最低限でもこれだけの知識を理解しなければ、おそらくイーサリアムを正しく理解できないと思います。これを教えてくれる人は誰もいませんし、本もあまりありません。だからこそ、「なぜその技術があるのか」を振り返ることがとても重要だと思います。

例えば、ビットコインもいきなり生まれたわけではありません。「2009年に発表されたSatoshiの論文でも何をいっているのか」それをきちんと理解することがエンジニアとして必要なのではないかと思います。

エンジニアはWeb3というモヤモヤしたテーマをどう捉えるべきか?

  • 「Web3エンジニア」という言葉にすごく違和感を感じませんか?
  • 「Web3」に特別で明確な技術領域があるように思わせるが、、、
    (そもそも「Web2エンジニア」とかって呼んでました?)

上記の2点について、共感する方もいらっしゃるかもしれません。
私が実際に触ってみた実感として、技術はいつだって既存技術からの延長線で成り立っており、境界線はないと思いました。また、言うまでもなくアプリ領域に閉じたスキルでもないと考えています。

Web3 エンジニア進化論画像17

まとめ

  • ブロックチェーンは最新の暗号手法やアイデアが実験的に次々と投入される領域でもあり、頻繁に改廃がなされます。常に最新情報を追いかけなければ追随できません。
  • しかもこれらに関する、まとまったドキュメントはほとんどありません。英語圏の情報を追跡し、かつソースコードを自ら読み解きながら自己検証し、自己進化していけるエンジニアが絶対的に求められます。
  • 逆説的に言うなら、Web3エンジニアはそれがすでに自然と身についている人材のことを指していると言えると思います。

ぜひ皆さんも理想とするWeb3エンジニアを目指してください!

Web3 エンジニア進化論画像18

最後に、リファラル採用をやってますので、興味ある方はご確認ください。

Web3 エンジニア進化論画像19

 

松田さん、ありがとうございました!
続いては、Q&Aのコーナーです。


Q&Aコーナー

(Q)国内のユーザがNFTにまつわるエコシステムを自然と受け入れていくためには、現時点でどのような課題があると思われますか?

阿部(あべんべん):離脱をなくす動線の作りがとても難しいです。ウォレットのところなど、いかに離脱しないかを作っていく必要がある。ひとつひとつが重要になっていくと思います。

Masa:Web2とWeb3のシームレスな体験が設計できるといいかなとおもいます。

松田:UIが成熟していないため、現状ユーザ側にエコシステムに関する高度な知識が必要。UIが洗練されエコシステムという言葉を使わない世界になれば受け入れられると思います。(哲学)

 

(Q)フィンテック界隈と別の界隈とでWeb3の進み方の圧倒的な違いはありますでしょうか?

阿部(あべんべん):フィンテック界隈だからといって、Web3がそこまで進んでいるわけではないです。フィンテック界隈でも、興味のない会社はたくさんあります。

Masa:トークンインセンティブによる投資家の動きは早いなと思います。トークンは上場までの道のりが短いので、スタートアップのスピード感が段違いで、ついていくのが大変だなと思ってます

 

(Q)IPFSは削除ができない(=いつ削除されるかわからない)という認識があります。分散型ストレージで削除が保証される(即時では無くてもよい)ものはありますか?

Masa:削除を保証したいのであれば、完全分散型だと難しいかもしれません。一度公開されると、永続的に残る可能性が高いというコンセプトがあります。ガーベジコレクションのプロセスで、削除されちゃうこともあります。削除したい可能性があるなら、中央集権型が良いと思います。


(Q)IPFSは、ファイルコインをつかわなければならず、もっと、つかわずにいい方法あるか。

Masa:IPFS自体はファイルコインを使わずに無料で使うことができますので、是非お試しください。デスクトップアプリもあります。

 

(Q)数年前の知識で止まっているので申し訳ないのですが、IPFSの信頼性(データ消える)という課題を記憶しております。現状での信頼性や課題について最新状況のお話をお聞かせいただけますでしょうか。

Masa:自分でノードたてて自分でもピンしておく。最悪、なくなっても自分でピン留めしておくことで無くなる心配もないし、意外と動きもよくなります。


(Q)いまのWeb3界隈に必要なのは「戦士」以外にどんな職業でしょうか?ドラクエでいう「勇者」に頼るのは違うかなと思うので、FF3の職業に当てはめてお聞きしてみたい(むちゃぶり)

Masa:武闘家上りの賢者とか、遊び人上りの賢者とかそういう、総合格闘技のような


(Q)sensiの意味はそういうことだったんですねw

Masa:はい、オニオン剣士から影響を受けてます!


(Q)IPFSとDAOの2つを人に説明する解説するときにいつも「IPFSは技術、DAOは仕組みであり、ある意味思想」とザツな回答しているのですが、良い説明の仕方があれば教えていただきたいです

Masa:IPFSは通信プロトコルの一種で(TCP/IPとかHTTPみたいな)、DAOはコミュニティなど人の集まりを一括りにしてエンティティとして扱おうとするときのまとまりの呼び方、とかですかね、、


(Q)海外の勉強会やセミナーはどこがお薦めですか? (オンラインで参加できるもの)

Masa:ETHGlobalがやっているイベントとその前後で開かれる各プロジェクトのワークショップ、あとはA16Zなどが出しているレポートなどを読むとよいです!


(Q)先進的な取り組みを推してくれる上司さんがいたからこそというお話は羨ましい。この辺りの取り組みをされているのは新規事業開発的な専門部署があるのでしょうか?それとも横串的な組織なのでしょうか?

松田:新規事業開発を担当する専門部署が企画全般を主導しており、我々技術部隊はエンジニアとしての観点から知見を与える役割でジョインしていました。興味を持つ人をどんどん増やしていく活動も並行して行ってきました。JTCでも今後はこういったエンジニアの活躍の幅は増えていくと思います。


(Q)ご登壇いただくみなさんにお聞きしたいのですが、Web3に関連してこの先注目になりそうだと思うワードを技術視点とビジネス視点でお聞きしたいです。

阿部(あべんべん):スーパーアプリ側からくるWeb3が気になっています!

Masa:アカウントアブストラクション、UI/UX、機関投資家のDeFi参入、DePIN (Decentralized Physical Infrasctucture)、オラクル、zk-KYC/AML

松田:「CASE」といわれる自動車の革命が気になっています。今後ロボットの方が人間より数が増える世の中になるといわれている。そのときにブロックチェーンとの相性が良いと考えています。


(Q)本日の発表資料は公開されますでしょうか?

Masa:https://docs.google.com/presentation/d/1jmCUkzb_MjYfF-sZaglSniO-_bV7mjTeuDfWcLCfcn0/edit?usp=sharing

松田:https://www.docswell.com/s/mahiro/ZNR6LW-2024-02-20-160845


(Q)これからエンジニアを目指したい立場なのですが、Web3関連に興味があります。エンジニア未経験の場合は、どこから開始すべきでしょう?まだ技術がないため初歩すぎる質問ですみません。

Masa:x(Twitter)をフォロー、Web3/Cryptoイベントへ参加、ワークショップへ参加、好きなプロジェクトを決める、大きなエコシステムを決めてどのように物事が進んでいるか把握、キーパーソンと同じ問題意識を共有、ハッカソンに参加、開発に貢献、ドキュメントの手伝い、グラント獲得、スタートアップアクセラレーターに応募など。

松田:常に一次情報をしっかりと把握・理解することが肝要だと思います。私はSatoshi Nakamotoのビットコインホワイトペーパーを読むことから始めました。
そしてビットコインをある程度理解していれば、イーサリアムにもスムーズに入っていくことが出来ます。まずはこの2つのネットワークを理解することができれば、後は応用が利くのではないかなと思います。


(Q)ウォレットのUX問題。。。。ユーザーとしてもやきもきするときがあります。 公衆Wi-Fiを使用してウォレットから資産が抜き取られるなどのネガティブnewsもふくめイメージを変えていきたいですね。

Masa:金額に応じて使い分けられたり、ガスを自分で負担しなくてもよくなったり、Emailのスパムフィルタが改善したような技術的な改善を期待したいです。

松田:「秘密鍵を個人が適正に管理できること」は実は非常に高いリテラシーの要求であることが意外に忘れられがちですよね。基本的にWeb3アプリは、秘密鍵を一般人が遍くミスなく運用できる世界観を前提に置いていますが、おそらく開発者サイドはその前提認識を変える必要があると思います。


(Q)DAO、掲げることは高尚だと思うのですが実際に進んでない現状が残念感だったのですが、DAO法で実際に変わりそうでしょうか?懸念点と希望がありそうな点があればお聞きしたいです。

Masa:日本の法人がDAOに進出しようとする際に既存の枠組みを利用して法人格を得られる(銀行口座がつくれてFiat<>トークンがやりやすくなる)、国内の(non-web3)一般企業と取引が可能になる、トークンによるガバナンスや資金調達が可能になることで、株式に頼らない起業が普及すればよいとはおもいます。一方、海外のオフショアを活用したDAOは主な流れとして続くと思いますので、DAOで実現しようとする世界の規模感(海外投資家からの出資までは不要な地方限定DAOみたいなケースなど)によって使い分けるのかなと思います。


(Q)Web3話題とは趣旨が異なりますが、通信系のエンジニアからエンジニアのマネジメント職に移ったのは、いま思えば正解(成功?)でしたか??というのと、マネジメントと合わせてブロックチェーン技術の推進は大変じゃないですか??

松田:メタなご質問、誠にありがとうございます(笑)
あくまで個人的な主観ですが、エンジニアを究める道の方がそりゃ自己実現という意味では遥かに有意義であったろうと思いますね(笑)。マネジメント職で技術力を高めるためにはプライベートを削る覚悟が必要です。一方でチームとして多くの部下が最先端の技術を習得しパフォーマンスを発揮してくれるようになれば、それはそれでとても有意義なことであり、正解は一つではなかったと感じます。
とりわけブロックチェーンの推進には以下の障壁があると考えます。①手本となる資料・文献が極端に少ないこと、②OSS・コミュニティ主導のプロダクトであること、③とにかく英語が必修科目であること。これら3つの特徴が他の分野とは大きく異なる点であり、こういった空気感が生理的に合うか合わないかはエンジニアにとって重要な指標になるかもしれません。


(Q)エンジニア実績なし状態だとするとWeb3取り組みは厳しいでしょうか?エンジニアを目指して少し前に初めてIoT関連のチャレンジ始めた(ラズパイ買って)のでお聞きしてみました。

Masa:Discordコミュニティ運営や、マーケティングや、記事執筆など、結構Web3はやることが膨大にあります!

松田:Web3と言っても幅広くて、プレゼンでお話ししたようにNW,サーバ,アプリそれぞれの領域で非常にdeepなエンジニアリングがなされており、それらが協調して動作しています。誰しもがフルスタックになる必要は必ずしもなく(それは組織として有していれば良い話ですので。)、もっと言うとエンジニアに限らず得意領域を見つけていくのがいいのではないでしょうか。実際に私もビジネス・営業センスは欠片もありませんので、そこはスッパリと割り切っております。

 

(Q)「Web3エンジニア」に違和感、スーパー同意です

松田:ありがとうございます!
どこかで読んだのですが、Web3という言葉を人々が使わなくなった時がWeb3が人々に受け入れられた時だと書かれていました。首がもげるほど頷きました。

 

 

いかがでしたでしょうか、レポートの内容は以上です。

次回のイベントレポートもお楽しみに♪

【イベントレポート】エンジニアの自由研究発表会vol.9 IoT/ローコード開発/アプリ開発etc~業務外でエンジニアスキルを活かしてみた!

エンジニアの自由研究サムネイル

こんにちは!TECH Street編集部です!

2024年1月18日(木)に開催した、 「エンジニアの自由研究発表会vol.9」のイベントレポートをお届けします。毎回大好評の自由研究発表会!今回も個性的な発表ばかりで、大盛況のイベントとなりました。

登壇者はこちらの方々!

かーでぃさん
にっくさん/オシロ株式会社 リードエンジニア
鈴木 潤さん/パーソルホールディングス株式会社 
うーたんさん/株式会社ゆめみ エンジニア

早速、内容を紹介いたします!

まずは、かーでぃさんの発表です。

マイコンで動かす「シャアザクくん vs ズゴックくん」

マイコンで動かす「シャアザクくん vs ズゴックくん」画像1

docs.google.com

かーでぃ:今回の発表では、ガンダムファンにはおなじみの「シャア専用ザグ」と「ズゴック」の2つを歩かせてみたという話です。バンダイから発売されているガチャポンのシリーズにエクシードモデルというものがあり、それを使用します。

マイコンで動かす「シャアザクくん vs ズゴックくん」画像2

動画デモ

では「歩かせる」とはどういうことか?
百聞は一見にしかず、ということでまず動画を見ていただきたいと思います。

このようなものを作っていきたいと思います。

準備するもの

・SG90
・ATOMS3 Lite
・EXCEED MODEL

マイコンで動かす「シャアザクくん vs ズゴックくん」画像3

ATOMS3 LiteはESP-S3コントローラを搭載した非常に小さなモジュールです。製品サイズはわずか24×24mmで、さまざまな組み込みスマートデバイスアプリケーションに適しています。ボタンやLEDも乗っていて、このままでも遊べるようになっています。

マイコンで動かす「シャアザクくん vs ズゴックくん」画像4

作ってみた

試作1号機:めちゃくちゃ雑なシャアザクくん

試作1号機が下記の写真です。
シャアザクくんは、上半身と下半身に分かれるようになっています。そして、下半身に穴をあけてサーボモーターを仕込みました。ビニールテープで止めたり、裏側はパテで固めて止めています。

それと、シャアザクくんを前進させるために、少し前の方に小さなオモリを入れて、体重をかけてみたり試行錯誤してみましたが、あまり効果はありませんでした。
モーターやLED用にケーブルを5本使っているので、その重さも前進を難しくする原因かもしれません。

マイコンで動かす「シャアザクくん vs ズゴックくん」画像6

試作2号機:シャアザクくんの雑さを踏まえて‥ズゴックくん

試作2号機が下記の写真です。
ズゴックくんは中身がすっからかんだったので、固定するために発泡スチロールを縮めて入れることで、中でキュッと固定されました。

前進させるために、少し前傾姿勢で作りました(写真中央)。しかしなぜかムーンウォークのように後ろに下がってしまったので、足の裏に輪ゴムで滑り止めを付けました。その結果、推進力のあるズゴックくんが出来上がりました。

マイコンで動かす「シャアザクくん vs ズゴックくん」画像7

サーボモータの制御

サーボモーターの制御はUIFlow2.0というビジュアルプログラミングツールを使っており、スクラッチのようにブロックを積み下げていきます。

マイコンで動かす「シャアザクくん vs ズゴックくん」画像8

実際の制御プログラム

これくらいでサーボモーターの制御が出来てしまうので、とてもシンプルで簡単なプログラミングツールです。

マイコンで動かす「シャアザクくん vs ズゴックくん」画像9

試作3号機は「ボール」を考えていますが、足があるわけではないので、どうやって動かそうか…検討中です。

マイコンで動かす「シャアザクくん vs ズゴックくん」画像10

ブログでも今回の内容を紹介しているので、興味ある方はご覧ください。

マイコンで動かす「シャアザクくん vs ズゴックくん」画像11

それと、IT × ガンダムLT大会 というイベントもありますので、ガンダム好きな人やIT系に興味がある人はご連絡いただけると嬉しいです。

マイコンで動かす「シャアザクくん vs ズゴックくん」画像13

最後になりますが、やっぱりモノづくりは楽しいです。
プログラムやデジタルで完結するものも楽しいですが、やはり実際に見て、触れて、いじれるモノづくりは楽しいなと実感しました。みなさんもぜひ!

かーでぃさん、ありがとうございました!
続いては、オシロ株式会社のにっくさんの発表です。


WebComponentsでフレームワークを1ページに共存させる

 

 

にっく:昨今「Webフロントエンドの正解が分からないな」と思っています。

例えば

  • React.jsやVue.js、いろいろな技術があるが、トレンドがすぐに変わってしまう
  • それでも使う技術の失敗はしたくない
  • ライブラリやフレームワークがたくさんあって、何を選べはよいかわからない

などと、みなさんもお困りではないでしょうか。

「選べないので、では気になるものを全部入れてしましたい」と考えていたある日のこと。
Web Componentsに出会いました!

WebComponentsでフレームワークを1ページに共存させる画像2

Web Componentsの概要

独自のHTMLタグを定義してその中にJSで処理を書いたりということが可能で、「オレオレHTMLタグ」を作ることができます。

現代のほとんどのモダンブラウザでサポートされていて、特定のライブラリに依存することなく、VueやReactみたいにコンポーネントが作れ、CSSなど処理のカプセル化ができます。

WebComponentsでフレームワークを1ページに共存させる画像4

Web Componentsのメリット

  • 現代のほとんどのモダンブラウザで追加のライブラリなしでコンポーネントが作れること。
  • 特定のライブラリに依存することなく、VueやReactのようにコンポーネントが作れ、CSSなど処理のカプセル化ができること。
  • 「connectedCallback」でコンポーネントの初期化処理や「disconnectedCallback」でDOMからコンポーネントが削除されたときにイベントリスナーなどをクリーンアップすることができること。

WebComponentsでフレームワークを1ページに共存させる画像5

下記の画像は、Web Components のサンプルのコードです。これは、カレントタイムというタグを作って、現在時刻を表示させる、といったものです。

WebComponentsでフレームワークを1ページに共存させる画像6

できないこともある

  • React、Vueのようなライブラリと比べるとかなり機能が少ないです。なので、Web Componentsだけで複雑なWebアプリケーションを作るのは少し厳しい印象があります。
  • 基本は普通のHTMLタグと同じですが、一部CSSに問題があるのでちょっとコツが必要です。
  • そのままの状態だとSSR(サーバーサイドレンダリング)は対応していません。

WebComponentsでフレームワークを1ページに共存させる画像7

段階的なライブラリの移行には使えそう・・?

「今はVue.jsを使っているけど、今後はReactを使っていきたい」
「数年後には別のフレームワークを使って開発していきたい」

などと思うこともあるかと思います。

このCustomElementをライブラリのマウントポイントにすることで、初期化処理やクリーンアップも簡単で、無理なくライブラリの共存させることができそうだと感じました。

WebComponentsでフレームワークを1ページに共存させる画像8

Web Componentsで作ってみたデモンストレーションサイトはこちらです。

WebComponents + Vue, Svelte, Preact

WebComponentsでフレームワークを1ページに共存させる画像9

青:Preact、緑:Vue.js、赤:Svelte、黄:WebComponents、とそれぞれ異なるフレームワークを使って作っています。それぞれが独立して動かせるカウンターになっています。

デモンストレーションの画面

ざっくり解説すると、HTMLは以下画像のような感じに、<counter-app>でReactのアプリケーションが読み込まれて、<vue-counter-app>などでも同様にそれぞれアプリケーションが読み込まれています。

WebComponentsでフレームワークを1ページに共存させる画像11

この仕組みの良いところ

  • 最初に使うCustomElementsを修正する必要がないので、他に難しい仕組みを必要としないでライブラリの段階的な移行がしやすいところです。
  • createAppとか毎回書かなくて良いので後始末が楽です。
  • デモのように異なるライブラリを共存させることもできます。

WebComponentsでフレームワークを1ページに共存させる画像13

その他メリット

Intersection Observerを使ってWeb Componentsが画面に表示されたタイミングでコンポーネントをロードすることもできます。このようにすれば初期読み込みに必要なJSファイルを少なくできます。

WebComponentsでフレームワークを1ページに共存させる画像14

実はもっと良い方法も有る

Web Componentsを使う以外にもAstroというフレームワークで同じようなことができます。他のライブラリもあると思います。
おまけにSSR(サーバサイドレンダリング)もできます。

WebComponentsでフレームワークを1ページに共存させる画像15

まとめ

Web Componentsを使って、Svelte・React・Vueを共存させる方法を紹介しました。
Web Componentsの特徴としては、特別な技術を使わずともブラウザが1つあれば試すことができる仕組みになっているので、今すぐに試せます。コードを読み込む仕組みもとてもシンプルですのでぜひ実施してみてください。

WebComponentsでフレームワークを1ページに共存させる画像17

最後に、オシロテックブログを中心にWeb Componentsや技術について色々発信していますので、よろしければそちらもご覧ください。

WebComponentsでフレームワークを1ページに共存させる画像18

にっくさん、ありがとうございました!
続いては、パーソルホールディングス株式会社の鈴木 潤さんの発表です。

 

AIとAWSで現世から離れる試み

AIとAWSで現世から離れる試み画像1

 

 

鈴木:この発表では、自分の代わりに「AIがシステムを作ってくれるシステム」をつくりましたので、その話をしたいと思います。

実際の作ったシステム

AIが何か適当にシステムをつくってくれる気がするシステム


下記画像が実際に作ったシステムの画面です。

使い方としては、「Enter your prompt here」と書かれているところに、自由にプロンプトを入れていただけます。

もしくは、例えば「todoアプリ作ってください」と、入れてもえば、Webのフロントエンドに相当するもの(HTML・CSS・JavaScript)をAIが書いて、そのソースコードをZIPとして出力します。それをダウンロードしてZIPを解凍すると、フロントエンドのアプリが動く、というものが生成されるシステムになっています。

実際に作ったシステムの画面

背景

では、なぜそのようなシステムを作ったのか。
例えば上司から「これをやってください」と言われ、気持ちが進まないまま「わかりました」と作業に取り掛かる場面があるかと思います。

AIとAWSで現世から離れる試み画像4

それ以外の状況として、日々の業務で「もっと生産性の高いことがしたいな」と考えておりました。

例えば、Twitter(X)で実業務に活きるような情報を収集したりしているのですが、私にとってその情報収集することこそが、本当の意味での生産性に繋がる業務だと思いました。

AIとAWSで現世から離れる試み画像5

そのため、Twitter(X)での情報収集の時間を増やしていきたい!と思い、それら課題を解決するモノとしてこのシステムを作りました。
それが、私が本来やらなければならない仕事を、AIが代わりにやってくれるシステムです。

AIとAWSで現世から離れる試み画像6

システムの構成

このシステムがどういった仕組みで動いているのか、コアの部分だけ説明させていただきます。
ユーザーがプロンプトを入力すると、Gemini Proが生成してくれます。
そしてHTML・CSS・JavaScriptそれぞれのソースコードを出力してくれて、それをNode.jsが個別のファイルに切り出して圧縮してくれます。

AIとAWSで現世から離れる試み画像8

最終的に、S3 BucketにアップロードされたファイルのURLをクリックして、ユーザーはその圧縮ファイルをダウンロードします。ローカルなどで圧縮ファイルを解凍させると、AIが書いてくれたアプリを動かすことができます。

AIとAWSで現世から離れる試み画像9

では、実際にどのようなプロンプトでどのようなアプリができるのか。
例として、以下のサンプルプロンプトを入れてできたBMI計算機が下記画像のものです。

サンプルプロンプト
  • 機能: 身長と体重を入力して、BMIを計算する
  • UIデザイン: マテリアルデザイン
  • 背景色: 淡い茶色
  • ボタンの色: 淡い緑色
  • ボタンの形: 角丸
  • BMIの計算結果を伝えるメッセージの語尾に "なのだニャン!!!" をつけてください。
  • PCの画面幅でもスマホの画面幅でも操作しやすいUIにしてください。

AIとAWSで現世から離れる試み画像11

応用例

場合によっては「Reactなど外部のライブラリを使った上でのJavaScriptが必要なケースもあるかもしれない」と思い、現状のシステムでどうすればよいかを工夫してみました。

例えば外部のライブラリがCDN上に上がっているものであれば、

  • このプロンプト中にCDNを読み込むためのスクリプトタグを書いてあげて、これをHTMLで含めてください
  • その上でReactが使える前提でコードを記述してください
  • BMIを計算するアプリを作ってください

と工夫することで、React前提のソースコードが出力されてたりするので、プロンプト次第で面白いことができそうだと感じました。

AIとAWSで現世から離れる試み画像12

まとめ

成果

部分的に、システムの作成をAIにやらせるという仕組みができました。これにより、Twitter(X)でのインターネット監視活動が捗り、さらなる生産性の向上に寄与することが期待できます。

今後の展望

今回は単純なフロントエンドのみ開発をAIに任せる仕組みの開発でしたが、同様の手法でサーバーサイドのプログラムの開発を任せることも可能だと思います。またnpmやyarnなどのコマンドに渡すパラメーターをAIに判断させることで、外部ライブラリを使った開発も、現状よりもさらに柔軟なシステム開発を任せられることが予想されます。

AIとAWSで現世から離れる試み画像14

 

鈴木 潤さん、ありがとうございました!
続いては、株式会社ゆめみのうーたんさんの発表です。

 

Next.js で Ruby をプログラミング&実行できるアプリを作る

Next.js で Ruby をプログラミング&実行できるアプリを作る画像1

speakerdeck.com

うーたん:この発表では、Next.jsでRubyをプログラミング&実行できるアプリを作ったのでその話をしたいと思います。

それでは、まずは作った物を紹介します。

実際のアプリ

コードの場所に、簡単なコードを書いています。
「user_input」のところに変数が入ってきて、それを後ろから合体させて、出力させています。 

「puts」という関数はRubyにありますが、「put」という関数はRubyにはないので、その場合、エラーになります。このように条件分岐ができるようになっています。

デモ画面/エラーだった場合

このようにRubyのコードをNext.jsのみで実行できます。

仕組み

Server ActionsはNext.js 14でStableになった機能です。
まずはユーザーが文字列を入力し、それをNext.js側で処理をします。Server Actions(サーバー側で実行される関数)で、WebAssemblyを呼び出し、WebAssemblyはRubyを実行できるので、その結果をユーザーに返しています。

仕組みの一覧図

クエリパラメータについては実行の前後で変わっており、サーバーサイド側でクエリパラメータを取得しています。

Next.js で Ruby をプログラミング&実行できるアプリを作る画像7

Server Actions and Mutations

サーバーアクションは、サーバー上で実行される非同期関数です。サーバーコンポーネントやクライアントコンポーネントで使用し、Next.jsアプリケーションのフォーム送信やデータを処理します。

Next.js で Ruby をプログラミング&実行できるアプリを作る画像8

Server Actions 

  • フォームのsubmitが押された時にサーバーで関数が実行される。
  • フォームの入力内容を受け取り処理できる。
  • onAction関数にRubyを実行するコードを書く

Server Actionsの構成

次に、サーバー側でWasmを実行しているWebAssemblyについて紹介します。

WebAssemblyとは何か

この機能はウェブプラットフォームにとって大きな意味を持ちます。ウェブ上で動作するクライアントアプリで従来は実現できなかった、ネイティブ水準の速度で複数の言語で記述されたコードをウェブ上で動作させる方法を提供しています。

Next.js で Ruby をプログラミング&実行できるアプリを作る画像11

@ruby/wasm-wasi

  • 先ほどのonAction関数内のコード。
  • npmでインストールできる。
  • wasmを読み込んでユーザーから受け取ったコードを実行する。
  • Rubyで標準入力を与え、標準出力を取得するコードを追加する。

Next.js で Ruby をプログラミング&実行できるアプリを作る画像12

感想

・意外と簡単に実装できました
・Next.js 14の新しい機能 Server Actions を使ってみたが、便利そうな気がする
OHMORIYUSUKE/ruby-web でコードを公開しているので見てください!
・作ってみると楽しい

Next.js で Ruby をプログラミング&実行できるアプリを作る画像13

 

うーたんさん、ありがとうございました!
続いては、Q&Aコーナーです。

 

Q&Aコーナー

(Q)ガンダムの魅力をひとことで言うと?

かーでぃ:人間模様とモビルスーツのかっこよさです!


(Q)みなさんの今注目しているテックを聞きたいです

かーでぃ:スターリンクに注目してます

にっく:Webブラウザで出来るサービスに注目しています。そこに立ち戻って勉強すると、色々発見があります。

鈴木:生成AIに注目しています。どう使うのか。どのデータを参照させるか、どのツールと組み合わせるのかが重要になってくると考えているので、その組み合わせを考えています。情報収集として、Xとかツイートは微妙なのでGoogleです。

うーたん:生成AIが気になっています。画像生成AIでイラストを作ってみたいです。


(Q)次のステップを全員に聞いてみたいです。おそらく次のステップがあると思うので?

かーでぃ:「Webで」というところ、LINEからの制御など!

にっく:ライブラリとしてソースコードを公開して、使えるコードにしていきたい。自分の考えている難しくないWebフロントエンドをアウトプットしていきたいです。

鈴木:サーバーサイドのプログラムを書かせられるか?SQLをAIに書かせてデータベースを参照させてみたいです。

うーたん:技術書を書いたことがないので、技術同人誌を書いてみたい。文書でまとめるという能力をつけたいです!


(Q)試行錯誤感がいいですねーー

かーでぃ:かなり試行錯誤しました!年末ごろから取り掛かりました。


(Q)なぜシャア専用ズゴックにしなかったのかが気になります

かーでぃ:ガチャガチャを1回回すのに500円かかるので、出てきたものでやりました。


(Q)web components お仕事で「こんな時むっちゃ活きる!」って時あったら聞いてみいっす!

にっく:Web components にすると、さっと動いて便利だと感じたことがありました。


(Q)web周りから長く離れているのですが、最近のトレンド知りたいな

にっく:新しいものを追っていくのをちょっと疲れちゃったところもあります(笑)新しいものを知るために今回の発表内容があったりします。


(Q)エンジニアとしての喜びをお聞きしたいです

にっく:課題解決した瞬間がエンジニアとして嬉しいと感じます。

うーたん:勉強したものをアウトプットするのに、社外に出てみると、技術を通しての出会いがあるのでそれも楽しい!っていう喜びがあります。

鈴木:口座にお給料が振り込まれたとき。

 

(Q)金と権力が得られる企業にエンジニ転職したいっす!

鈴木:働いて笑おうって感じです(笑)


(Q)たまに心の声と実際の声が逆になることありませんか?「ヤダ」って。

鈴木:常に私は正直に生きてます。


(Q)パーソルホールディングスさん的にこの公開LTはアリなんですね笑ええ会社や、いや所属を明かしてこういう話を堂々とする時点で結果は出してる人なんですよね

鈴木:目をそらしておこうかと・・(笑)


(Q)Ruby本買ったところでした!学ぶ(学びはじめ)のポイントを教えてください!

うーたん:Rubyはほとんど触ったことがないんですけど、最初の開発環境の構築を乗り越えてください!

 

(Q)あー!技書博の人だー!(ですよね?!)

うーたん:次回もあるのでぜひ来てください!

 

(Q)14のアップデートでの一番のイケてるポイントとか、まだ改善してほしい点とか

うーたん:サーバーサイドの人間なのですが、サーバーとフロントの境界が近くなってきて、フルスタックなものになってきていると感じています。

みんなに質問コーナー

(Q)今後登壇チャレンジしてみたいので、登壇した感想(自身での所感、やり切った感?)も聞かせてほしい

かーでぃ:登壇をきっかけで次にLTをしたいと思ってくれる人がいることが良かったことです!

にっく:チャレンジの機会は自分もあまりないですけど、やって良かったという達成感があります!

鈴木:発表の資料を作るなかで自分の頭の整理にもつながっています。挑戦する人は、その人自身の頭の整理になると思います!

うーたん:発表するとリアクションをもらえて、発表後の感想を眺めたりするのが楽しいです。やってみると登壇して良かったなという気持ちになります。

 

いかがでしたでしょうか、レポートの内容は以上です。

次回のイベントレポートもお楽しみに♪

【イベントレポート】UXデザイン勉強会vol.5~各社の取り組みや課題から学ぶ会~

UXデザインMV

こんにちは!TECH Street編集部です!

2023年11月27日(月)に開催した、 「UXデザイン勉強会vol.5~各社の取り組みや課題から学ぶ会~」のイベントレポートをお届けします。今回はディップ、LIXIL、パーソルキャリアのUXデザイナーが各社の取り組み事例を発表します!

 

登壇者は
大森すみれさん/ディップ株式会社
古藤舞華さん・前田孝高さん/パーソルキャリア株式会社
フジタジュンコさん/株式会社LIXIL

早速、内容を紹介いたします!

最初は、ディップ株式会社の大森さんの発表です。

9コマシナリオで理解度が爆上がりした話

9コマシナリオで理解度が爆上がりした話画像1

大森:まず最初に会社紹介をしたいと思います。dip株式会社は「バイトル」や「はたらこねっと」など求人サービスを運営している会社です。

私は、入社したばかりということもあり、現在いろんなプロジェクトに参加し、キャッチアップをしています。キャッチアップする中で、ある日、Slackにfigmaのファイルが送られ、開くと膨大な資料が入っていました。

9コマシナリオで理解度が爆上がりした話画像2

その資料を確認したのですが「最初はここから入って‥次にこうなって‥で、結局‥」と
どこが大事なのかわからない状況に陥ってしまいました。

9コマシナリオで理解度が爆上がりした話画像3

しかし、わからないとは言いづらいし、かといってキャッチアップするのには時間がかかります。それに自分の理解があっているのかも分かりません。

9コマシナリオで理解度が爆上がりした話画像4

そこで、ずっとデザインを学んできたので、テキストばかりの情報を「可視化」してみようと思いました。

9コマシナリオで理解度が爆上がりした話画像5

私の理解を整理すると、プロジェクトの目標や課題などは理解できても、「誰が、どこで、どんなふうに必要なのか」というシーンで不明瞭な部分がありました。

9コマシナリオで理解度が爆上がりした話画像6

  • 「カスタマージャーニーマップを描けばどこがペインかわかるけど、また長くなりそうだし」
  • 「ペインのフェーズはわかっているから、もっとユーザーのコンテキストも含めて共有できる成果物がいいな」
  • 「普段TO-BEの提供価値を共有するときに使うあれ使えるかも」

などと考えた結果「9コマシナリオ」を使ってみることにしました。

9コマシナリオで理解度が爆上がりした話画像7

9コマシナリオ

9コマシナリオとは、ペルソナとシナリオを組み合わせたようなツールになります。

ペルソナ
実際のユーザーをイメージし、ニーズや行動を考慮して設計するためのツール

シナリオ
特定の製品やサービスがどのような状況・環境・コンテキストで使用されるかを説明するツール

9コマシナリオで理解度が爆上がりした話画像9

9コマシナリオでは、以下のような構成になっています。

  • 1コマ目にペルソナ
  • 2コマ目にペルソナの現状
  • 3コマ目に予期的UX
  • 4〜7コマ目に一時的UX
  • 8コマ目にエピソード的UX
  • 9コマ目に累積的UX

9コマシナリオで理解度が爆上がりした話画像10

9コマシナリオのイメージ

新サービスの体験価値を伝えるのに有効

ところで、9コマシナリオは、新しいサービスの体験価値を伝えるのにも有効です。それを描く場合は下記の構成になります。

  • 3コマ目は利用前のタッチポイント、サービスを知るきっかけを描く
  • 4~7コマ目はサービス利用中の体験を描く
  • 8コマ目はサービス利用直後を描く
  • 9コマ目にサービスを使い続けたときの体験を描く

9コマシナリオで理解度が爆上がりした話画像11

新しいサービスの体験価値の9コマシナリオ

今回は、課題が生じるシーンを描きました。

課題が生じるシーンの9コマシナリオ

  • 1コマ目:ペルソナ(ちょっと雑な営業さん)
  • 2コマ目:上からの圧力や既存顧客の増加などがありフォローの時間が足りなくなってしまった
  • 3コマ目:2時間でフォローし終えたい
  • 4コマ目:効果が悪い企業の詳細を見に行く
  • 5コマ目:ツールがたくさんあり、タブがぎゅうぎゅうになるほど開かなければキャッチアップできない!
  • 6コマ目:対策を考えて顧客に電話
  • 7コマ目:原稿に反映する
  • 8コマ目:5コマ目(赤枠)にかけていた時間が長すぎたため、目標の2時間をオーバー
  • 9コマ目:時間が足りなかったため、フォローすべき顧客に提案ができずに機会損失に…

9コマシナリオで理解度が爆上がりした話画像12

結果

9コマシナリオを作成したことで、

  • 自分も周りのPjメンバーも課題に対する解像度を上げることができた
  • 認識があったことで、この場合は?といった質問が少なくなった
  • ワークがスムーズに進むようになった

というようにプロジェクトメンバーから好評をいただきました。

9コマシナリオで理解度が爆上がりした話画像13

メリット

さらにこの結果から

  • 自分の理解度を他人と共有しやすい
  • ユーザーの行動・思考・感情を短時間で読み取れる
  • ペルソナ・前後の文脈・ゴールを意識できる

というメリットがありました。
同じ言葉を使って説明しても、思い描くシーンにズレが生じることがありますが、絵にすることで認識のズレが減って、他人と共有しやすくなります。
ペルソナや前後の文脈、ゴールを描くので、それを一貫してズレなく描けることが強みだと思います。

9コマシナリオで理解度が爆上がりした話画像14

内容は以上になります。


大森さん、ありがとうございました!
続いては、パーソルキャリア株式会社の古藤さん・前田さんの発表です。

 

dodaサイトにおけるデザインシステムの構築・浸透の取り組み

dodaサイトにおけるデザインシステムの構築・浸透の取り組み画像1

古藤:「dodaサイトにおけるデザインシステムの構築・浸透の取り組み」というタイトルで、前半にデザインシステムのプロジェクトとしての全体観とデザイン面の説明を私から行い、後半に技術面の話を前田からお話したいと思います。

dodaではUXの向上に向けていくつか取り組んでいることがあります。その取り組みの1つであるデザインシステムの話をするにあたって、まず「UXとデザインシステムの関係性」について説明させてください。

dodaサイトにおけるデザインシステムの構築・浸透の取り組み画像1

デザインシステムが与えるユーザー体験

上図の左側のように、開発の中での課題から工数やスケジュールが優先される中で、どうしても見た目としてのデザインの優先順位が下がってしまい、結果的にユーザビリティの低下を招くことが多くあります。
これに対して上図の右側のように、各種課題の解決が見込めるデザインシステムを置くことで、デザインの統一がされやすくなり、結果的にユーザー体験の向上に近づくと考えています。

dodaサイトにおけるデザインシステムの構築・浸透の取り組み画像3

UXとデザインシステムの関係性について

UXとデザインシステムの関係性をお話しできたかと思うので本題に入っていきます。

ここからは具体的なdodaサイトのデザインシステムについてお話します。
dodaで構築したデザインシステムは、通称「IO(イーオ)」という名称で社内に広めています。

dodaサイトにおけるデザインシステムの構築・浸透の取り組み画像4

このIOの構築を開始したのは2年半ほど前からで、構築当初のデザインデータはXD、コンポーネントライブラリーはHTML/CSS版でしたが、それをFigma化したりReact版を提供することで、現在まで進化をしてきました。

dodaサイトにおけるデザインシステムの構築・浸透の取り組み画像5

【IO】のざっくり年表

 

dodaとはパーソルキャリアが運営する転職情報サイトおよび、転職に関連したサービスを展開するブランドです。本日お話するIOは、このサイトの中の「求人を探す・紹介してもらう」という領域をメインに運用しています。

このdodaサイトですが、恥ずかしながらよく見ると同じようなパーツでも絶妙にデザインが違っていたり、ソースコードを見ても適切なクラス名が付けられていないものがありました。

ではなぜ、こんなことが起きるのか。

dodaサイトにおけるデザインシステムの構築・浸透の取り組み画像7

それは、「求人を探す・紹介してもらう」の領域だけでも、100名弱の関係者がいるのですが、時に明確な答えのないデザインの意思決定に複数の関係者がいるため時間を要しまったり、スケジュールの関係で、やむなく行った部分最適でのデザイン推進が起因しています。

dodaサイトにおけるデザインシステムの構築・浸透の取り組み画像8

その結果、ユーザーが見えるデザインに誤差が生じてしまい、欲しい情報を取得しづらい(分かりづらい)状況になっていました。

これらの課題を解消するため、dodaサイトのデザイン標準を定義して、コンポーネントをまとめたデザインデータとそれに紐づくコードを提供するデザインシステム構築のプロジェクトが発足しました。

デザインシステムを構築することで、デザインが統一され、工数削減も狙え、そしてユーザビリティの向上も期待できます。

dodaサイトにおけるデザインシステムの構築・浸透の取り組み画像9

解決できる、かもしれないデザインシステム

 

運用体制については、デザイナーが1〜2名、エンジニア2〜3名の全て兼務メンバーで構築運用しています。

dodaサイトにおけるデザインシステムの構築・浸透の取り組み画像10

ここからはデザイン面で、やってきたことを交えてお話します。
デザイン面でお話することは「デザインデータの作成」「浸透活動」の2点です。

dodaサイトにおけるデザインシステムの構築・浸透の取り組み画像11

まずはデザインデータの作成についてです。

当時、簡易的なコンポーネント集は存在していましたが、サイト全体を俯瞰したコンポーネントデータはありませんでした。
そのため、当時メインで使っていたプロトタイプツールであるXDで、100以上ある画面を俯瞰して、定義されたデータを作成し、一気にコンポーネントを作りきって浸透させることにしました。

dodaサイトにおけるデザインシステムの構築・浸透の取り組み画像12

全画面のコンポーネント定義にあたり、具体的には

  1. 100画面キャプチャ取得する
  2. 要素をバラバラにする
  3. グルーピングする
  4. 各コンポーネント精査
  5. 他社を参考にしてグルーピング精査
  6. 全てXD化する

 

という流れで作成しました。

進めていく中で、現状あるものをブラッシュアップしたくなりましたが、それをするとコンポーネントがまとまらないので、その気持ちを抑えて、まずは現状のデザインをまとめて、そのあとにコンポーネントのブラッシュアップを行うことにしました。

dodaサイトにおけるデザインシステムの構築・浸透の取り組み画像14

XDバージョンアップについて

 

Figma移行

続いて、デザインデータのFigma移行についてです。
XDでのデザインデータの構築完了からおよそ1年3か月後にFigma化の対応を行いました。

その背景としては

  • doadサイトとして、React化の流れによるコンポーネントの分類見直しの機会があった。
  • XDのメンテナンスモード期間の突入=事実上XDの終了を意味する

ここからエンジニアとコンポーネントの分類検討と、デザインデータ作成の日々が続きました。

dodaサイトにおけるデザインシステムの構築・浸透の取り組み画像15

浸透活動

IOの運営メンバーとIOの想定ユーザーそれぞれの運用フローを検討したり、コンポーネントの分類に馴染みのないエンジニアに、分かりやすく共有をしたり、コンポーネントの追加・修正の基準となるようなフローを検討したりしました。

その後、これだけの期間と工数をかけたデザインシステムの施策に対して、成果や効果の照明を求められるようになります。

成果や効果の証明となる参考事例があまりなかったので、アンケートやバックログでの施策のカウント方法などを検討して、オリジナルで指標を作りました。

浸透指数化について

浸透施策で一番大事だったのは、「草の根活動」だったと感じます。
dodaの開発関係者はとても多いので、直接会話をすることで繋がりが持て、声を収集できるようにしました。ある程度の繋がりができたタイミングで説明動画を作成し広範囲に届けました。

dodaサイトにおけるデザインシステムの構築・浸透の取り組み画像18

浸透施策でもう一つポイントとして紹介するのは「盛り上げ施策」です。
盛り上げ施策として、IOのロゴは汎用性も高いので、グッズなども作成しました。

盛り上げ施策

 

デザインシステムの施策方法は他にもあると思うので、ぜひみなさんの組織に合ったものを検討してみてください。

デザイン面のまとめ

デザインデータ作成
他社事例をふんだんに分析させてもらいながら、dodaの最適解を考えつつ取り込めるところは取り込んでいきました。

浸透活動
他社でも自信を持って「浸透したよ」と言い切っているところやビジネス観点踏まえデザインシステムの存在意義を効果として証明している他社事例を当時聞かなかったので、dodaとして現実的な、とにかく考えうることをがむしゃらにやり抜いた。

dodaサイトにおけるデザインシステムの構築・浸透の取り組み画像20

技術面での展開

前田:続いて、技術面については私から説明させていただきます。
まず、dodaサイトでは大きく技術が変わったことがありまして、元々はJavaで構築されて、その中でテンプレートエンジンを利用して、画面はHTML/CSSで構成されていました。それをある時から、Next.jsで構築しようという動きが出てきました。

技術面での展開

 

Javaアプリでの展開の場合では、パーツで定義されているので、これらをそれぞれHTML/CSSで構築してマークアップして、実際に使うときは共通サーバーにCSSを配置して、それを各開発部署などでページで読み込んでもらう形で対応していました。

dodaサイトにおけるデザインシステムの構築・浸透の取り組み画像2-2

一方、Reactでの構築の場合では、Reactコンポーネントライブラリを使用しました。コンポーネントライブラリとは、見た目、機能をエンジニアが使いやすいようにある程度定義して、パーツとして提供しているものです。

dodaサイトにおけるデザインシステムの構築・浸透の取り組み画像2-4

下記の画像はReactコンポーネントライブラリでのソースコードの一例です。

dodaサイトにおけるデザインシステムの構築・浸透の取り組み画像2-6

このようにして、HTML/CSSからコンポーネントライブラリへと変遷していきました。

dodaサイトにおけるデザインシステムの構築・浸透の取り組み画像2-7

今回は、「どうやってReactコンポーネントライブラリを提供していったのか」や「HTML/CSSからどういう風にアップデートしたのか」について深掘りしたいと思います。

HTML/CSS版での課題点とReact版での改善点

HTML/CSS版での課題点は、ソースコードを生で管理していたので、古いバージョンや新しいバージョンのソースコードが全部同じ場所に共有されており、その結果、画面ごとに読み込むCSSが異なり、つまり画面デザインが変わってしまう点でした。

バージョン違いのcssが同時に存在している状態

では、React版ではどうしたかというと、ライブラリで提供することで解決したいと考えました。
そもそもライブラリはバージョンを管理して運営していくものなので、基本的にはインストールすれば最新のものとなり、その後はチームごとに更新してもらうようになっています。

それに加えて、SlackやTeamsなどで、エンジニア向け全体に周知しました。

dodaサイトにおけるデザインシステムの構築・浸透の取り組み画像2-12

それと「提供パーツの再定義」を行いました。
これまでは小さいパーツも大きめのパーツも同じ粒度で管理されていました。これの辛いところは、仕様変更されるとデザインシステムも更新しなければならないため、デザイン以外の要件でコードが変わってしまい、その都度更新をかけなければなりませんでした。これでは運用側も使う側も大変です。

dodaサイトにおけるデザインシステムの構築・浸透の取り組み画像2-13

そこでReact版では汎用パーツと固有パーツの2つに分類したことにより、デザインとして提供しているものはデザインが変更されたときのみ更新されて、仕様変更の際には使っている人で対応してもらえるようになりました。

dodaサイトにおけるデザインシステムの構築・浸透の取り組み画像2-14

提供パーツの再定義について

技術面のまとめ

開発体制がHTML/CSSからReact基準になったため、ライブラリ化含めいろいろな恩恵がありました。そして、運用しやすい形で構築することで、長い間UXを安定して提供できます。

dodaサイトにおけるデザインシステムの構築・浸透の取り組み画像2-17

構築・運用を通して思ったこと

デザインシステムの構築から2年半が経過して、その中でポイントだと感じたことを3点共有します。

【順応】

  • XD→FigmaやHTML/CSS→Reactのように技術もツールも変化していく。
  • デザインシステムは育てていくものと言う前提で時代の流れや外部環境に順応しながらブラッシュアップをかけていく。

【理解】

  • プロダクトの成長という共通の目的に併せて理解を仰ぎつつ、デザインシステムの重要さを伝える。
  • プロダクトの成長にデザインやいいコードは欠かせないはず。

【継続】

  • とにかく、続けること。
  • 浸透は構築よりも難しいということを念頭に。
  • 成果を確認しつつキャリアと結び付けモチベーション維持。

dodaサイトにおけるデザインシステムの構築・浸透の取り組み画像2-18

古藤さん・前田さん、ありがとうございました!
続いては、株式会社LIXILのフジタさんの発表です。

 

こんがらがった糸を解きほぐす / UXデザイナーの試行錯誤ぶり

こんがらがった糸を解きほぐす / UXデザイナーの試行錯誤ぶり画像1

フジタ:LIXILは製造業なので、デザインといえばインダストリアルデザインが主力です。例えば、キッチンやトイレなどの「モノ」が主な対象です。とはいえ、IT技術の浸透とともに「コト」のデザイン(サービスデザイン)の重要性も高まり、このような流れの中で2016年にLIXILに入社し、デジタル領域におけるUXデザインを担当しています。

こんがらがった糸を解きほぐす / UXデザイナーの試行錯誤ぶり画像2

インダストリアルデザインには専門のチームがありますが、デジタル領域には専門チームがなく、今のところ私1名がUXデザイナーとして、様々なプロジェクトに参画しています。

LIXILのUXデザインの取り組み

UXデザインといっても領域が広く、UXリサーチャーとして、「UXリサーチのみ担当」、サービスデザイナーとして「機能要件を決めるところまで担当」、あるいは、UXデザインとUIデザインの領域が被っているところから、「UI設計のみを担当」など、分割した役割で業務にあたる方も多いと思います。

一方、私の場合は「コト」のデザインを全部見るというスタンスで仕事をさせてもらっているので、下図のジェームズ・ギャレットによる5段階モデルのところの「戦略」から「表層のUIデザイン」のところまで、参加するプロジェクトの状況に応じて対応しています。

こんがらがった糸を解きほぐす / UXデザイナーの試行錯誤ぶり画像3

ギャレットの5段階モデルとUXの時間軸を重ねて見るとわかりやすいと思うのですが、UXが関わる部分は広範囲になり、どこか一部だけやってもあまり効果がでないことがわかっているので、できるだけ戦略から、インタラクションまで関わるようにしています。

基本的には最初から最後まで担当するスタンスでやっていますが、プロジェクトによっては一部だけやってほしい、というリクエストをいただく場合もあります。一部だけ携わるのは、UXデザイナーとして価値を出しづらいことがあります。

今回は、そんな価値の出しづらいシチュエーションの中で、私がどのようにして対応していったのかをお話します。

一筋縄ではいかない事業ドメイン

入社したてのころに、「製造業では独自のやり方を持っているから、ITの人たちのやり方は通用しづらい」と言われました。製造業の事業ドメインは、「製造(LIXILはここ)→流通店→販売店→施工店→施主(一般のお客様)」と、いわゆるエンドユーザーのもとに商品が届く前に、多くのステークホルダーが介在しているので、一辺倒なメソッドは通用しません。今まで私は比較的シンプルな「サービサー→ユーザー」という世界で仕事をしてきたので、なかなかうまくいきませんでした。

失敗のよくあるパターン

①主語がでかい
たくさんのステークホルダーがいる中で、主語が大きいままに扱うと、結局だれのことかわからなくなってしまいます。また、「顧客」といっても様々な状況にあるので、主語がざっくりしているせいで、その状況を捉えきれないのも失敗の要因のひとつになります。

②課題がでかい
ステークホルダーの主語が大きいままに課題を考えてしまうので、もちろん課題もざっくりとしてしまい、大きくなります。扱えるサイズの課題になっていないと、適切な手法も採用されず、その結果解決策もなんとなくふわっとしたまま、効果が図れません。

このように、混乱したままUXデザインに取り組もうとしても、思ったような効果が出ません。

プロジェクトの実例

実例として、

  • 法人のお客様向けにLIXILの商品情報を紙のカタログの代わりにインターネットで参照できるサービスをつくりたい

というプロジェクトを担当しました。
いつもなら、冒頭にお話した通り、戦略からプロジェクトに入るようにしていますが、このプロジェクトでは、UIデザインのフェーズから入ることになりました。

私が入った段階ではすでにサービス企画が立てられており、ワイヤーフレームを渡されましたが、使う人が誰なのか、どんな状況で何を目的に使うのかが不分明なままだったので、最適な情報提供がどのような形になるのかもわからないままUIデザインに入ってしまいました。
つまり、「何を作るべきかの基準が明確でないまま制作を進めることになってしまった」のです。

このような形でサービスを作ると、提供者側も、利用者側にもストレスが生じます。このまま進めてはいけないと思い、まずは、「誰のために何を作るのか」「誰のためのサービスなのか」ということを明確にするべきではないか、と考えました。

作り手(LIXIL)側の課題や問題設定はしっかりとなされていたのですが、使い手(お客様)側の課題は見立てられていませんでした。「誰がユーザーなのか」「そのユーザーはどんな状況で、どんな課題を抱えているのか」「そのユーザーはどんなことが達成できればこのサービスそ使う価値を感じるのか」これらに対して、仮説も見立てもなかったのが、混乱の源泉だったように思います。

混乱から抜け出すためのプロセス

この混乱から抜け出すために用いたのが「人間中心設計(Human Centered Design)」という手法です。

こんがらがった糸を解きほぐす / UXデザイナーの試行錯誤ぶり画像4

HCDは、国際規格のISOでも定義されているプロセスですが、「人間中心設計」の名の通り、「使う人がどんな状況にあり、どんなことをしたくて、どんなことを達成すれば満足するのか」という一連の流れを分析・検証していきます。
このプロセスの最大の意義は、個人的には、「わかっていること」の総量が増えていくことではないか、と思います。

サービスを作るというのは不確実性が高く、”わかっていること”のほうが圧倒的に少ないです。HCDの採用により、”わかっていること”を増やし、「この機能ならこういうユーザーに納得してもらえそうだ」「これならこういうユーザーにとってハズさないものになりそうだ」というように、仮説検証を繰り返しながら「わかっていること」を増やす手続きだと考えています(もちろん、HCDを採用したとしても、プロダクトは市場に投下するまでその価値がわからないものであり、確証にはなりえません。あくまで仮説の補強です)。

 

登場人物を整理し、利用状況を見立てる

このHCDを採用するために一番最初に行ったことは、登場人物を整理し、それぞれの人物ごとにどんな利用状況にあるのか事実と仮説とともに書き出すことでした。

 

課題を分割する

登場人物とその利用状況が整理されると、その人たちがどんなことを成し遂げたいと思っていて、どんな課題をもっているかが見えてきます。これに対して初めて機能を考えることができます。

このやり方は構造化シナリオ法に基づいています。サービスを考えるときには、ついインタラクションを考えてしまいます。今なら「ChatGPTを使って◯◯」というようなアイデアが先行してしまいますが、しかし、この段階で必要なのはそのようなインタラクションではなく、バリューとアクティビティです。HCDを採用することで、利用者の状況と成し遂げたいことにフォーカスできます。成し遂げたいことの仮説のうえで、インタラクションを考えます。

 

サービスブループリントで見立てる

最後に、サービスブループリントを採用し、私たちが見立てている「機能」と「体験」を時系列で可視化させます。このサービスブループリントを書き終えて、ようやくUIに入ることができます。

まとめ

今回はHCDがハマりましたが、すべてHCDで解決できるとは考えておらず、プロジェクトの目的や状況によっては他の方法を採用するほうがよいときもあると思います。

また、課題を見つけられたとしても、解決しようとする課題が大きすぎると扱いに困りますし、課題が大きいまま格闘しても思ったような効果は得られません。よって、扱えるサイズに砕いていくことが重要だと考えます。


フジタさん、ありがとうございました!
続いては、Q&Aのコーナーです。

 

Q&Aコーナー

続いてQ&Aコーナーであがった質問を紹介します。

(Q)9コマシナリオというのはUXデザインでは一般的なものなのですか?(エンジニアの立場で聞いてしまってます)むっちゃこれいいですね!

大森:社内ではみかけないですが、大学ではこれを書くのが一般的でした。そこで、仕事に取り入れました!

 

(Q)コマで一番難しい箇所、比較的簡単な個所はどのあたりになりますでしょうか?作成時のポイントはございますか?

大森:ペルソナ設定がズレるとその後もズレるので、「ペルソナ設定」が難しいと感じています。基本に忠実に書いていくのがポイントです。

 

(Q)そもそもペルソナ設定が難しいです。。。

大森:社内に向けたサービスを作る部署なので、こちらでペルソナとなる営業さんへアプローチできています。

 

(Q)これから目指すこと聞きたいです

大森:100人中100人が知っているプロダクトを作る人になりたいです!

 

(Q)開発チームとの連携で壁はありませんか?また、その壁をどうやって乗り越えた、みたいな工夫があればお聞きしたいです

古藤:壁はありました。スキルの壁です。デザインを作ったのはいいが、適切なクラス名をどう付けるかで悩むことがありました。また、1px の修正など細かい修正がエンジニアに負担をかけることもありました。デザイナーがGitを覚えて、簡単な修正はデザイナー自身で行うようにしました。

前田:ユーザー側との壁がありました。前提として、まだ日も浅いサービスで、開発者側の想いをユーザーに伝えられている点は、チートっぽいですがよいです。使い方を明記する必要性は感じています。草の根活動が必要だなと思っています。

 

(Q)関連部署が多そうですが、横串はどうやってますか?オンラインチャット上なのか、定例会なのか、直に合うとか。オンボとかも含めてなかなか大変そう。

古藤:めちゃくちゃ大変です。スクラムが複数あって、このスクラムマスターを訪ね歩いています。その中でキーマンとのコミュニケーションを大切にしています。
メンバーの負担や人の入れ替えのあるスクラムがあるので、今後QAチームとの連携をしたりと良い仕組みを作っていきたいです。

 

(Q)開発メンバーもデザインの素養があったり理解があったりしたのでしょうか?

前田:フロントエンドエンジニア程度の素養があります。デザイン側の立場に寄り添った理解を持って開発しています。

 

(Q)浸透活動への施策が素晴らしいですね、こういった策定は単独でUX部署が決めていくのでしょうか?それともPJ全体での確定でしょうか。また、一番困難だった点も参考までにお聞きしたいです。

古藤:プロジェクト全体での確定です。デザインシステムのメンバーで粛々と行っています。ユーザー対象者にアンケートを投げてもなかなか回答もらえなかったり、、などの困難がありました。

 

(Q)Figma上のコンポーネントライブラリと、技術側のライブラリで、切り分け方をどの程度一致させていますか?

古藤:完全には一致できていないです。Figmaの運用は最近始めたばかりで、現時点では無理に一致させることはしていません。

 

(Q)製造業とSaaSだと全くUXデザインも異なりますよね、もっとも異なる意識部分はどのあたりでしょうか?

フジタ:実物のモノ(トイレとかキッチンとかドアとか)があるということと、物理的にそれらが大きく、製品的に施主(住んでいる人)が直接的に扱えなかったり、施工店やショールームスタッフなど、物理的に接点をもつステークホルダーが多いというところが特徴的かなと思います。

 

(Q)B2B2C、これUXデザインとしては実際どこに注力すべきか、むずかしそう。政治的圧力とかなんというかが多そうだし、中間管理職的なつらさもキツそう(;'∀')

フジタ:プロジェクトメンバーやリーダーたちが、UXデザインを実践する意義を必ずしも感じているというわけではないので、仲良くならないと話を聞いてもらえないという経験はあります。入社当初はつらい経験もいくつかありましたが、もうLIXILに所属して長いので、「フジタが言うならまあやってよ」と言ってくれるリーダーやメンバーが増えてきました。(ありがたいことに!)

 

(Q)UIデザインフェーズから入ることになったというのは前任者からの引継ぎでしょうか?それともそもそもそのタイミングまでUX担当者がいなかったのでしょうか?

フジタ:私が入るタイミングまで担当者がいませんでした。そもそもこういうとりくみが必要だと思っていなかったのかもしれませんし、「顧客のことを考える」は誰でもできることなので、必要ないと思って走っちゃったのかなという気はします。

 

(Q)HCD初めて聞きました

フジタ:HCD(Human Centered Design)は人間中心設計と呼ばれるものづくり・コトづくりのプロセスです。国際規格であるISO 9241-210:2010で定義されています。
ご参考)https://www.slideshare.net/masaya0730/iso92412102010

 

(Q)UX改善の取り組みはどういった形でPDCA回されていますか? UXへの投資基準はどんな流れで決まってきますか?(例えばユーザーインタビューに毎年300万円の予算枠があるとしたら、その枠はどういった背景・経緯でそこに至ったのか?) また、UXへの投資結果として、どうやって評価されていますか?

大森:社内に依頼してインタビューしています。(=予算などは関係ありません)
投資の結果については、ベンチマークしてKPIとしてどれくらい作業時間が削減されたかなどで判断しています。

古藤:(話せる範囲で。。)
社内向けでサクッとやっているところはあります。フィットするユーザーにインタビューできるといいのですが、社内で近い人とインタビューをしあったりしています。

フジタ:明確にUXに対しての投資がなされているプロジェクトはなく、プロダクト改善の運用費として予算がとられていることがほとんどです(そこからUIであったり、体験の改善だったりのコストがあてられる形)。だいたいは四半期に1回のチェックでPDCAを回しています。

 

(Q)各部署でUXの改善に関心を持ち、積極的に取り組んでいただくためには各部署に対してどういったアプローチが良いですか?良い布教方法があればお願いします。

大森:ディップでもこれから広めていくところです!

古藤:「小さく回して、効果が出たところに興味をもってもらう」手法がおすすめです。

前田:ユーザー体験に繋がる前の話で、パフォーマンスなどの数値化できる目標があると、興味を持ってもらいやすい。SEOだとサイトパフォーマンスの数値など。

フジタ:私自身、とても悩んでいるところです……社内勉強会をやっても勉強会だけだと浸透しづらい。LIXILには自分の稼働の20%を他の業務に割り当てられるという制度があるので、興味をもった若手を引き込んで一緒にやる、という草の根活動をしています。が、これも限界があるので、別のアプローチも模索しているところです。

 

(Q)UXの効果は見えにくかったり、でも見ようとしても「UXはその性質上、可視化しようと数値化すべきでない」という意見もあると思います。効果を実感するためにはどんな方法が良いですか?逆にUXが悪化しだすとどこに最も早く影響が出てくると感じますか?

大森:目標に対してKPIを策定し、UXの効果を測定しようと試みています。例えばタスクの成功率やエラーの頻度などを、改善する前と後で比較して結果を考察するなどということをやっています。悪影響はわかりません!すみません!

フジタ:個人的には、えらいひとたちにはサービスなどの利用者によい体験を提供するというとりくみに効果とか数字ごちゃごちゃ言わないでほしいと思っているのですが、そういうわけにはいかないので、UXの向上がコンバージョンに貢献するという前提でKPIを設定しています。UXが悪化すると、営業やコールセンターにクレームのお電話が入ります。

 

(Q)これは各社さんにお聞きしたいのですが、UXデザインにおけるもっとも大事なことは何でしょうか?あと、人が大事でしょうか?プロダクトが大事でしょうか?ブランドが大事でしょうか?

大森:どれも大切ですが、人やそのマインドが大切だと感じています。自分達のこうしたいや管理する側の要望を聞き入れてしまうと、ユーザーにとってはノイズが多いプロダクトになってしまうので、ユーザーになりきる(かなり解像度を高くしないと難しい)、そして俯瞰してフローを考えるという視点を持つことを常に心がけています。

フジタ:UXデザインを実践するためのマインドやスピリットでいうと、「人間に興味がある」ことが一番大切だと思っています。人間に関わる活動なので、人もプロダクトもブランドも全部大事だと考えます。

 

(Q)UI設計もかじっているエンジニアです。周りの人間はエンジニアが多く、デザイン話がうまく伝わっていない現状があります。デザインに詳しくない人間にうまく伝える大変さは各社さんありますか?

大森:とても大変で絶賛苦戦中です!そんな中で上司に教えて頂いて気づいたのですが、うまく伝わらない時自分の主語と相手の主語が異なっているということです。UXに知見のあるグループでの会話は自然とユーザー主語で話が進んでいくのですが、非デザイナーとの会話では機能やペルソナ以外の人物が主語になり、うまく話は伝わらないしプロダクトの軸はずれてしまうということがあるので、主語を合わせながら話を進めていくことが大切だと感じています。

フジタ:大変です! ただこちらも開発のことがわからないので、そこはお互い様かと思います。専門用語を使わない、サンプルをいっぱい出す、共通言語を増やしながらコミュニケーションをつづけていくのがなんだかんだで早道なのかなとも思います。

 

(Q)ジャーニーマップをまとめる時は何人位で打ち合わせ決めていくのですか

大森:大体インタビューの結果などから1人でたたき台を作成し、3〜4人でブラッシュアップを行い、MTGの報告でチームメンバー(10人程度)の方々から確認いただくことが多いです。

フジタ:基本的にはリサーチに関わったメンバー、コアメンバーなどで、5〜6人くらいかなと思います。ワークショップだともっと人数が増えますが、ステークホルダーが多いとまとまりづらいので、少数精鋭でまとめることが多いです。

 

(Q)これまでで工夫されたUXの事例があればを教えてください

大森:新しいプロダクトの画面を作成した際に、情報過多の画面があったので、UXの前にワーキングメモリや認知負荷の説明をして構造について検討するということをしました。これを使うのは人間なので、そういった行動のメカニズムを知ることで、より自然なUX、ユーザーにとって使いやすいプロダクトになれると考えています。

フジタ:設計やプロトタイピングでは実際の利用状況の再現にこだわっています。本当にそういうシチュエーションがあるのか、現場に確認しながら設計しています。
また、検証において得られる成果を限定的にしています。一度にいろんなことを検証しようと思っても、複合的な事象だと因果関係・相互関係を紐解くのが難しいからです。

 

いかがでしたでしょうか。皆さんがサービス開発時の技術スタック選定において少しでも役に立てればうれしいです。

次回のイベントレポートもお楽しみに♪

【イベントレポート】Rust(プログラミング言語)エンジニア勉強会~最新情報・活用事例LT~

Rustエンジニア勉強会MV

こんにちは!TECH Street編集部です!

2023年11月24日(金)に開催した、 「Rust(プログラミング言語)エンジニア勉強会~最新情報・活用事例LT~」のイベントレポートをお届けします。今回は3名のRust言語を扱うエンジニアが集まり最新情報や事例LTを発表します! 

 

登壇者は
増田智明さん/Moonmile Solutions代表
山本 一将さん/ユニークビジョン株式会社
松本健太郎さん/株式会社estie

早速、内容を紹介いたします!

まずは、Moonmile Solutions代表の増田さんの発表です。

Rust海外事情について

Rust海外事情について画像1

www.slideshare.net

増田:本日は下記の2点をテーマにお話します。

・海外でのRust活用の事例紹介
・Rust活用の範囲の解説

主な活用事例―米国企業サービス編―

Googleの事例

GoogleはAndroidとLinuxカーネルの開発にRustを採用しています。特にメモリ安全性に関連するバグを減らすことが目的です。

Rust海外事情について画像2

 

Microsoftの事例

Microsoftはサイバー戦争の深刻化を背景に、より安全なコーディングを目指したRustの活用をしています。 

Rust海外事情について画像3

 

Amazonの事例

AWSはエンジニアによるRustの使用を推奨しており、特にエネルギー効率の高さを大きな利点としています。

Rust海外事情について画像3

 

Meta(Facebook)の事例

Metaは高いパフォーマンスが要求されるバックエンドサービスの開発にRustとC⁺⁺を使用するようにエンジニアに推奨しています。

Rust海外事情について画像4

 

主な活用事例―各国編―

Hawaei(中国)の事例 

Hawei(中国)ではRustに基づく次世代の仮想化プラットフォーム「StratoVirt」の開発を行い、化学計算用の多次元配列演算ライブラリの分析と実践を行っています。
またTVM Rust RuntimeとWASMサンドボックスを用いたAIモデルも実行されています。

Rust海外事情について画像5

 

Siemens(ドイツ)の事例 

IOT2040はSiemensによって開発された産業用IoTデバイスで、データを取りこぼさないようにするために、Rustが使用されています。 
S7 Rust library

Rust海外事情について画像6 

Tezos(フランス)の事例 

スマートコントラクトやDapps(分散型アプリケーション)の開発・利用に適した性能を持つブロックチェーンプラットフォームTezos(フランス)。金融系のブロックチェーンも当然スピードが早い方がいいので、Rustが活用されています。

Rust海外事情について画像7

 

Rustの活用範囲

ここからはRustの活用範囲の事例を紹介します。まずはWebAssemblyでの活用についてです。

 

WebAssembly

高性能ウェブアプリケーション
Rust WebAssemblyは、画像処理や複雑な計算など、JavaScriptでは効率が落ちるような集中的な計算を必要とするタスクに最適です。ゲーム開発において、Rust WebAssemblyは、ウェブベースのゲーム、特にグラフィックスのレンダリングやゲームの物理処理など、パフォーマンスが重要な部分の記述に活用されています。

暗号化とセキュリティ
Rustが重視する安全性とWebAssemblyのサンドボックス実行環境を活用して、Rust WebAssemblyは暗号とセキュリティのアプリケーションに採用されています。また、ブラウザ内で機械学習アルゴリズムをネイティブに近い速度で実行するため、インブラウザのMLアプリケーションにも適しています。

IoTとエッジ・コンピューティング
IoTとエッジ・コンピューティングの領域では、Rust WebAssemblyにより、軽量で高性能なアプリケーションをブラウザで直接実行できます。リソースが限られたIoTデバイスにとって非常に重要です。

 

Edge Computing

また情報を生み出すデバイスと、その情報を利用するユーザーに近いところに情報の保存場所と計算能力を配置したプロセスであるEdge Computing では

・レイテンシーの低減
・帯行幅の節約
・プライバシーとセキュリティの強化
・リアルタイムの処理

という4つのメリットからRustを活用しています。

Rust海外事情について画像8

また、一般的な利用シーンとして自動運転技術での活用があります。

 

自動運転技術

Rustは、主にその効率性とメモリ・リークやレース・コンディションに対する組み込みの安全性により、自動車ソフトウェアにおいてCやC⁺⁺のような言語に代わる良い選択肢と考えられています。これらの特徴により、Rustは機能安全性とセキュリティが最優先される自動車アプリケーションに適しています。

 またIoT利用という点で工場内におけるRustの活用が挙げられます。

Rust海外事情について画像9

これもC言語を直接使うよりも、Rustに組み替えていく流れがあります。
このように幅広い利用範囲でRust言語は活用されています。
 
増田さん、ありがとうございました!
続いては、ユニークビジョン株式会社の山本さんの発表です。

 

ユニークビジョンのRust活用事例と導入検討の勘どころ 

ユニークビジョンのRust活用事例と導入検討の勘どころ画像1

speakerdeck.com

山本:「ユニークビジョンでのRust活用の紹介」「Rust採用後のメリット/デメリット」をお伝えしたいと思います。

ユニークビジョンのRust活用の紹介

弊社は「技術でお客様の問題を解決すること」をモットーとしており、メインのサービスとしてソーシャルメディアを活用して企業のファンを増やす「Beluga」シリーズを開発して提供しています。

ユニークビジョンのRust活用事例と導入検討の勘どころ画像2

下図はお客さんが何かモノを知ってから、購入するまでのステップを示しているのですが、 「Beluga」シリーズでは、このそれぞれのステップでブランドとして広告を楽しくするようなツールを提供しています。

認知から購入までのパネル図

 こういったツールの価値が評価されて国内に7社のみのXのマーケティングパートナーや国内4社しかないLINE社のパートナーにもなっています。

そんな弊社ですが、Rustには力を入れています。Rustを採用して6年が経ちましたが、「Rust Tokyo 2023」のカンファレンスでは、2年連続でスポンサーをさせていただきました(2022年はシルバースポンサー、2023年はゴールドスポンサー)。

ユニークビジョンの技術スタック

では、弊社がどれくらいRustを使っているのかというと「Belugaキャンペーン」や「Belugaスタジオ」では、部分的にRustを採用しており、後発のシステム「Belugaキャンペーンfor LINE」などはすべて、バックエンドはRustを採用しています。

ユニークビジョンのRust活用事例と導入検討の勘どころ画像2

その中でも「何をしているか」というのを下記の図にまとめています

ユニークビジョンのRust活用事例と導入検討の勘どころ画像3

私たちは基本的にAWSでモノを動かしていますが、コンテナベースやサーバーレスの環境でもRustを使っており、Rustで多くのことを実現している会社だと思っています。 

Rustを使う理由

では、なぜRustを使っているのか。それは下記の3点が挙げられます。

・パフォーマンスが重要なシステム
・コンパイラとエコシステムが優秀
・面白そうな言語
 
特にこの3点の中で「面白そうな言語だから」というのが一番の理由でそれは、弊社CTOが示しています。「CTOがやってみたかった」という理由で採用しました。
社内でも議論がありましたが、「やるからにはしっかりやろう!」ということで、取り組みをしてきて6年が経ちます。

主要な取り組み図

 

当初Rustはまだまだ未成熟だったため、ライブラリがないことも多々ありました。そういうものはとにかく自分たちで作って公開するという姿勢でいました。そして学ぶだけではなく、アウトプットする場も大切にしています。
 

ユニークビジョンの開発体制

 

ユニークビジョンには主要なプロダクトは3つありますが、その3つがそれぞれプロダクトの開発チームを持っています。チーム感の調整がないためリリースまでの時間が短縮できることがメリットですが、ノウハウの共有という課題がありました。
そこで、ユーザーグループを発足しました。

ユーザーグループの体制図

 

各チームのRustが得意な人が集まって、Rustに関する議論を進めることにしました。 そして教育体制の構築も行いました。

教育体制について

Rustの理想の実装について議論をした人がチームに持ち帰ってペアプロなどをして、チーム全体のRustの技術力を高めていきました。もちろん入社時にはRust未経験者という人もいましたが、そういう人がRustのプロジェクトに入っても困らないようにする体制を作り上げました。
 
そして、必要であればクレートを作って公開します。
 

ユニークビジョンのRust活用事例と導入検討の勘どころ画像4

コミュニティにも貢献しながら、「とにかくRustがもっと開発しやすくなるような活動」もしています。
「Rustを使っている会社がもっと盛り上がっていかなければ!」という思いのもと、勉強会も開催しています。こういった場を作ることでRustのノウハウをインプットし、コミュニティに貢献してアウトプットすることでどんどん循環させる取り組みを6年間しています。

Rust採用のメリット・デメリット

さて、その運用の中で我々が感じてきたメリット、デメリットをお伝えします。

Rustを使うメリット

「とにかくメモリ効率が高く安定していて、Rustは長期稼働に向いている」と感じます。
また長く使っているからこそ「保守性が高い」ということも分かりました。
それと、エンジニアの採用にも大きく寄与しています。弊社はまだ知名度の低い会社ですが、Rustを使っているということが認知されていて、Rustを使いたいからと面談を受けに来るエンジニアもいます。

ユニークビジョンのRust活用事例と導入検討の勘どころ画像5

 

Rustを使うデメリット

世の中にRustの情報が少ないので、調べても分からないことが多い点はデメリットです。開発の時間を考えると、コンパイルの時間はボトルネックになっていると感じます。
 

ユニークビジョンのRust活用事例と導入検討の勘どころ画像6

 それと「 他の言語で実装しているときはやらなくてもいいことを、Rustではやらなくてはならない」ということはよく発生します。これはいろいろなことをやろうとすると、ぶち当たる壁だと思います。

Rustの導入検討時に確認したいポイント

まずは「一度小さく始めてみようかな」くらいの気持ちでRustを採用されてみても良いかと思います。その際に「システムの寿命」「改修の頻度」「要求される性能」の3点を採用までに検討するポイントとしてください。


システムの寿命
メモリリークやバッファオーバーフローを気にしなくて良いので安定・安全が求められる寿命の長いシステムだとメリットが大きい。

改修の頻度
最初に動くものが出来るまでの時間は軽量プログラミング言語が勝るが、変更を加える度に型安全のメリットが活きる。

要求される性能
高スループットが要求される場合にはインフラ費用が削減できる可能性がある。
 
Rustは意外と愛されており、前途の通りエンジニアへの採用効果は期待以上でした。
「やってみたい」だけで採用してみても悪くないと思います。


山本さん、ありがとうございました。
続いては、株式会社estieの松本さんの発表です。

 

estieのRust活用の紹介

estieのRust活用の紹介画像1

松本:今回は「estieがどのようにRustを使っているか」「Rustを採用するためにはどうすればよいか」をお伝えできればと思います。
 
早速結論となりますが、なぜestieでRustを使っているかというと

estieでRustを使う理由

・Rustがいい言語だから
 標準パッケージマネージャのCargoがとても使いやすい
 読みやすいエラーメッセージ

・安全に開発できる言語だから
 書きやすい型定義
 
という2点が挙げられます。
この理由をestieの事例を元に詳しく紹介します。

estieのRust活用の紹介画像2

 

estieのRust活用背景

estieのRust活用状況をご紹介する前にestieのメンバー構成とサービスについてご紹介します。
estieは不動産業界出身者とテック業界出身者が在籍するハイブリットなチームでありプロダクト開発人材が多いのが特徴です。主に商業用不動産業界向けのSaaSを開発しており、いちばん使われているプロダクトは「estie マーケット調査」です。

これは、ビルの賃料やどのような広告が出ているかなどを可視化することが可能です。このプロダクトが出てくる前は、口頭や紙媒体でやり取りをしていたため業界には画期的なプロダクトとして現在も評価されています。
 

estieの歩みと今後の取り組み


 私たちは1つのプロダクトだけではなく、商業用不動産業界のバリューチェーン全体にプロダクトを提供しようとしています。オフィスなどの不動産の領域からビジネスを始めましたが、それだけでなく様々なアセットにも手を広げていて、「不動産に関わるのすべてのビジネスが、高度に連携されたestieのシステム上で行われる」という未来を作ろうとしています。
 

主に使用している開発ツール

estieでRustをどう使っているか

ではestieでRustをどう使っているのか。
estieではWebアプリのAPIサーバをRustで書いています。

estieのRust活用の紹介画像2

各種連携周りのcrate(ライブラリ)も揃っています。

estieのRust活用の紹介画像3

 
では内容を詳しく見ていきます。

我々は、actix-webというフレームワークを使っています。左側のソースコードのようにパスと処理を書いて、サーバー設定したら動きます。(下図参照)これで、RustでWebアプリケーションを書くことができます。

actix-web:Webフレームワーク

続いて、sqlxというcrate(ライブラリ)を紹介します。これは、DBとの接続をいい感じにしてくれるもので、コネクションをはってSQLを書いて、クエリを実行すると結果が返ってきます。

sqlxの接続連携


sentryなど外部のサービスを使うものも、最近はRust用のSDKを公式が出してくれることもあります。もし提供されていなくてもAPIが公開されていれば、RustでAPIをたたくだけなのでそんなに難しくないと思います。

estieのRust活用の紹介画像3


 ということで、私たちはいろいろなライブラリを使用しています。

なぜRustを使っているのか

なぜなら、estieは「コンパウンドスタートアップなので都合よく使えるから」というのが第一に挙げられます。

私たちは不動産のデータを集めながら、それをプロダクトの中で連携させて全体として価値を出すプロダクト群を開発しているので、プロダクト間のデータをやり取りするAPIさえ決まっていれば、その中で様々な言語を使って開発することが可能です。そのため、気軽にRustを採用できたという背景があります。

また、「Rustは難しい」とよく言われますが、それは「Rustではなくプログラミングの難しさなのでは?」と思う場合があります。他の言語でも、「その言語特有の気をつけなければならない部分」を考えてプログラミング出来る人がestieに集まっている印象です。
 

estieのRust活用の紹介画像4

複数のプロダクトがあるだけでなく、それぞれが密に連携しあってそれぞれ価値を高め合っているような構造になっています。

estieのRust活用の紹介画像1

マルチプロダクトスタートアップとコンパウンドスタートアップ


Rustの良いところは型定義を柔軟に書けるので、複雑なデータを扱うのに都合がいい点です。

例えば、オフィスの賃料データの場合、「坪単価いくら」「月額いくら」「要相談」「不明」などデータの形が決まっていないことがあります。そのような場合、「坪単価」と「月額」の場合は値を持っているけど、「要相談と不明」の場合はただ型を持っているだけで具体的な数値のフィールドはいりません。
そういう型をこのように柔軟に書けるので便利です。

estieのRust活用の紹介画像5

  それと、嬉しい文法も結構あります。例えば、

・match文
・Option型:Some(_),None
・Result方:Ok(_),Err(_)
 
などは、書きやすく便利な文法だと思います。

柔軟に書ける嬉しい文法

estieのRust活用の紹介画像6


またRustの標準パッケージマネージャである「Cargo」がとても使いやすいです。
 

Cargoの標準のパッケージマネージャ


みんなが同じパッケージマネージャを使っていて、いろいろなタスクをみんなが同じコマンドで実行できるというのが便利だなと思います。
 
最後に、「コンパイラが親切」という点も紹介したいと思います。
例えば下図のように、yの変数が定義してあるけれども使われていない場合、「使われていないけれども、’_y’としたらどうですか」という警告を、位置を示しながら出してくれます。このように、コンパイラに教えられながら勉強ができる言語だと感じます。

estieのRust活用の紹介画像7

Rustでの開発をはじめるには

まずはツール類からはじめてみるのも良いですし、Rustを使っている会社に転職することもお勧めです。

もしくは、競技プログラミングで使ってみることも良いかと思います。ゲームAIのコンテストは、実装内容の複雑さと実行速度が大事という点で、Rustにメリットがあります。それに、「ロジックが間違っているのか、そもそも方法が悪いのか」を判断する時に、少なくともロジックは間違っていないということをRustだと担保しやすいと思います。

 

estieのRust活用の紹介画像7

 

松本さん、ありがとうございました!
続いては、Q&Aコーナーです。

 

Q&Aコーナー

続いてQ&Aコーナーであがった質問を紹介します。

(Q)Cargoのworkspaceはどのように区切ってますか?

山本:rust-analyzer の Cargo.toml を参考にしていて、内部クレートについては
members = ["crates/*", "api"] のように crates というディレクトリにまとめています。

松本:弊社は横並びです。本体のsrcの横にapiとかauthとか。

 

(Q)松本様は現在もRust書かれてる感じですよね、新しい情報収集とかどうされてますか?

松本:同僚がリリースノートを読むイベントを開いてくれているのでそれを見たり、RustプログラマーのXをフォローするようにしています。

 

(Q)クレートの選定とか、どういう役割・体制で推進されているのでしょうか?専門の部署あり?各プロダクトチーム毎?

松本:スタッフエンジニアのkenkooooが標準を定める動きをしてくれていますが、各チームで機動的に選定しています。

 

(Q)estieさんからも社内でのRust学習話があればお聞きしてみたいです

松本:Rustの質問をするチャンネルがあります。趣味で書いたり、OJT的に覚えたりするメンバーも多いです。

 

(Q)Rustは言語の癖が結構あるなと思っています。Pythonをメインで使いながらRustも勉強してみようとなったときに苦戦しました。。結局慣れや覚えてしまえばよいのですがユニークビジョンさんでは社員の学習時間を月にどのくらい設けていますか?

山本:明確に学習時間として設けられているのは月に1度、最終金曜日に3時間設定されている「自己研鑽フライデー」という制度だけです。【制度紹介】 自己研鑽フライデー
あとは業務を通して学んでもらったり、週に1度の社内技術勉強会で他の人の発表を聞いて学ぶ、という感じですね。

 

(Q)社内でRustを書ける人間に育つまでにどれくらい時間かかりましたか?書籍やドキュメントなどはどちらを参考にしましたか?

山本:業務で既存のシステムに改修を加えるレベルであれば、弊社の場合は割とすぐに育つかなと感じています。会社の本棚にも Rust の本はありますが、実際のコードと Web 上の情報、コードレビューやペアプロなどの仕組みを通して学んでいく人が多いと思います。

 

(Q)RustでWebフレームワークやORM(Object Relational Mapping)などは どんなものを利用しているか気になります。 (技術選定で気を付けている部分などあれば知りたいです)

山本:Webフレームワークは ActixWeb や Axum を使っています。ORM は使っておらず、postgres をベースにしたクレートを使って生のSQLを書いています。
技術選定ではメンテナンス状況や安定性など気にしていますが、すべてのチーム・プロジェクトをコントロールするのは難しいので細かいところでは割と自由に選ばれていると思います。

 

(Q)〇〇が強いエンジニア、の集まりというのはすごい。となると、中途メインですか?新卒が学べる場がある場合は、Rustの社内学習・個人学習のポイントを聞いてみたい。

山本:横断チームには当時新卒1年目のメンバーも参加していました。
もともと趣味でRustを学んでいたらしく、とても詳しくて熱意もあったので参加してもらいました。
新卒に限らず、業務で初めてRustを触る人はコードレビューやペアプロを通してサポートしています。

 

(Q)Rust得意な人の会で出てきて横展開できた例なにか教えていただけませんか

山本:社内で書き方が定まっていなかった部分について、ユーザーグループでクレートを開発して展開することでルールが定まっていったケースなどあります。細かくは色々、整備が進んでいます。

 

(Q)「面白そう」最高ですね、山本さんご自身も「面白そう」と感じる点があればぜひお聞きしたいです。

山本:個人的には継承という機能を持たなかったのは素晴らしいと感じています。面白いと思います。

 

(Q)社員の5割のエンジニア、全員Rust使いですか?

山本:全員ではないですが、ほとんどのメンバーが少なくとも1回は Rust を触ったことがあると思います。

 

(Q)ブランド体験を作る、本題からそれますがむっちゃ気になります。

山本:ぜひ、事例など見て頂けると嬉しいです!

 

(Q)最近では、C++でもムーブセマンティックスが導入されているみたいですね。C++がRustに近づいてくるんでしょうか?

増田:C++から離れて久しいのですが。
このあたり、C++の場合はポインタを使ってリスト構造やノードを使いたいときに、Rustは同時の非同期処理をするときにリソースの有効期限を制御したいときに、という使い分けになるのかなと思っています。

山本:C++ でムーブセマンティックスが導入されたのは C++11 で、議論自体はもっと前から存在します。
Rust は C++ が安全性や効率性のために後から導入した機能をデフォルトの言語仕様としており、今後も C++ で導入されてからそれを C++ より良い仕様で Rust に導入する、というケースの方が多いのかなと自分は考えております。

 

(Q)ブラウザの表示などでは、JavaScriptの計算というよりは、 DOMの描画に時間がかかるような気がしているのですが、 RustだとDOMの描画も高速でできたりするのか気になります。 (例えば、地図のような地理空間情報の上で、膨大なDOMの描画が必要なケースなど)

増田:ブラウザへの描画、特にDOM関係を利用した描画はRust限らず、あまり言語に関係ないのかなと思っています。
最終的には、SVGのキャンバスを使って、OpenCVなどを使って画像生成をする形になるのかなと。https://github.com/echamudi/opencv-wasm とか。

山本:Rust ではなく C++ ですが、Figma というデザインツールが WebAssembly で高速化しているという話があったと思います。

 

(Q)世界と日本の開発事情、活用事情に大きな違いってありますでしょうか?

増田:調べた限りでは、Rustの活用で目立つのはOSのカーネルやドライバー周りなので、どうしても大き目の活用例は海外寄り(というかアメリカ)になってしまいそうです。
Rustはリソース管理と非同期に強いので、日本でも組み込みシステムやリアルタイムOS(ロボットのRTOSやiTronあたり)に有効かなと思っています。
https://docs.rs/itron/latest/itron/ とか。

 

(Q)プログラミング自体未経験なのに参加してしまってますw ZEROから学ぶのにおすすめの第一歩を教えていただきたいです。そもそも初プログラミングでRustっていかがでしょうか?

増田:Rustを学ぶ前にC言語を知っておくと学習が早かったりします(メモリ関係の前提知識が多いので)。
Rust以外だと、PythonやJavaScriptでプログラム言語の「文法」をさらっと流して、あらためてRustを学ぶのもありだと思います。

山本:プログラミングを最初に学ぶときに苦戦するのは実はプログラミング言語の選択より、プログラムを書くまでの準備の部分だと思っています。
なので、言語は何でも良いのですがもしRustであれば [Rust Playground](https://play.rust-lang.org/) のようなブラウザ上ですぐに動かせる環境で始めるのが良いかなと思っています!
頑張ってください!

 

(Q)組み込みでRustを採用されない理由として認証があると思います。Rustで認証対応したツールチェーンは整備されているのでしょうか

増田:「ツールチェーン」の部分が解りかねるのですが、証明書などを発行するツール自体をRustで固める必要はないので、多分暗号化やTLSでの通信部分のことだと思います。
このあたりだと https://github.com/RustCrypto を使うんでしょうか。組み込みで使えるのかはわかりませんが Arduino の暗号化ライブラリレベルのように使えるのではないなと思っています。

 

(Q)単純な実行速度の比較だとGCがないCとC++はRustと速度は変わらないと思っているのですが、Rustの方が速いのでしょうか

山本:諸説ありますが、C++ と Rust の比較というよりは gcc と clang の差で C++ の方が高速、という説が有力なのかと思います。

 

(Q)組込みシステム系の開発案件で、RustではなくあえてC++を選ぶメリットがあるとすればどういったところにあるでしょうか。大規模な案件はRust向きでしょうか?

増田:あと、研究用の小さめのコードならばC++のほうが素直かもしれませんね。所有権とか気にせずに配列でメモリを取ってしまって、一括解放する方法のほうが手軽なので。
Rustの場合、非同期やメモリの受け渡しに強いので、むしろ大規模開発のほうが有利かと思います。ドライバーのようにカーネル側とリソースのやり取りで使うときに、スレッド間のメモリ操作をうまくコーディング時に捕まえられるので。

 

(Q)CやC++からRustに変わっていくといった話をたまに聞きますが、皆さんの周りでも実感するようになった。などの変化はありますでしょうか?

増田:実は、私の周りでは C# や JavaScript が主流だったりするので、Rust はあまりタッチしていなかったりします...
Android でもそうなのですが、グラフィックドライバー周りが大きく変わるのではないかなと思っています。

山本:実感ではないですが、Win32API が Rust で書けて、GetLastError 関数を使わなくても Result 型でエラーが扱えると聞いた時には時代が変わったなぁと感じました。

 

(Q)みなさんの「Rustのここが困るんだよなぁ」「こうなってほしいなぁ」ってのがあればお聞きしてみたいです。

増田:うっかり、関数呼び出しのときに所有権を持って行かれてしまって、その後でデバッグ出力できなくて困ることが多々あります(苦笑)。まあ、真面目にコピーをとっておけばいいんですが。

山本:Rust は C++ で言うところの template 特殊化に相当する機能がないので、実装されるといいなあと思っています!

松本:Rustって優しい言語だとみんなが思ってくれればもっと広まるのにと思っています。

 

(Q)C++等と比較してRustの一番のメリットは何でしょうか?(Rust未経験です)

増田:私的には基本のセマンティック(所有権)の部分ですね。
変数やメモリの有効範囲を非常に狭くできる(あるいは強制される)ので、影響範囲を考える手間を省けます。気にかける範囲が狭くなるので、テストコードなども小さくまとめられます。これはC言語でも同じことができるのですが、Rustは言語仕様として組み込まれているのが利点かなと。

山本:Cargo の存在だと思います。C++ に Cargo があれば、私はまだ C++ の方が好きかもしれません。
 
松本:ツール類が標準で揃う点は圧倒的にメリットだと思います。

 


レポートの内容は以上です。次回のイベントレポートもお楽しみに♪

【イベントレポート】テスト自動化の先駆者3社が集結!今後の自動化の方向性

テスト自動化サムネイル画像

こんにちは!TECH Street編集部です!

2023年9月12日(火)に開催した、 「テスト自動化の先駆者3社が集結!今後の自動化の方向性」では、テスト自動化プラットフォーム3社(Autify/MagicPod/mabl)が集まり、各社のプレゼンテーションだけでなく、デモも見せていただきましたので、その様子をレポートいたします。

登壇者はこちらの方々!

松浦 隼人さん/オーティファイ株式会社
伊藤 望さん/株式会社MagicPod
おだしょー (小田 祥平)さん/mabl Inc

テスト自動化プラットフォーム「Autify」におけるAI

speakerdeck.com

テスト自動化画像01

松浦:まずは我々が提供するプラットフォーム「Autify」についてのご紹介です。「Autify」はコードを書ける方でなくても、誰でも簡単にテストを作って実行できます。「完全ノーコードでもテストが作れる」という点が一番大きな特徴だと思います。


デモ動画

www.youtube.com

テスト自動化のきっかけ

「テスト自動化したい」と思うきっかけは様々あるかと思いますが、主なきっかけは以下の3つに分けられると考えます。

 

複雑化するアプリケーション → 手動ではカバーしきれない

アプリケーションが複雑化していくと、それに伴いテストも複雑化して、テストケースがどんどん増えていきます。そうすると手動でカバーしきれなくなり、「自動化しよう」という機運が高まります。

 

改善スピードを上げる必要性 → リリース頻度/テスト頻度を上げる必要性

アプリケーションの改善スピードを上げると、リリースの頻度も上げる必要がでてきます。Webアプリケーションの場合、「 1日に何回もリリースする」というのも当たり前になりつつあります。そうすると、テストの頻度も上げる必要が出てきて、手動だと対応できなくなり、「自動化する必要がある」という結論になることが多いかと思います。

 

同じテストの繰り返し増 → 自動化による手動工数削減

上記の2つ(「複雑化するアプリケーション」と「改善スピードを上げる」)をしていくと、同じテストを繰り返すことになります。「繰り返す」というのは、コンピューターが得意なことなので、それを自動化すると、手動でやっていた工数を大きく削減できます。これが自動化するきっかけになると思います。

しかし、このようにテスト自動化を進める必要性が出てきたとしても、実際にテスト自動化をする際には、難しい課題もあります。

テスト自動化の問題点

問題点①:自動化ならではの問題

・人間なら自然に回避できる問題を明示的に回避する必要がある
 例:時差をつけて現れる要素をクリックする
 例:要素の情報(idやclassなど)が動的に変わる

例えば、皆さんの中に「Web ページが開いた時に画像が遅れて表示される」などのような「時差をつけて現れる要素」に出会ったことがある人もいるかと思います。
この「遅れて表示してきたかどうか」というのをうまく対処しないと、テスト自動化するときに問題が起こることがあります。

 

問題点②:作成した自動テストのメンテナンスコスト

・テスト対象が変わった時のシナリオのアップデート

テストシナリオがどんどん増えていってリリース頻度も増えるということは、アプリケーションの改善がスピードアップしていくことになります。
(これはこれでいいことなのですが)自動化したことによるアプリケーションの改善の速度アップについていかないといけず、これが結構負担になることがあります。

このようなテスト自動化に関する問題は、Autifyなどのツールを使えば解決できると思います。

AIを使ったテスト自動化:問題点を解決・緩和

・手動テストとは違ったスキルが必要 → コードを(ほとんど)書かなくてもOK
・自動化ならではの問題 → AIがサポート
・作成した自動テストのメンテナンスコスト → AIがサポート

AutifyにおけるAI

変化した要素の探索

 ・主にHTMLを使用
 ・要素の特徴情報から、変化した要素を高精度で特定
   ・ 人間はそれが正しいかチェックするだけ
   ・ テストシナリオのメンテナンスが短時間で容易に

下図の左側の画像と右側の画像では、少しデザインが変わっています。

AutifyにおけるAIのロジックは、その要素の特徴情報を覚えておくことで、デザインが変わり、HTML がガラッと変わったとしても、それが同じ役割のものであると認識できる、というものです。
これによって、人間はそれが正しいかどうかチェックするだけでテストシナリオをアップデートできます。

 

ビジュアルリグレッションテスト

・テスト実行時のスクリーンショットを比較して差分を検出
・画面全体だけでなく要素単位でも比較可能

これは、「正しく広告が表示されてるか」「正しく画像が表示されているのか」というようなところもAIが判断してくれます。

 

画像情報を用いた要素の特定、変化した要素の探索

・モバイルアプリのテストの問題
  ・ 構造化された要素情報がない(乏しい)
  ・ 画像情報に依存する必要

・画像情報を元に、指定した要素をAIが抽出・特定
・同様に画像情報を元に、変化があった要素を探索

また、例えば上図の「ハンバーガーアイコンをきちんとアイコンであると認識できたり」「Hatty Hive という文字のところもラベルとして認識できたり」、画像の中から要素の情報を全部抽出してくれるようなモデルも開発しています。
この技術によって、モバイルアプリケーションのテストも可能となっています。

AutifyにおけるさらなるAIの活用

Autify AI Labs

さらに進んだ利用:シナリオの作成支援
        ・テストステップごとの提案(Autify Step Suggestions)
    → レコーディング時、ステップごとに何をテストすべきか提案
    → 従うだけでテストシナリオが作成できる

デモ動画

www.youtube.com

まとめ

・テスト、品質保証は人の目が大事、職人芸
・AIを使えばその一部を代替できる 
  ・ テスト実行部分への適用
  ・ さらにテスト自動化をスムーズにする分野へ
・人間はテスト設計など、より高度な仕事を

松浦さん、ありがとうございました!
続いては、株式会社MagicPod 伊藤 望さんの発表です。

MagicPodで実現するE2Eテスト自動化

speakerdeck.com

伊藤:まずは弊社が提供する「MagicPod」についてご説明します。
「MagicPod」はWebサイトのテストとモバイルアプリのテストの両方を自動化できるサービスです。ノーコードで簡単にテストが作成できることに加えて、柔軟性とメンテナンス性があるのが強みです。

それでは具体的な操作をデモ画面を使ってご説明いたします。

デモ動画

www.youtube.com

MagicPodが実現したいこと

1.開発生産性向上に寄与

・毎日テスト、常にテスト
・問題の早期検出で生産性が向上

自動化だからこそ、毎日テスト、常にテストができる状態に持っていくことが可能です。これにより問題の早期検出ができ、生産性向上に繋がります。

 

2.継続的デリバリーの実現を支援

・1日何回も、好きなタイミングで変更を本番環境にデプロイ
・あらゆるレベルのテストを自動化する必要がある

日本では、「1日に何度もデプロイする」という状況はまだ少ないですが、MagicPodのツールを使ってそれが実現できるユーザーが1人でも増えたらいいなと思っています。

 

Daily Test/Deployを実現したユーザーが増えている

最近はDaily Test/Deployを実現したユーザーが増えていると感じます。

 

mixiさんの事例

mixiさんの事例ですと、様々なタイプのテストがあるので、優先順位をつけて対応しています。例えば「簡易テスト」は1日に3〜4回実施し、「フル回帰テスト」は1日に1回実施する、といった感じです。

 

リクルートさんの「スタディサプリ」の事例

例えば『スタディサプリ中学講座』の案件では開発者が任意のタイミングで、かつマイクロサービス単位でリリースしています。その際に手動のリグレッションテストではなく、MagicPodによりリグレッションテストをフローに組み込んでいます。

 

BUYSELLさんの事例

BUYSELLさんの事例でも、小さく高頻度でリリースしています。そして、開発、テスト、デプロイのサイクルを高速で回してます。プルリクエスト数が1日10件マージされて本番環境に上がることもあるようです。

 

MagicPod的ベストプラクティス

「MagicPodをどのように活用するか?」について、ベストプラクティスをいくつか紹介します。

 

テストは毎日自動実行

最新のソースコードを毎日ビルド・デプロイし、テストを自動実行します。そうすることで、手動だと、担当者や体制が変わった際に実施されなくなりがちだった問題を解決できます。

 

テストはクラウドで実行

MagicPodが提供しているクラウドでも実行可能です。ローカルPCだと、そのPCの固有の問題やバージョンアップの関係などによって、予期せぬ問題でエラーがでたり、セットアップで面倒なことも多いので、クラウドで実行するのがオススメです。

 

優先順位をつけて自動化する

全て作ってから回そうとすると、作っているうちに陳腐化してしまうこともあるかと思います。なので、少しずつ作って毎日回すことで、早めに何らかの成果を得ることができ、それが自動化定着の近道になると思います。

 

テスト間の依存関係を減らす

テスト間の依存関係を減らすことで、分かりにくいエラーを減らしたり、失敗切り分け難易度を下げることが期待できます。

 

共有ステップを積極的に使う

MagicPodにもAIによる自動修復が入っていますが、すべてのケースをカバーできるわけではないので、画面が変わったときのメンテナンスリスクを減らすためにも共有ステップがオススメです。

 

ロケーターについて学ぶ

ノーコードでも作れますが、ロケーター編集ができるようになることで画面変更に、より強いテストが作成でき、より凝ったことができるようになります。変わりにくいユニークIDをUI要素に付与するなどアプリケーション側がテストしやすくすることも重要です。

文法について学べるコンテンツ

 

テストしやすいアプリケーションにする

アプリケーション側をテストしやすく作ることも非常に重要です。例えば、「ユニークIDをUI要素に付与して、画面の変更に強くする」や「デバック機能を有効化する」「Google認証のような自動化しにくい機能を迂回する方法を用意しておく」などの工夫をすることでテストしやすいアプリケーションになるかと思います。

 

各種機能紹介

最後にいくつか機能紹介をします。

クロスブラウザ・マルチ端末

・作ったテストをさまざまなブラウザ・端末で実行
・並列実行もサポート

 

Visual Regression Test

・画面キャプチャが期待値と一致するかチェック
・デザイン崩れバグなどの検出が可能

 

UI変更があった場合のテスト自動修復

 

CI連携

これらの操作は、すべてノーコードで作成可能です。
無料トライアルもあるので、ベストプラクティスを参考にしながら是非皆さんも使ってみてください。


伊藤さん、ありがとうございました!
続いては、mabl Inc. おだしょーさんの発表です。

mablで品質エンジニアリングジャーニーを実現しよう!

speakerdeck.com

小田:mabl(めいぶる)は2017年ボストンで創業され、2021年8月に日本法人が設立された若いスタートアップでありながら、グローバルにおいてテスト自動化SaaSのリーダー企業でもあります。我々が提供するテスト自動化プラットフォーム「mabl」はローコードテスト自動化が可能で開発チームのテスト高速化に貢献できるのが特徴です。

高速開発チームのためのローコードテスト自動化

mablが提供するサービスはローコードでのE2Eテスト自動化やAPIテスト自動化だけではありません。例えば、サイト上で黒背景の上に灰色の文字が置いてあると、ユーザーにとって見づらく、なんらかのアクセシビリティに違反していると思われますが、このような「人の目で確認するのは大変だけど、WCAGなどのガイドラインに違反しているようなもの」があった場合に、mablは自動的に判別して、具体的な違反内容と共に知らせてくれます。

ローコードによるスピード感とさまざまなテストを組み合わせ可能な拡張性があり、必要な場面で信頼性の高い品質フィードバックを提供しています。実行したテストの内容をグラフィカルなレポートで表示する機能もあります。

CI/CD連携など、すでに使用している開発ツールに自動テストをシームレスに組み込むことも可能です。

ローコードテスト自動化 mablのスコープ

mablのスコープは下図の通りです。UIやE2Eのテストはもちろんのこと、APIのテストにも対応しています。

より良い品質のソフトウェアをより早く提供

mablを導入することにより、テスト構築や実行が早くなるだけでなく、コストも安くなるといった効果が期待できます。既に日本のアクティブユーザーは20%を超えており、アメリカに次いで2番目の多さです。
GDPRへの対応、SOC Ⅱ Type 2(米国公認会計士協会が定めたサイバーセキュリティコンプライアンス)認証も取得しているエンタープライズ対応のセキュリティで提供しています。

顧客導入効果の実数値

mablが描くQuality Engineering(QE)ジャーニー

こういった品質保証はよくQA(Quality assurance)と呼称されていますが、mablではそれを更に拡張したQE(Quality Engineering)という概念を提唱しています。

mablが描く品質エンジニアリングジャーニー

 

開発後に手動テスト

開発後に手動でのテスト(上図の一番下)が現状まだ多いかと思います。私も過去何度も経験してきましたが、手動テストはとても辛くテスターによっては判断基準が曖昧なため、品質の担保もできず非常に非効率だと思います。(エクセルで切り貼りして操作するなど、とても大変でした,,)

 

機能テスト自動化のカバレッジ拡大

それまでの手動テストを自動化して、なるべくE2EやAPIなどのテストを通じて、テスト自動化のカバレッジを増やしていこうというのが「機能テスト自動化のカバレッジ拡大」(上図の下から2番目)の段階になります。これにより一定の品質が保証されます。

 

シフトレスト:自動化されたテストを開発に組み込む

開発の早い段階でバグを特定し対処するために、CI/CDツールと連携し、テストにかかる工数も削減していく段階になります。(上図の真ん中)デプロイ頻度を向上させるにはこれらの対応が欠かせません。

 

非機能的品質の検証

Non-functionalの要件にも対応するために、たとえばアクセシビリティテストを自動化することで、曖昧な人間の目を使った判断をなくし、自動的に違反判定などを検知し品質の向上を行う段階です。(上図の上から2番目)

 

品質指標を使用した継続的な改善

テストを回していくと、さまざまなデータが溜まっていくので、それらを活用して、QAチームや開発チームだけでなく、ビジネスオーナーなどの多くのステークホルダーなどを巻き込みながら、品質指標を定められるようになります。その定めた指標を基に継続的な改善を行っていく段階です。(上図の一番上)

 

デモ動画

www.youtube.com

 

各種機能紹介

自動修復でメンテナンス作業を削減

従来、テストは壊れやすくメンテナンスに時間がかかるものでした。この自動修復機能では、画面のレイアウトが変わっても要素の変更を検知して、テスト自体を自動で修復できます。

自動修復機能についての図

 

GCP上で並列テストを実行

並列テスト実行も可能です。おそらく1000件くらいなら並列で回しても、余裕で耐えられるかと思います。

 

既存のツールとの統合が可能

mablではさまざまなCI/CDツールとのシームレスな連携が可能です。テスト結果をTeamsやSlackに投げることもできます。スライドにはないですが、Safariでのテストも可能です。mabl Linkを使うとインターネットに抜けていない環境のテストも可能です。

 

CI/CDパイプラインへの統合

一例としてGitHubとの連携画面をご覧ください。このように普段お使いの開発ツール上でテスト結果を確認できます。他にもGitLabやCircleCI、JenkinsやGoogle BigQueryなどさまざまなツールと統合が可能です。

CI/CDパイプラインへの統合画面

 

パフォーマンス評価

テスト結果はmabl上に保存されます。たとえば、あるタイミングのデプロイ以降に読み込みが遅くなった場合、グラフィカルなレポートでそれを確認できるなど、問題点の把握に役立てることもできます。

 

今後のmablについて

今年から来年にかけて、「ネイティブモバイルアプリテスト」と「パフォーマンステスト」に注力していく予定です。既にAPIのパフォーマンス(負荷)テストは早期アクセスでリリースしているので、お手元の環境で試すことも可能です。同時1000ユーザーでの実行や徐々にユーザーを追加するランプアップなど機能が充実しています。
ネイティブモバイルアプリテストは、AndroidとiOSの両方に対応する予定です。

 

ロードマップを公開

mablでは製品ロードマップを公開しています。投票機能だけでなく、こんな機能がほしい!というリクエストも受け付けていますので、興味がある方はぜひアクセスしてみてください。
Mabl Product Portal

malbのロードマップ

 

mabl Universityについて

mablには2週間の無料トライアルが用意されています。
とはいえ、せっかくアカウントを作っても、2週間何もしないともったいないですよね。そんな方向けに「mabl University」 という学習サイトを用意しています。さまざまな学習スタイルのメニューを用意しているだけでなく、mabl Skills Certificationsという認定資格制度もあります。現在3つの資格を取得することができるので、学習後すぐに腕試ししてみましょう!

 

mabl のユーザーコミュニティについて

mablが定期開催、運営しているWebinarだけでなく、「mablers_jp」というmablのユーザーの皆さまが中心となって運営しているコミュニティがあります。ユーザーによる忖度のないリアルな話を聞きたい方はぜひご参加ください。

 

おだしょーさん、ありがとうございました!
続いては、質問コーナーです。

Q&Aコーナー

続いてQ&Aコーナーであがった質問を紹介します。

(Q)オーティファイさん、ノーコードにこだわっているのはありがたいです。エンジニアじゃない界隈を視野に入れているということでしょうか?それともエンジニアだとしてもテストはノーコードがウケる感じなのでしょうか?

松浦:Autifyが創業当初からノーコードにこだわっている意図は、エンジニアだけでなくエンジニアでない方でもテストが作成できることで、チームの垣根を越えて品質保証に取り組むことが可能になるからです。また、発注者側がテストをしたり、カスタマーサポートがテストをして問合せを減らすといった使い方もあったりします。AutifyはエンジニアやQAだけでなく、広い層に支持されて使われています。その一方、実はAutifyはエンジニアのユーザーの割合も大きかったりします。いちいちE2Eテストを書き直さなくて良かったり、何をテストしているかをコードを介さずに他のメンバーと共有できる点を評価いただいており、エンジニア、非エンジニア問わずノーコードであることの恩恵は幅広いと言えます。

 

(Q)モバイルアプリ版はどのようなモバイルの機種をサポートしてますか?

松浦:AndroidエミュレータとiOSシミュレータです。

伊藤:Android, iOSのエミュレータと実機です。手元実機やBrowserStack/SauceLabs連携を使えばだいたいなんでもできます。

 

(Q)同じテストシナリオをウェブ版とモバイル版で実行できますか?例えば、ウェブの管理画面で通知を設定し、モバイル版で通知が届くかどうかを確認するような簡単なテストとか

松浦:現時点では、ウェブ版とモバイル版とで別々にシナリオを作る必要があります。ただし、APIなどを使うことで効率化の工夫をしていただくことはできます。

 

(Q)シナリオ作成の支援むっちゃありがたい。これ、そのままマニュアル化にも活用できる感じでしょうか?

松浦:マニュアル化に活用できるような機能となるように目指しています。実際に"ユーザーが使うものを再現できる"ところを目指しています。

 

(Q)CypressやPlaywrightではできるけれどAutifyではできないことはなんでしょうか?

松浦:Cypressなどの自動化フレームワークを使うと、コードを書く必要はありますが、コードならではの柔軟なテストを作成できます。(Autifyのようなノーコードツールは複雑なテストを作るには少しテクニックが必要なケースもあります。)一方でAutifyではテストシナリオのセルフヒーリング(AIによる変更検知と提案)など、OSSのフレームワークにないサポート機能を提供しているので、必要な要件に応じて使い分けるのが良いと考えています。

 

(Q)Autify で作成したテストを他のプラットフォームに移行することはできますか?たとえば Playwright による E2E テストにマイグレーションする、といったことは可能なのでしょうか。

松浦:現時点ではテストシナリオのエクスポート機能がなく、移行はできません。ですが、多くのお客様からご要望をいただいているため、社内で検討を進めております。

 

(Q)Autify、テスト結果のエクスポートがAPIを通じてしか出来なかったと記憶しているのですが、結果をエクスポートして証跡として提示できるようになっていると実利用では有り難い気がします。

松浦:有償機能として、スクリーンショットとテストステップの詳細を含めたテスト結果エクスポート機能を提供しております。

 

(Q)AIが提示してくれるテストケースと人が作成したケースを比較した場合、一致率はどのくらいなのでしょうか?

松浦:まだ具体的なデータはありませんが、Autifyでは今後重要度の高いテストシナリオをAIがより高性能に提案するように学習を促し、テストカバレッジ自体の向上にもご活用いただけるようにしていく予定です。様々な場面でのテストをAIが提案し、そのデータをもとにさらに改善できるよう、たくさんのお客様にお使いいただけると嬉しいです!

 

(Q)MagicPodさん、伊藤様が自ら作ったというのにびっくりしたテスト界隈初心者なのですが、そもそも作ろうと思った一番のきっかけというか理由は何だったのでしょうか?「テストめんどうでやってらんねーよ、もう俺がつくるしかねー!」みたいな?それとも「この先絶対に需要があるから儲かるやろ!」みたいな?

伊藤:13年くらい前に作っていました。あまり使えるツールがなかった。でも作らないと社内で使えるツールがない!と思い、予算をもらって取り組みました。その中で自動テストはニーズはあるが、ソリューションがないというところで起業にいたりました。なので両方です!

 

(Q)MagicPodさんのLT大会、アーカイブありますか?!見てみたいです!

伊藤:オフライン開催だったので、アーカイブはないです。noteの記事があります!
MagicPodユーザーLT会レポート

 

(Q)メンテナンス性、これ結構重要ですよね!そこを意識されている理由、どういう箇所がメンテナンス性のポイントなのかを教えてください。

伊藤:初代のツールはメンテナンスはあまり考えてなかったです。でもいざ作ってみるとメンテナンスがしんどいという感想がありました。簡単に作れるだけじゃなく、メンテナンスの重要性を身に染みて感じました。「メンテナンス性」は長期的に使うときの鍵です。

 

(Q)状況によって自動テストの期待する結果がバラバラなシナリオは作れますか? 例) ・週間スケジュールビューから任意の曜日を選ぶと、選択した曜日の日別スケジュールが表示される。

伊藤:1週間後など、狙った違う日を選んでスケジュールを出すことはできます。何をやりたいかにもよりますが、ある程度の要望は叶えられると思います!

 

(Q)MagicPodで、操作対象を拾っていくのではなく、他のツールと同様に操作を記録していくようなテストケース作成ができるようにはならないんでしょうか?

伊藤:操作対象を拾っていく形式のパフォーマンスとサジェスチョン力を極限まで高めれば、理論上は操作記録とほぼ同じスピードでテスト組めるようになると思っており、そちらをまずは注力していく予定です。

 

(Q)デイリー○○が主流なのですね、これは開発手法としてアジャイル主流だからという感じでしょうか。

伊藤:もっと頻度が高くてもいいんですが、E2Eテストは時間がかかることもあり1日1回よりも頻度を上げるのはなかなか大変ですね。

 

(Q)ボストン!テスト自動化について、日本と世界での圧倒的な違いと、ここは万国共通だなーな点を聞きたいです

松浦:オーティファイは既にグローバル15カ国で採用されております。日本と海外おける違いに関しては、自動化に対する知識が違うので、USでは自動化を既にしているが、さらに効率化するためにはどうするべきかと言う観点で自動化に取り組んでいるが、日本は自動化をこれから導入するというフェーズにいる企業様が多い。共通点としては、リリースサイクルを向上させ、テストの時間を短くし工数を削減する事に対するニーズがあると言う部分があります。

小田:DX白書2023によると、国内でCI/CDやDevOpsを採用した開発はわずか9〜11%程だそうです。USは50%程度で大きく水を空けられています。逆に米国以外ではEUやインド、オーストラリアなどでも広く使われていますが、日本と似たり寄ったりな話をよく耳にします。

 

(Q)テスト自動化サービスを初めて知る初心者なのですが、ライブ実演あざます!むっちゃイメージがつかめました!mablさん、外資系とのことですがマニュアルなんかも含めて完全ローカライズされてる感じでしょうか?

小田:mablのデスクトップアプリやヘルプページ(mablについて)などの各種ドキュメント、学習サイト(mabl大学)、認定資格試験(Mabl Skills Certifications / mabl の認定資格)などローカライズには力を入れています。外資製品ではあるあるのちょっと違和感がある翻訳も時折見かけますが、見つけ次第修正依頼しています。mablはほぼ全員が日本が大好きで、逆に向こうから「日本語ではなんて言うの?」とよく質問が飛んできます。

 

(Q)「高速」というのが重要なポイントということなのですね、ここをポイントにしている一番の理由は何でしょうか?世界の主流?

松浦:ソフトウェアの改善のスピードが求められる場合、テストも高速である必要があります。また一般にE2Eテストは遅いというイメージがありますので、その辛さを解決したいという想いを込めて速さを追い求めています。

小田:手動テストには限界があり、何より人手と工数をかける方法が多用されがちで「遅い」ですよね。モダンな開発を進めていくにあたり、テストフェーズをいかに効率的に行っていくかが1つの鍵になります。そういう意味で「高速」という言葉を使用しています。

 

(Q)めーぶる?めいぶる?

小田:「めいぶる」です!!よろしくお願いします!!(土下座

 

(Q)ノベルティほしいのですが、何に参加すればよいですか?

小田:直近では10月にCTC Forum2023に物理ブースを出展します!
オンラインイベントでは難しいのですが、オフラインであれば直接お渡しできますので、是非ブースにお越しください!
一部有資格者限定のノベルティもありますので、是非認定資格試験にもチャレンジしてくださいね。

 

(Q)アクセシビリティに着目したのは時代の流れですか?(SDGs的な

小田:米国では2022年だけでアクセシビリティに関する訴訟が4000件にも上ったというデータがあります。
日本国内では現在時点であまり重要視されていませんが、ハンディキャップの有無に関係なく同一の体験を提供する必要性は増してきています。実際に2021年に障害者差別解消法が改正され、2024年6月までに行政機関だけでなく事業者にも対応が求められるようになるようです。もうすぐですね。

 

(Q)愛フォンでQRコード読み込みました!

小田:ありがとうございます!!どこの店舗に並びますか!?(過激派意見

 

(Q)事業拡大局面において、各社さんが課題に感じているところはどこでしょうか

松浦:事業拡大の課題は大きく分けて技術的な面とビジネス的な面の2つあります。お客様がテストを行う時の問題点を自分たちで理解するため、Autifyを使って、Autifyをテストしています。この時に開発スピードと品質向上をいかに最大化していくかを自分自身(自社)が実感し、解決していくことが今後の事業拡大に重要な技術的課題と考えています。一方ビジネスとしては、日本以外への進出をさらに進めていきたいと考えています。既に15カ国以上で使われている一方、日本と海外ではさまざまな状況が違うので、ここをいかに乗り越えるかが課題です。

伊藤:技術面は、バックログがあるけど人が足りないという点。採用が課題です。営業の人の採用は難しいです。海外進出頑張っていますが、言葉の壁が大変です。最近はインド英語に苦戦しています。

小田:先ほどお話した通り、DX白書2023によると、国内でCI/CDやDevOpsを採用した開発はわずか9〜11%程だそうです。USは50%程度で大きく水を空けられています。
これでは「単純にテストの作業工数を減らす」ことに自動化ツールが使用されるだけで、本来の価値を発揮できません。アジャイル開発の各スプリントで実施されるテストがスプリントを圧迫しないことやシフトレフトを実現するためにテストの自動化を進め本質的な価値提供に時間を割く環境を作る啓蒙活動をする必要性を感じています。

 

(Q)ずばり、ChatGPTのように、「こんなテストを作って」を基に、各社のサービスを利用して作ってくれるような開発は進んでますでしょうか?その際どのようなハードルが見えてますでしょうか?

松浦:「こんなテストを作って」とオーダーすると、シナリオを作ってくれる機能はAutifyとしても目指す姿です。AutifyのStep Suggestionsは、ChatGPTを活用し、テストシナリオの作成をアシストする最初の段階として、ステップごとの提案をする機能です。(現在ベータ版の提供となっております)
ChatGPTなどのAIを活用して皆さんのニーズに応えるサービスを提供できるように、ハードルを一つ一つ乗り越え、出来ることを増やして提供していきたいと思っています。

伊藤:ゼロからMagicPod に指示するというのは考えていないです。ただ、ChatGPTを取り込んだシステムは検討しています。外側でつくってもらったものを取り込めたらいいなと考えています。
ChatGPTも部品として、要所要所で役に立っているという印象です。ゼロからとなると、ChatGPTも成長が同じくらいなのではないかと考えています。

小田:ChatGPTではハルシネーションは起こりますし、あくまでCopilot("副"操縦士)なんですよね。
デモ用に簡単なHTMLをAdvanced Data Analysisで吐き出しているのですが、テストを回したらよくエラーを吐きます。
そもそもChatGPTで出力された結果は正しいのか、常に念頭に置いておく必要があります。
生成AI時代になったからこそ、テストの重要性が増したと感じています。

 

(Q)他社にはない、それぞれの強みを教えてください!

松浦:極力コードを書かなくてよく(ノーコード)、直感的に使えるユーザインタフェースを指向してサービスを開発しています。
エンジニアはもちろんエンジニアでない方々にも広く使っていただけるのがAutifyの強みであり、開発者からQA、またプロダクトマネージャーまでチーム一丸となって品質保証に取り組んでいただけます。また、使いやすさの追求という点においてAIの活用にも積極的であり、Step SuggestionsやSelf healingの機能のように、今後も人間がテストを行うのを補助してくれる・代わってくれるAIの開発を進めていきます。(さらに自由度を高めてJavaScriptを使用し、機能を拡張することも可能です)

伊藤:モバイルアプリとWebアプリのテストが高い品質でできます。

小田:直感的なインターフェース、E2Eテストとも連携できるAPIテストやパフォーマンス(負荷)テストが強みです。
平行で1000件の同時実行も可能で、エンタープライズユースも想定したスケーラビリティのあるプロダクトになっています。
E2Eのパフォーマンステストやネイティブモバイルアプリテストも2024年にかけてローンチされる計画が進んでいるので、ご期待ください!

 

(Q)自動化の普及が遅れている理由はどんなところにあると思いますか。

松浦:リリース速度の向上に比例してテストの頻度も向上するため、自動化の需要も高まります。競合より先に製品をリリースし、顧客のニーズを素早く反映してアップデートし競争力を高める必要があります。競争力の強化を求める時に、開発の速度だけを意識しがちだが、テストの頻度が少ないと高品質な製品を維持することは難しいので、テスト頻度を高めることが競争力の強化に必須だと言う理解が深まるようにAutifyからも情報提供を行なっていきます。

伊藤:テストの頻度が低いから手でやれる。アジャイル開発の普及が遅れているから。ウォーターフォールモデルになりがちなところが、普及の遅れにつながっていると思います。

小田:DevOps などの採用が遅れてるから、自動化の本質的な価値も当然感じてもらいにくい環境にあると思いますね。

 

(Q)テスト自動化は、全く無知の状況です。 ただ、Autify の社名だけは知ってまして、MagicPod、mabl は、も 当該セミナーの告知で初めて知って。、 その中で 稀少性のようなものを なぜか 直感したので、申し込み させていただきました。

松浦:ありがとうございます!

伊藤:ありがとうございます!

小田:ああああ!初めましてmabl(めいぶる)です!是非お見知りおきください!

 

(Q)自動テストを、プロダクト同様に資産としてまわしていく、育てていくことになると思いますが、どのようにしますか?

松浦:Autifyをさらに使いやすく、また維持しやすいサービスにすることは重要な鍵だと考えており、継続的に改善をしていきます。
一方で、開発者がプロダクトのコードと同様にテストもメンテナンスしていくことが重要だとも考えており、弊社ではAutifyを使ってAutify自体をテストしています。自動テストをメンテナンスし資産として育てるという考え方を広めることもまた私たちの役目だと思います。

伊藤:GitHubとの連携を可能にさせることが重要だと思っており、ちょっとずつ取り組んでいます。

小田:テスト自体は重要とされつつも蔑ろにされがちなので、既存のCI/CDパイプラインに組み込んで自動実行する仕組みを構築することがお勧めです。Jenkins, GitHub, GitLab, CircleCI, Bitbasketや、チケッティングにはJiraとも連携可能です。
mablによる自動テストを開発ワークフロー全体にシームレスに組込むことが可能

 

(Q)現場を知ってる人が自動化に着手する。のが一番だと思っているが、現場を詳しく知らない自動化のプロが自動化の先陣を切るとして、大事にするべき心の持ちようやあるべき思考の方向性はどんなものがありますか?

松浦:開発スピードと(自動化を通じた)品質の保持・向上はトレードオフではなく、どちらも両立すべきことであると認識し、現場をよく知ることでどちらかを犠牲にしない施策を打っていく必要があると思います。

伊藤:業務理解を大切にする

小田:QAには横横断的に対応するチームやチーム内専任など形は様々です。
ご質問は前者の場合かな?と推測しますが、現場1つひとつの解像度をなるべく上げて対応することが重要かなと考えます。
一見遠回りになりそうですが、横横断的に対応しているからこそ解像度を上げていくとチーム間の共通の問題やそれぞれの強みなどを客観視でき、価値の高い仕事が提供できるのでは?と思います。

 

(Q)組み込み系のソフトウェアのテストに適用していく予定や展望があればお聞かせください。

松浦:当社サービスでテストできる対象を広げていくべき分野の1つとしては認識しています。

伊藤:すみません、ありません。Appiumが対応しているRokuとか**TVとかは将来対応できたらいいかもしれません。

 

(Q)クラウドで行うというのはMagicPodさん独自のサービスなのでしょうか

松浦:Autifyでもクラウド実行を提供しています。

伊藤:他社さんも対応してます!

小田:クラウド実行対応してます!

 

(Q)3者さんにお聞きしたいです、テストも開発も、もう完全にクラウドが主流、そうじゃないとまずい世の中になっちゃいますでしょうか

松浦:クラウド・ローカル共に利点欠点ありますので一概にお答えすることは難しいですが、当社では環境依存を排すためクラウド実行を基本としています。
クラウドの場合ネットワークの速度や可用性に影響されますが、環境依存を抑えることが可能です。ローカルの場合、環境依存が激しいといった欠点がありますが、テストに限定していえばE2Eテストは一般的に遅いので、高速で実行できるという利点もあります。

伊藤:開発用のIDEはまだしばらくローカルに残ると思います。テスト実行環境は、クラウドのが優位性あって、長期的にはクラウド有利と思います。

小田:テスト製品の設計思想によると思います。
手元で動くか確認するためにローカル実行は活用するべきとも思いますが、継続的な品質の改善にはクラウド実行で過去貯め込んだデータとの比較を行っていくことが重要とも感じます。
あるデプロイ以降、読み込みが遅くなったことを過去データと比較して検知する機能があります。これは従来勘や感覚に頼っていた方も多くいるところです。

 

(Q)各社さんに一番得意分野、PRポイントはお聞きしたいですね

松浦:ノーコードで極力コードを書かなくてよく、直感的に使えるユーザインタフェースを指向してサービスを作っていますので、エンジニアはもちろんエンジニアでない方々にも広く使っていただけるものになっています。また、同じく使いやすさと言う点でAIの利用にも積極的で、Step Suggestionsはその1つですが、今後も人間がテストを行うのを補助してくれる・代わってくれるAIの開発を進めていきます。

伊藤:モバイルアプリとWebアプリのテストが高い品質でできます。

小田:各社が提供しているE2Eテストだけでなく、APIテストやパフォーマンス(負荷)テストが強みです。平行で1000件の同時実行も可能で、エンタープライズユースも想定したスケーラビリティのあるプロダクトになっています。直観的なインターフェースも推しポイントです。
E2Eのパフォーマンステストやネイティブモバイルアプリテストも2024年にかけてローンチされる計画が進んでいるので、ご期待ください!

 

(Q)テストシナリオの作成自体をAIのほうで自動作成してくれる機能はないのでしょうか?

松浦:今回のStep Suggestionsはあくまでもテストのステップを提案しますが、これはあくまで第1歩でしかありません。シナリオ作成自体も代わりにやってくれるような機能もあり得ると思っています。

伊藤:現時点ではありません。

 

(Q)AIサポートというのはこの先完全に主流という感じなのでしょうか?プログラミング側もAIサポートの時代ですし。このあたり、テスト自動化での世界標準も今は「AIあたりまえ」でしょうか?

松浦:テストは手動で行われる場面も多いですし(特にE2Eテスト)、その手動作業の一部を代替するため、あるいは手動作業をサポートするためにAIを使うことは増えていき、その意味では当たり前になっていくのではと思います。ただし、AIにも得意不得意があるので、適材適所で使い分けていくことになるでしょう。Step SuggestionsはAIが得意とする人間をサポートする機能の1つであり、このような機能は積極的に活用していくべきだと考えています。

伊藤:なんらかの形でどんどん増えていくと思います。

小田:現在時点では要素の変更を検知したり、ウェイトタイムを自動で適切な値に設定したりの自動修復機能でAIを活用しています。
ChatGPTなどで話題となった生成AI関連の技術も今後組み込まれていくことになると思います。mabl blogでそれらの検証を行った記事などが公開されているので、ご興味があれば是非ご覧ください。

 

(Q)各社さんにお聞きしたいのは、テスト自動化で属人かを排除、絶対必要かなと思いつつ、担当者のテストスキルが育たない?という不安もありつつ、、、この辺りいかがでしょう?

松浦:Autifyなどのテスト自動化ツールに任せることが出来る部分(テストの実行など)は積極的に頼りつつ、テスト設計などの上流部分や、自動化が難しい分野にスキルの重点を移すことで、テスト自動化ツールを活用した生産効率性の高いスキルの形成が可能になると思います。

伊藤:自動化は継続的にメンテナンスがやはり発生しますので、スキルは鍛えられると思います。また、繰り返し作業が減りテストケースや業務を考えることに時間を使えるので、スキルはむしろ育つと思います

小田:クラウド環境が浸透してオンプレミス環境で培ってきたハードウェアの知識が不要になったかと言えば、実際は基本的な知識や技術の理解がアドバンテージになることと同じだと考えています。

 

(Q)内緒にしておくので各社自動化ツールでできないこと・苦手なことを聞きたい

松浦:Captchaのような機械かどうかを判定する仕組みを突破するのは苦手となっています。

伊藤:「ロボットですか?」の確認機能

小田:MFA苦手だったのですが、最近サポートを開始しました。とはいえ、当たり前ですが認証系は自動化と相性悪いですね。

 

(Q)ノーコードということは未経験者でも作れる分 今度はそのテスト自体に対しての品質保証が担保できるわけではないというような問題も出てくるのかなと考えますが 品質保証も担保するために考えていることとかはありますか

松浦:Autify社内でAutifyを使ってテストする際には、開発者がテストを作成し、QAチームがそれをチェックするという流れを経ることで、テストの品質を担保するようなワークフローにしています。また、QAチームが開発者にテストスキルを伝授するハンズオンを行ったり、ドキュメントを作成するなどして一定以上の品質のテストが作られるようにしています。

小田:良い包丁があるだけでは料理が上手くならないのと同じで、使い手のスキルやマインドセット、チームや組織でどのように活用するかのルール化は必要だと考えています。QAエンジニアを中心にどのようにテストすれば品質の向上に寄与できるのか、またその基準をどう設定するのかについて、データを取得しながら目標設定することが重要と考えます。

 

(Q)ハチのマスコットかわいい

松浦:ありがとうございます! 名前はHatty(ハッティー)です!
はじめまして、Hattyです‼︎

小田:ゆるキャラ運動会やりたいですよね!!

 

(Q)CI連携は、今はGithub Actionsが一強なんでしょうか?個人的にはCircle CIがすきなんですが。。。

松浦:AutifyではGitHub Actionsはもちろん、CircleCIでも簡単に使えるようOrbを提供していますし、他のツールも連携できるように仕組みを提供しています。また、Autify社内では場合によってGitHub ActionsとCircleCI Orbを使い分けてAutifyでテストしています。詳しくはドキュメントをご覧ください https://help.autify.com/docs/ja/cicd-with-autify

伊藤:うちもCircleCI使ってます。

小田:CircleCIとのインテグレーション、もちろん可能ですよ!CircleCIのエバンジェリストの方が昨年のアドベントカレンダーでmabl連携の記事を公開しているので、是非ご覧ください!
mablによるE2EテストをCircleCIから呼び出す

 

(Q)仕様の変更があった際のテスト側のメンテナンスについてはどのように行うのでしょうか?

松浦:Autifyでは、独自に開発したAIを使用した「Self Healing」というAIによる自動テストメンテナンス機能を提供しています。
軽微な変更であれば、セルフヒーリングの機能でメンテナンス可能ですし、大きく変更があった場合も追加レコーディングが簡単に行えます。

伊藤:AIの自動修復、UI画像の再アップロード機能、ロケーターの手編集、などを使う形です。

小田:自動修復機能をご活用ください。変更の程度によりますが、ローコードツールなので作り直すことも検討して良いかもしれません。
テストに使用するデータセットの追加変更なども場合によっては必要かもしれないですね。

 

(Q)素朴な質問ですが、テスト自動化ツールは、そのまま社内のRPAとして使うことも可能でしょうか?

松浦:テストに特化した仕組みになっているのでRPAツールとしては少々使いにくいのではと思います。ただ、Autify社内でもブラウザ上の作業を自動化するのに使うこともあります。

伊藤:できなくもないですが、ローカルインストールされたツールは触れないとか、不便も大きいので、RPAの専用ツールを使う方がいいと思います

小田:設計思想が異なるので、使用自体は可能だと思いますが、専用ツールの方が良いかなと思います。

 

(Q)テスト自動化のコミュニティやカンファレンスなどはありますか? (伊藤さんが登壇とか言ってような気がしたので質問しました)

松浦:Autifyでは定期的にテスト自動化に関する最新情報やAutifyの使い方をお伝えするセミナーを開催しています。こちらのURLをぜひご覧ください。https://autify.com/ja/webinars

伊藤:「ソフトウェアテスト自動化カンファレンス」などがあります。

小田:全国で開催されているJaSSTソフトウェアテストシンポジウムJaSST nanoと称した月1回のオンラインコミュニティが開催されていますね。
他にもソフトウェアテスト自動化カンファレンスや、ソフトウェア品質シンポジウム、mabl関連であれば、外部のQAエンジニアの皆さまが中心となって運営しているmablers_jpがあります。隔月開催の夜イベントと、毎月昼開催の「めいぶるカフェ」の2つのスタイルで開催しているので、ご都合が付くタイミングで是非ご参加ください!11/22にはmabl Experience'23  Japanという弊社主催のカンファレンスもあります。

 

(Q)メンテナンスは長期的に使用するうえで重要なファクターと思いますが メンテナンスをしやすい機能を考える上で一番に考えることって何でしょうか

松浦:テストを短く保つこと、共通したステップはできるだけ再利用すること(Autifyにはステップグループという機能があります)、こまめにメンテナンスすること(Autifyではなんらかの変更を検知した際は「要確認」という表示が出ますが、これが出たらすぐ確認してテストシナリオを修正すると、結果的にメンテナンスが楽になります)

伊藤:日常業務で忙しい中でもいかにそれと並行でメンテナンスできるようにするか

小田:定型で使いまわすテスト内容をまとめられるFlowという機能があります。
ある程度ブロック化しておくことでメンテナンスコストも下がると考えます。

 

(Q)testability (テスト容易性)という考え方がありますが、test automatability (テスト自動化容易性)について、そもそも開発時に自動化前提で開発を進めるということは増えてきているようにおもうのですが、そういった背景を踏まえても、ここは、どうしても自動化が難しいという部分、そして、それに対して今後それを乗り越えるための各社のアプローチ案など参考までお伺いしたいです。

松浦:テスト自動化ツールを開発している当社ですら、すべてのテストを自動化しているわけではありませんし、どうしても自動化の得意・不得意があります。また、ユニットテストなど開発のより早い段階でテストした方がよく、かつそうしていればE2Eテストをしなくても十分な場面も多いです。これを踏まえて、自動化に向いたところを自動化し、そうでないところは手動あるいは違うツールを組み合わせると割り切るのが大事だと考えています。

小田:全てを自動化しないことです。本質的にはユニットテストが一番多く、次いでAPI(結合)テスト、E2Eテストは左記2つと比較すると数は少なく設計するべきです。
どうしても自動化できないテストで代表的なものには探索的テストがあります。少なくとも現在時点では自動化を無理に行うことに注力するべきではなく、品質を向上させるベストな方法の視点でテストを設計することが重要です。

 

(Q)各社さんにお聞きしたいです。 E2Eテストの導入に失敗する組織・やり方の特徴など有りましたら、教えて頂きたいです。

松浦:成功の可能性が高い組織にはいくつかの特徴があると考えております。まず組織に品質を大事にする文化があること、導入をリードする人(責任者)がいること、またリードする方だけでなくチーム全体で品質保証を行うと言う意識があること、ステージングに入ったらデプロイを回すなど作ったテストが必ず実行される仕組みにすること(CI/CDパイプラインに組み込むなど) が大切となります。

小田:(手軽に価値を感じていただくためには良いと思いますが、) 単純にテスト工数の削減を目的に導入すると本来の価値を発揮できないと考えます。
開発手法をよりモダンに変革していく過程でシフトレフトなどを行っていき、バグが早期に検出できるようになるなどの本質的な価値を感じていただきたいと思っています。

 

(Q)各スピーカーに、他社ツールの良かった点についてコメントを伺いたいです。

松浦:mabl : 痒いところに手が届く細かい設定ができる
MagicPod: 文章を組み立てるようにシナリオが作れる

伊藤:Autify: 物体認識を入れていたところ
mabl: 細かい機能がめっちゃ多い

小田:Autify: 生成AI関連サービス
MogicPod: モバイルテスト

 

(Q)今日はこのまま寝ずに午前2時までおきてますか?

伊藤:寝ます

小田:2時開始なので、4時まで見て、5時まで公式サイトの詳細なリリース文書を読んでいましたね。今年は銀座で優勝して5連覇(?)を達成しました!ありがとうございます!!

 

(Q)iOSに申請するときに、アカウント停止ボタンがみつからないとかある程度のパターンでリジェクト食らうので、最低限の決まりがあるのでそういったテストはAIで自動検出してほしい。

松浦:まさにそう言った、みんながやってるテストを提案できるのがStep Suggestionsなどで実現していきたいことなので、頑張ります!

伊藤:興味深い情報ありがとうございます!

 

(Q)今、ChatGPTを代表するLLMが注目を集めています。もちろん限界はありますが、マルチモーダル対応や、各社の競争、OpenSourceの急速なキャッチアップなど、パラダイムシフトの真っただ中にいるように感じています。 各社、そういったビッグピクチャーに対してのビジョンのようなものをお聞きしたいです!

松浦:Autifyでは創業当初からAIによるUI要素の認識技術に注力しており、シナリオを自動的に修復するSelf Healingや、スクリーンショットの差分を検出するVisual Regression機能の提供をしてきました。
この9月にAutifyが提供するAIに関する新情報や開発者ブログをお読みいただける「Autify AI Labs」を公開いたしました。(Autify AI Labs)
今後もAI技術の開発を進め、テストケースのデザインから、テスト作成、実行、そしてテストシナリオのメンテナンスに至るまで、全ての過程においてAIを活用した機能を随時リリースしていき、ソフトウェア開発プロセス全体の最適化を実現していきます。

伊藤:ノーコードとコードを融合していきたいです。生成AIも大きなテーマですね。

小田:ロードマップを常に公開していて、皆さまからのご意見も受け付けています。
特にニーズの高い機能は優先して実装していくので、是非[Product Portal]をご覧ください!

 

(Q)生成AIが進化するとUIもパーソナライズされ、画面そのものが自動でカスタマイズされるようなUXになる可能性もあるのではと勝手に思っています。 もし、そうなった場合には、テスト自動化もAI対応が必須のような未来がくる気がします。そのような自動化ツールへの備えを意識したことはありますか?

松浦:考えさせられる質問ありがとうございます。UIはどんどん動的になっていき、自動テストはその点で難しいものになっていっているので、その延長ではあるのではと思います。画像認識、Step Suggestionsなどの既にAI/MLを活用した機能をさらに強力に改善していきたいと考えています。

伊藤:興味深いです。考えたことなかったです。AI製品をテストするにはどうテストするか、という研究をしている方がいますが、そういう分野に近いなと思います。動的に答えが変わるものをどうテストするか

 

Q&Aコーナーは以上です。

次回のイベントレポートもお楽しみに♪

【イベントレポート】アジャイル開発エンジニア勉強会~各社の取り組みや課題から学ぶ会~

アジャイル開発エンジニア勉強会トップ画像

こんにちは!TECH Street編集部です!

2023年8月25日(金)に開催した、 「アジャイル開発エンジニア勉強会~各社の取り組みや課題から学ぶ会~」では、各社のアジャイル開発に携わるエンジニアが集まり、それぞれの知見を発表し、学びあう勉強会を開催いたしましたので、その様子をレポートいたします。

登壇者はこちらの方々!

yigarashiさん/株式会社はてな
岡部利樹さん/パーソルキャリア株式会社
西田里穂さん/プラス株式会社

プロダクトマネージャーがアジャイルに習熟して生まれた強いチームの話

speakerdeck.com

アジャイル開発エンジニア勉強会画像01

yigarashi:早速ですが本日は

  • PdMがアジャイルに習熟していると起こる良いこと
  • はてなブックマークチームの事例

この2点にフォーカスしてお話します。
まず「PdMがアジャイルに習熟していると起こる良いこと」を話す前に「2023年のソフトウェア開発の現状」をお伝えしたいと思います。

アジャイル開発エンジニア勉強会画像02

  • 業界の成熟に伴い、パイの減少、競争の激化
    →闇雲に作っても成功しない時代に

  • より早く「よいもの」を見出す必要性
    →アウトプットからアウトカムへ
    →しかしどうやって「よいもの」を見つける?

業界が成熟し、競争も激化しており、「これ面白そうじゃん」という感じで作っても成功しない時代になってきています。

今は「面白そう!」という理由で、ただやみくもに作るのではなく「より早く」「本当にユーザーに喜んでもらえるもの」「本当にユーザーの価値になるもの」を見出して、それを素早く作ることが大事になっています。

「では、どのようにしてユーザーにとって良いものを見つければよいのか?」という課題が出てきます。

この課題に対するアプローチとしてよく言われているのが、「仮説検証とデュアルトラックアジャイル」です。

仮説検証とデュアルトラックアジャイル

アジャイル開発エンジニア勉強会画像03

これは課題に対する仮説検証を反復して、「よいもの」のメンタルモデルを獲得する、というやり方です。

例えば、

  • 「こういう導線を用意すれば、ユーザーは次のページに進んでくれるのではないか?」
  • 「こういったコメントの見せ方をすれば、よりユーザーが喜ぶのではないか?」

などという仮説を置いて、それを実際に作り、「ユーザーの振る舞いや数値がどう変化するか」を学習して繰り返すということです。

デュアルトラックアジャイルについて

そして、この仮説検証をうまく回すために、「デュアルトラックアジャイル」という 2 トラックのサイクルを回す手法があります。

この 2 トラックのうちの一つは「ディスカバリートラック」です。これがいわゆるプロダクトマネージャーのサイクルです。そしてもう一つが、「デリバリートラック」です。これがいわゆる開発のトラックになります。

ディスカバリートラック
・仮説の立案、検証、学習のサイクルを回す

デリバリートラック
・仮説を検証するためのインクリメントを作るサイクルを回す

この 2 つのサイクルをうまくかみ合わせて回していくと、効果的に仮説検証ができるはず、という考え方となっています。

仮説検証型アジャイル開発フロー図

仮説検証型アジャイル開発フロー図

上図の左側がディスカバリートラックで、右側がデリバリートラックです。
「こういうMVPを作ったら良いはず」というものを作り、「その中でMVPを検証して、またさらに、ディスカバリートラックの仮説検証を行う」というように、2つのトラックを両輪で回していくやり方となっています。

私たちはてなブックマークチームでもこのやり方をしようとしていますが、

  • 「では、その中でどうチームをより良くしていくか?」
  • 「どういったアジャイルムーブメントを起こしていくか?」

を考えたときに「改善はデリバリーから」という思考に至りました。

改善はデリバリーから始めよ

アジャイル開発エンジニア勉強会画像05

改善はデリバリーから始めるのが良いと考える理由の1つは、「リリースしてフィードバックを得るスピードがそのまま仮説検証のスピードを決めるから」です。

それともう1つは、CIやリリースフロー、レビューフローの改善などで「即効性があり改善を実感できるから」です。

では、次にエンジニアはどのような心理を辿っていくのかを見ていきます。

エンジニアの心理の変遷

下図の横軸の左側が「デリバリー」、右側が「ディスカバリー」を表します。そして、縦軸が「越境度」を表します。越境度は、「改善の難易度」と考えていただければよいかと思います。

初めは、エンジニアとしては技術で解決できる部分のため、ハードルが低くスムーズに進みます。

改善初期のエンジニア心理

改善初期のエンジニア心理

そこから、徐々に問題のボトルネックが移動していき、デリバリーとディスカバリーが交わっていきます。この辺は、かなりやりがいがあり、「頑張り期」という感じだと思います。

アジャイル開発エンジニア勉強会画像07

しかし、この「頑張り期」を超えたあたりから辛くなってきます。ここまでくるとエンジニアとしては職種も違うので「どう働きかけたらいいんだろう?」や「ディスカバリーまで習熟する余裕がない」などの悩みがどんどん出てきます。
これは私も経験しましたし、周囲でもよく見る光景です。

アジャイル開発エンジニア勉強会画像08

では、長らくお待たせしました。以上の背景を踏まえて「PdMがアジャイルに習熟していると起こる良いこと」の説明に入ります。

「PdMがアジャイルに習熟していると起こる良いこと」とは、下図の右から左に向かう矢印が生まれることです。

つまり、プロダクトマネージャーがきちんとアジャイルのことをわかっているので、「ディスカバリー領域の方からアジャイルの文脈でチームをどんどん良くする」という施策を打っていけることです。

アジャイル開発エンジニア勉強会画像09

ここまでのまとめ

PdMがアジャイルに習熟すると起こること

デュアルトラックアジャイルを双方向から改善する能力を獲得できる
・まずはチーム全体をカバーできる状態へ
・少しずつ重なり合う領域を増やして強化する

アジャイル開発エンジニア勉強会画像10

はてなブックマークチーム事例

つづいて、「苦悩期」に直面したときに、「どうメンバーを巻き込んでいくのか?」、はてなブックマークチームの事例を紹介します。

アジャイル知見の展開

アジャイル開発エンジニア勉強会画像11

私達のチームではまず「SCRUM BOOTCAMP THE BOOK」を企画職を含めたチーム全員を巻き込んで 1度輪読しました。この書籍は、「スクラムやるならこれ」という鉄板の書籍だと思っています。

さらにPdMに「認定スクラムプロダクトオーナー研修」を案内して受講してもらいました。これは、スクラムの中でPdMとしての役割をしっかり理解してもらおうという試みです。

このような積み重ねの結果、チーム全員の中で理想像やメンタルモデルが揃いました。そして、はてなブックマークでは全員の目線をそろえたあとに「ディスカバリーのフロー構築」を行いました。

ディスカバリーのフロー構築

アジャイル開発エンジニア勉強会画像12

それまでエンジニアの方からは「チーム全体はこうした方がいいのではないか?」や「エンジニアのフローはこうしてみよう」など、様々やっていたものの、企画職のフローは、なかなか踏み込みづらい状況がありました。

それがPdMの手によって、スクラムの文脈で整理されるという事が起こりました。

上図は、実際に弊社のPdMがそのプロセスを整理するときに書いたポンチ絵です。一番左から「初期仮説フェーズ」があり、その中で「活動としてはこういうことをやるよね」、「このフェーズの完了条件は何かな?」「このフェーズではどういう会議体があるんだっけ?」など、そういったことを一旦全部整理しました。

リファインメントの改善

  • 施策をエンジニアが検収する場になりかけた
    ・デュアルトラックアジャイルの典型的な罠

  • 双方から2トラックが重なる領域を増やす
    ・施策の相談を早いフェーズから始める
    ・一緒にアイデアを練り上げるグランドルールをエンジニア内で共有

アジャイル開発エンジニア勉強会画像13

スプリントの撤廃

  • スプリントがリードタイムのボトルネックに
    ・改善が進み高速な学習によってアイデアが早く陳腐化
    ・設計スプリントと実装スプリントが分かれる

  • 課題感を受けてリファインメントと計画をオンデマンドに実施する体制を構築
    ・両トラックのアジャイルへの理解が深く、リードタイムを短くするという本質を一緒に追えた

アジャイル開発エンジニア勉強会画像14

まとめ

  • PdMがアジャイルに習熟すると起こること
    ・デュアルトラックアジャイルを両トラックから効率よく改善できるようになる

  • はてなブックマークチームの事例
    ・輪読やCSPO研修でアジャイル知識を展開
    ・PdMがディスカバリー改善の旗印となりチーム全体を深く、素早く改善することができている

ぜひ皆様にも我々の事例を参考にして強いアジャイル開発のチームを結成してください。

 

yigarashiさん、ありがとうございました!

続いては、パーソルキャリアの岡部さんのレポートを紹介します!

ベトナムオフショアとのアジャイル協業の検討とテクニック

アジャイル開発エンジニア勉強会画像15

岡部:今回はフルリモートでアジャイル開発体制を実施し、すでにリリースもしているプロダクトの話です。このプロダクトの開発にはリモートチームとしてパーソルプロセス&テクノロジーベトナム社の現地チームと協業し、開発していく形をとっていました。

しかし、チーム組成当初は言語差異によるコミュニケーションコストが発生し、アジリティを維持したままの委譲に課題が発生していました。

まずベトナムのチームに参画いただくときの選択肢として、「フィーチャーチーム」「コンポーネントチーム」がありました。

プロジェクトの参画形態

プロジェクトの参画形態

アジャイルとしては「フィーチャーチーム」が基本的に望ましいと考えていますが、「コンポーネントチーム」であっても参画期間が短かったり、専門性の高いチームであれば、アジャイルにおいてもそっちの方が良い場合もあると思います。しかし今回は1年以上の協業期間でしたし、込み入った話のコミュニケーションを最小化することからも「フィーチャーチーム」として参画していただきました。

アジャイル協業においての「フィーチャーチーム」のメリット

  • ユーザーストーリー分割による自然にチーム間の依存関係を削除
  • 技術的なコミュニケーションを最小化
  • 短いフィードバックサイクル


フィーチャーチームとして参画していただいた場合、「LeSS」という考え方があります。

LeSSの詳細説明図

LeSSの詳細説明図

要件定義と見積もりの連携

その上で開発プロセスを検討しましたが、最終的なデリバリーの流れとしては下図のようになりました。

アジャイル開発エンジニア勉強会画像18

数スプリント以上先の水準の詳細度の場合、日本側で要件定義・見積もりをし、具体化の段階でベトナムに移譲しています。日本側が見積もって、ベトナム側が実装をすることになりますが、アジャイル的には実装する人が見積もることが正なので、どうしてもギャップが起きるリスクがあります。それが分かっていたので、それに対して対策をしていきました。

アジャイル開発エンジニア勉強会画像18

どのような対策かというと、「リファレンスストーリーを作り、それを基準にして見積もる」というものです。

「リファレンスストーリーに対して相対的にどのくらいのポイントなのか?」という見積もりをすれば、個人の生産性の違いによるところが、相対的な作業規模で見れるので補正されます。

それと、同じようなことはそのチームを跨いでも言えます。リファレンスストーリーを共有しておけば、チーム間でも見積もりの差異が起きないと言えます。

ただし、作業量が変動する場合もあるので、それを考慮して、ベトナム側に精緻な見積もりも依頼しました。

見積もり単位について

注意点としてストーリーポイントには絶対にバッファに含めず、全体スケジュールに集約することが重要です。でなければチーム間の知識差によるバッファサイズ差により実行数が不明確になるからです。

アジャイル開発エンジニア勉強会画像20

品質について

そして品質面では「バグ検出は探索的テスト」が効果的です。

アジャイル開発エンジニア勉強会画像21

テスト自動化ピラミッド

Mike Cohn氏が提唱する「テスト自動化ピラミッド」の考え方では、三角形の部分は「自動テスト」を指しており、この部分は、「網羅的かつ非属人的に時間かけて、テストコードを書く必要がある」としています。

それに加え、一部は手動テストが必要だとしています。それは、「エンジニアがここにバグがあるんじゃないか?」というところを独自の観点で探していくタイプのものです。これが「探索的テスト」で、こちらは「短時間で属人的で非網羅的」です。

今回のプロジェクトでは、運用ができるのは日本だけで、ベトナム側では運用できない、という制限や、そもそも初期開発は日本側で行なっているために情報の非対称性があり、これに合わせて探索的テストだけは日本側で全て行うことにしました。
日本側の負荷になるものの、探索的テストであれば低工数で行えるので影響が少ないですし、そこでのバグ指摘を通じてベトナム側への知識移転も進めることができます。

まとめ

  • Mike Cohn氏の発言を中心にした先行プラクティスの転用で、ベトナムリモート協業はある程度円滑に進めることが可能
  • ただし、チーム組成時点でのトラブルは多い。
    迅速に課題抽出と改善をしないと負債が大量にたまりかねない。この点はむしろアジャイルの強みが活きる。

 


岡部さんありがとうございました!

続いては、プラス株式会社の西田さんの発表です!

はじめてのアジャイル開発ー開発者から見たアジャイル組織立ち上げの話

アジャイル開発エンジニア勉強会画像22

西田:本日は詳細な方法論ではなく、開発メンバーとしてアジャイル開発をやってきて、そこでの経験談のようなところをメインにお話しさせていただきたいと思います。

アジャイル開発エンジニア勉強会画像23

プラスの組織図

私達プラスは現在3つのカンパニーに分かれています。

  • 文具を扱う「ステーショナリーカンパニー」
  • 家具を扱う「ファニチャーカンパニー」
  • 物流を担っている「ジョインテックスカンパニー」

で構成されています。

私は元々「ジョインテックスカンパニー」の所属でしたが、カンパニー横断型のシステム部門が発足し、今はそこの所属となっています。

プラスが取り組むDX

プラスのDX戦略について

プラスのDX戦略について

現在、プラスでは全社的に DX のプロジェクトが進んでいます。これまでカンパニー制をとっていることから、各カンパニーにそれぞれシステム部門がありました。そして、基幹システムもそれぞれ持っていたので、各カンパニーが独自の文化を持ってデータ活用や管理をしていたのです。

けれども、このシステムが、サイロ化してしまっており、新しい機能を追加しようとすると、それぞれが開発を行わなければならないという状況でした。

そこで、今後世の中の急速な変化に対応していくためには、全社一丸となって、カンパニー間のシナジーを生み出さなければならないと考え、DX プロジェクトが発足しました。

プラスが目指す世界観とアジャイル開発

まず、全体のプロジェクトの計画立案が進められました。
そこで、プラスの目指す世界観については‥

  • お客様の求める価値に素早く対応できるような「アスリート体質」を手にいれ、競争優位性の確保と顧客満足をさらに向上させる

と定めました。

そして、それを実現するためのキーワードとして、「ローコストオペレーション」「フレキシビリティ」「アジリティ」の 3 つを追求すると決めたのです。

また、プラスの目指すべき世界観を実現するためには、「アジャイル開発が有効なのではないか」という考えに至りました。

プラスが目指す世界観

プラスが目指す世界観

そしてある時、上司から「新しいシステム部門でアジャイル開発を取り入れてみようと思ってるから、来月からそのチームに参加してみてよ」と話を受けて、参加することになりました。

アジャイル開発エンジニア勉強会画像26

誘われたときは「アジャイル開発‥?何だろう、初めて聞いた‥」状態でしたが、
参加して数週間後には
「アジャイル開発、楽しい!!」という状態になっていました。

アジャイル開発エンジニア勉強会画像27

PoC開始

PoC開始は、DXの世界観を実現する手段として「アジャイル開発が本当に適しているのか」を確かめるための期間となりました。今は3人ずつの3チームがあり、その中に1人ずつパートナー企業のテックリードの方が入っていただき、スクラムマスターも兼任してもらっています。

アジャイル開発エンジニア勉強会画像28

どんな感じで開発をしていたかというと…特別なことは一切していません。まさに基本にのっとって、スクラム手法からスタートしていました。

スクラム開発について

スクラム開発について

 

今は1週間スプリントで活動しています。

スクラム開発

基本的にリモートでの開発体制ですが、Slack等チャットツールを用いてのコミュニケーションを積極的にとるようにしています。スプリントレビューではデモを実施し説明しています。デモではステークホルダーに実際に機能を触ってもらっています。
バックログの管理は「Jira」、ドキュメントは「Confluence」や「Miro」を使ってクイックに作成し、サービス構築の前にはインセプションデッキの作成やユーザーストリートの作成を行っています。

アジャイル開発エンジニア勉強会画像30

アジャイルソフトウェア開発宣言にもある通り、アジャイル開発で価値とされているところを
いろいろな場面で理解することができたので、自分の中の考え方や業務の進め方、組織自体の雰囲気や文化なども変わってきたと感じました。

アジャイルソフトウェア開発宣言

アジャイルソフトウェア開発宣言

アジャイル開発で変わったこと

①「早く」「継続的に」があたりまえに

「早く」「継続的に」というキーワードは、チームで開発を進めていく中でも何度も出てくるようになりました。
従来は「最後までできてから依頼部門に見てもらう」ということが多かったのですが、「早く」「継続的に」というキーワードを意識しながら、「まずは小さく、でも動くものとして見せらせる単位で開発を進める」というのがアジャイル開発の肝だと気付かされました。

 

②「ありのまま伝える」重要性

スクラムの三本柱の1つに「透明性」がありますが、「ありのまま伝えること」が重要だと思います。開発の状況はPOもステークホルダーも見れるようになっていて、たとえゴールを達成できなくてもありのままを伝えていました。
異なる価値観を持ったメンバーが同じ方向を向きながら開発を進めるためにも、「インセプションデッキを作って共通認識を作る」というのは非常に有効で、さらにそれをPOやステークホルダーにも共有していたので、全員でサービスを作り上げているという感覚を味わえました。

 

③1人でやりきるのではなく、チームで乗り越える

私は今まで1人案件の業務も多かったので、アジャイル開発を始めた頃は技術的に詰まってしまった部分や、分からないことがあると、「自分1人で進めなくては…」と思っていました。
しかし、その不安を振り返りで共有すると、「チームとして出来ればいい」というフィードバックをもらい、それがとても印象に残っています。何か問題が起きると「チームとしての問題」と、捉えるようになり、それが非常に心地よく感じられます。
また、この考え方は、「業務の属人化」を解消に導く考え方だと思います。

 

④メンバー全員が主体性を持つ

ここまでコミュニケーションを多く取りながら開発をしたのは、はじめての経験でした。
モブプログラミングで開発をしていたので、コードの書き方や作業の方針に至るまで、かなり密にコミュニケーションを取ることになりました。
発言しやすい環境を作ることも大切で、密にコミュニケーションを取る分、信頼関係も重要になってきます。そのため振り返りでは感情も共有したり、自分の価値観を見せあうようなワークショップも行い、関係構築をしていました。大切なのは合意形成なので、まずは主体性を持って発言できるような場作りが大切だと感じました。

まとめ

POなど各役割の存在やスクラムイベントなど改めて基礎の重要性を現在進行形で実感しています。またアジャイル開発には密なコミュニケーションとメンバーそれぞれに主体性が求められます。

一方でアジャイルな文化の浸透は継続的な課題になると考えていますので、基礎を学びながらまずはやってみることが一番重要だと思います。

アジャイル開発エンジニア勉強会画像32

 

西田さん、ありがとうございました!

Q&Aコーナー

続いてQ&Aコーナーであがった質問を紹介します。

(Q)改善はデリバリーから…共感です。その際「これは気を付けたほうが良い」「これ気を付けないとまずい」というポイントがあればお聞きしたいです。

yigarashi:定量的な改善を示せると説得力があり変化のムーブメントを加速できると思います。また目指す世界観にもよりますが、ウォーターフォール的なプロダクト作りの中で開発チームがイテレーティブに活動するだけになってしまうと、アウトカムの改善に繋がりづらいので、ディスカバリーの改善に近づけているかは注意が必要だと思います。

 

(Q)エンジニア越境マジ大変...技術だけ見てたい...って人間はそもそもPdM向かないですかね

yigarashi:PdMになることとPdMのことを理解して働きかけることは別なので、自分がやりたいことと目指す組織の姿のバランスを考えて、自分がつらくない範囲で活動するのが大事だと思っています!

 

(Q)仮説検証は開発フェーズに入っても絶えず行うのでしょうか? それともビジネスデザイン・UXデザイン・仕様策定のフェーズの話でしょうか?

yigarashi:絶えず行っています。MVPを定義するという仕事がその他のフェーズになるのかなと思います。

 

(Q)認定スクラムPdM研修などの研修費用は高額な認識ですが、会社が補助する形だったのでしょうか?費用対効果を示すのが難しいなと思っています...

yigarashi:会社が補助してくれました。費用対効果は、はてなとして長くアジャイル開発をやっていきたい。ディスカバリー型をどうやっていくのかが課題だったため、会社として研修受講は歓迎の雰囲気がありました。

 

(Q)スプリントの撤廃において、デイリースクラムなど他のスクラムイベントは継続したのでしょうか??

yigarashi:継続しました。デイリースクラムは普通にやっているし、カンバンをリセットしたり、振り返りをしたりはやっています。

 

(Q)アジャイルという文化が比較的エンジニア寄りな文化と捉えています。PdMや企画職等の非エンジニアを巻き込むとなるとやはりそれなりの期間を必要としましたか?またその際工夫したことや苦労したことなどがありましたら知りたいです。

yigarashi:期間は大変必要です。自分が入社する前から、そのムーブメントはあったし、今も途上だと感じています。工夫は、粘り強さ。ひたすら発信、キーパーソンの巻き込み。アジャイルコーチや外部の有識者に依頼する。その人を中心にガッと推進する方法もあります。

 

(Q)アジャイル開発における生産性の可視化方法を聞きたい。 また、生産性向上のための施策でうまくいったものとそれがなぜうまくいったのかの分析結果を聞いてみたい。

yigarashi:現代の開発生産性指標としてはFour Keysが鉄板です。これを計測して改善できるならそれがベストです。国内ではFindy Team+というサービスがあり、弊社でも導入しています。自分のチームではFour Keysのなかの変更のリードタイムの改善のために即レビュールールを導入し、現在ではほとんどのPRが作成から24h以内にマージされています。

 

(Q)ディスカバリー側のスクラムでの具体的な作業内容を知りたいです。

yigarashi:仮説検証という大枠の中で、データ分析、ユーザーインタビュー、リーンキャンバスやカスタマージャーニーを用いた課題分析、ソリューション検討、仕様策定など多岐に渡ります。INSPIREDなどPdMに関する書籍も多くあるのでそちらを参照いただけると。

 

(Q)PdM=プロダクトマネージャーはPO=プロダクトオーナーと、どんな違いがあるのでしょうか?

yigarashi:POはスクラムで定義された役割で、PdMはより広くプロダクト作りのWhyやWhatにアプローチする役割という認識です。必ずしもアジャイルムーブメントに強く関わる期待がないPdMでも、アジャイルやスクラムに習熟することで良いことがある、というのが私の発表でした。

 

(Q)dodaにもお世話になってます!パーソルキャリアさんとパーソルプロセス&テクノロジーさんって完全に別会社なのですね、開発体制なんかは企業間を跨いだ横断的な仕組みなんてありますか?

岡部:特にはないのですが、ベトナム協業という意味では検討している状態です。

 

(Q)ブリッジSEが通訳、翻訳に入るイメージでしょうか。その場合にスクラムチームメンバーに自律意識が芽生えにくいと思うのですが、如何でしょう。

岡部:そこはご認識の通りです。ブリッジSEの方を通じてファクトと共に課題感を伝えるようにしています。

 

(Q)ベトナムメンバーのスキルアップに手こずっています。互いに不慣れな第二言語で話しているため、レクチャーしても伝わっているのか不安で、できれば自己学習を通して一定のスキルまでは自身で引き上げてもらいたいと期待しています。ただ、ベトナム語で書かれた技術ブログや本についての情報が日本側からは見つけづらく、サポートに苦戦しています。ノウハウなどありますでしょうか?

岡部:少しずれてしまいますが、スキルアップはどうやっても時間がかかるため、その部分はあきらめて、日本側で難易度や負債化した場合の影響、要件の込み入り具合がある程度より低いものになるように振り分けています。

 

(Q)オフショア開発でアジャイルを導入する際のむずかしい点とその解決策

岡部:オフショア開発を入れた直後に多くの問題が発生するので、気付けないor対策しないと技術負債が爆発的に増加します。
それらをくまなく課題検出・改善するスピードを上げられるようにしておくといいと思います。

 

(Q)オフショアとふりかえりするときのコツを教えてください!

岡部:リリースされて運用してからの流れが向こうに見えていないと、hotfixなど問題が問題に感じられないことがあると思います。 (最初に決めた期限を過度に重視してしまったり) 運用まで一緒にできることが理想だと思いますが難しいので、その部分がどうなっていてどういう課題があるのかが伝わるようにしたり、できるだけリリースの最後まで付き合ってもらってます。

 

(Q)オフショア側でスプリントレビューやレトロスペクティブを行ったでしょうか。ベトナム側でのレビューがどんな様子だったのか気になります。

岡部:ベトナム側ではスプリントレビューはやっていません。ベトナム側でやるのが難しい事情があった。レトロスペクティブはVSEに参加してもらっている。その方を通して、伝えてもらっています。

 

(Q)見積もりのお話、バッファについてなど参考になります。他にも危険!な注意ポイントはありますか?

岡部:納期は必ず守らないといけないという意識があると、スピード重視で作り、実際はスコープ調整できることもあるが、わりと乱暴な作りで出てきてしまい、手戻りが発生してしまうことがありました。品質を担保したいが、そこの認識齟齬があり、あとで困ることが起こったこともあります。品質なのか、スピードなのか優先順位をきちんと伝える必要があります。

 

(Q)フューチャーチームとコンポーネントチームの軋轢なんてありましたか?また、起こらないための特別な取り組みなんてありますでしょうか?

岡部:軋轢は幸いなかったです。受託で入っていただいてる方は、コンポーネントチームが主です。フューチャーチームの方は「なぜそこまでやる必要があるのか?」という軋轢が生まれるかもしれません。

 

(Q)日本側の属人的な探索テストで出たバグのfixをベトナムにさせると、知らんがな、となりモチベーション落ちませんでしたか?正式な機能改良としてのバックログとして渡せば大丈夫ですかね?

岡部:指摘時に「なんで?」が出ることはあります。ただ、丁寧に説明すれば向こうも納得してくれるのでモチベーションは保てています。
> 正式な機能改良としてのバックログとして渡せば大丈夫ですかね?
そういう形で渡すこともあります。丁寧な説明が大切です。

 

(Q)いまは完成度でいうとどの程度ですか?今後さらに目指している形ややってみたい取り組みなんてありますか?

岡部:製品の特性や全体のチーム構成がクオーターごとに変動しているということがあり、完成だと思っても都度再構成している、というところです。 直近では五十嵐さんの発表のようなボトルネックの遷移があり、まさしくDual Track Agileをうまく導入したいと思っています。

 

(Q)言語の違いによる齟齬がおきないように、ベトナム側に依頼を出す資料作成に時間がかかっています。 依頼の出し方で工夫したことがはありますでしょうか。

岡部:依頼内容自体はブリッジSEの方に最低限の資料と口頭で伝えた上で、ブリッジSEの方に資料を作ってもらい、それを簡単な要件定義書としてこちらでレビューしています。

 

(Q)プラスさんはじめまして!と思ったら文具しってる!家具も!IT企業ではない...?ですよね?アジャイル取り組みにいたったキッカケとか気になる。(このあと話されるかもだけど)

西田:文具も家具も知っていただいてるとのこと、ありがとうございます!IT企業ではないですね。 アジャイル開発取り組みに至ったきっかけは、やはり全社的に取り組むDXで最終的に目指すプラスの世界観において、アジャイルであることとの親和性を感じたからというのが一番大きいと思っています。

 

(Q)DXきっかけって、実はあまり多くないのかな(めずらしいのかな?)と思いました。DXって経営者ばかり大声で言うだけで、現場開発には響いてない感覚なので。プラスさんは開発現場からDX意識~アジャイル~って始まった感じです?

西田:上司が躍進力があり、巻き込み力もある方で、そしてアジャイル開発にも精通していたので、その方を中心に推進していました。開発メンバーからの発信でどんどん広がっていけばいいなと思っています。

 

(Q)スプリントレビューでステークホルダーを巻き込むのは難しくありませんでしたか?

西田:わりと最初から興味もって聞いてもらえていた。たしかに、一番最初はどうすればいいのか、戸惑いの空気はあった。デモを触ってもらうと、盛り上がってきて、一体感が生まれてきたと感じています。

 

(Q)アジャイル開発は楽しかったとのことですが、逆にウォーターフォールはどのあたりが、つまらなかったですか?

西田:つまらなかったことはないです(笑) どちらかというと、自分の性格上抱え込んでしまうことが多かったです。今までは「この人にこの案件をお願い」というタスク振りなので、詰まった時に相談相手がいませんでした。アジャイル開発だと、チームで振り返ってチームの問題として捉えます。モブプログラミングをしていたので、みんなで進められたことが楽しいと感じたところでした。

 

(Q)西田さんもしくはチームメンバーの方でアジャイル開発未経験だった方にとって、ウォーターフォール開発とのギャップはあったでしょうか?

西田:最初は作業の進め方にギャップがありました。動くものをまず作るを目指すというのがウォーターフォールと考え方が違って戸惑いました。基幹システムのリプレースなど、大きい案件は戸惑うことがありました。

 

(Q)チーム立上げ時には,外部コンサルタントにアジャイルコーチに入ってもらったのでしょうか。

西田:そうです。かなりお世話になりました。

 

(Q)アジャイル開発やってみて、何が一番大変と感じましたか?

西田:スピード感です。1日スプリントをお試しでやったときに、すごい疲れ(良い意味ですが)を感じました。速く継続的に良いものを届けるというスピード感が慣れるまで大変でした。モブプログラミングで話しながら進めているので、楽しい反面疲れることもあります。(10分休憩を入れてます)

 

(Q)スプリントプランニングを行うにあたり、どのような粒度の価値の洗い出しを行いましたか?また、事前に降りてくる要件から価値をどのように見出していたのかを知りたいです。

西田:最初にユーザーストーリーマッピングを行ったり、要件が概ね決まっているような案件ではもう先にざっくりとしたアーキテクチャを考えてしまって、そこからエピックを抽出してそれに伴うプロダクトバックログを出したりしてました。粒度は最初はざっくりと、ポイントが大きくなっても一旦は気にせず感覚で区切れそうなところを見つけてましたね。あとはスプリントプランニングでPOと相談しつつ調整していくという感じでした。 要件から価値を見出すのは、インセプションデッキを作成するときにどういう人が使うシステムなのかなどをチームで解像度を上げることで、提供できる価値は何か?というのを考える方に意識を持っていけたように思います。

 

(Q)西田さんへ 初めてのアジャイル開発で、進め方や専門用語など初めてのことが多かったと思いますがどのようにして理解しましたか?

西田:とにかく実践でした。最初チームに参画を打診された時に見たアジャイルについての概要資料だけでは、自分がその用語などを使ったり、ましてや他の人に説明したりというのは考えられませんでした。 やっていく中でチームメンバーと認識齟齬が起きないように用語が指すものは何かを擦り合わせたり、進め方も実際にやっていく中でそれをやる本質とはみたいなところとかが気になり出して学んでいったりしているうちに理解できるようになりました。

 

(Q)もともと内製開発が行われていて、最近アジャイルが導入されたのでしょうか?組織として新たに内製開発を行ったのであれば、新規メンバーを中途採用で増やすのが大変だと思いましたが、新規メンバーは中途採用ですか?異動でしたか?

西田:内製開発も一部ありましたが、基本はベンダーに依頼していました。 今は異動でメンバーを集めてチームを結成しています。 今後一緒にアジャイル開発するメンバー募集しています!笑

 

(Q)各社さんに、今時点でのアジャイル開発の完成度と、この先目指すもの、チャレンジしていることをお聞きしたいです!

yigarashi:自社サービスもあるし、パートナー企業とやっているものもあります。直面している課題は違いますが、一番進んでいるところでいえば、デリバリー領域でアジャイルをやるのは当然。ディスカバリー領域でもアジャイルの文化が浸透してきています。
この先はディスカバリー領域はまだ芽吹いているところなので成功体験がまだ掴み取れていません。デリバリーからも越境して、協力しあうこともできれば良いなと思っています。

岡部:製品の性格上、クオーターごとに方向性や重視するユーザー層が変わる。前のクオーターの状態だと完成しているが、現在また新たな課題が生まれています。
今後はデュアルトラックアジャイルができたら良いなと思っています。

西田:アジャイル組織として立ち上がったばかりです。基本的な意識は成熟してきています。自走できるようになるのがこれからの課題。チームも拡大していければ良いなと思っています。

 

(Q)アジャイル開発に向き、不向きのシステムがあり得ると思います。どのような案件に適用すべきかチーム立上げ前にそのような議論がありましたでしょうか。

yigarashi:アジャイル開発を推進する上で「なぜアジャイル開発なのか」を説明することはとても重要で、私の環境では頻繁に議論されています。一般には「不確実性」が重要な変数で、実現可能性やユーザーの反応が予測できない場合に、積極的に採用すべきだという議論になっています。

岡部:プロダクト開発のような、開発が無期限になり得るものは向いていると思います。 立ち上げ時に参画していなかったのですが、自分たちの開発スピードがどの程度出るのか初めてだからわからない、であったり、まずはリリースしてフィードバックする必要がある、というような条件があれば適合するので採用されやすいと思います。

西田:チーム立ち上げ当初はアジャイル開発始めたてで、なぜアジャイル開発なのか?今回のような基幹システムの開発もアジャイル開発でやるべきなのか?みたいな議論は確かに少しありました。 アジャイル開発を体感していく中で、不確実な価値を追求していくものにはとても向いているかなと、逆にもうしっかりと要件も設計も出来上がっていてガチガチに決められたものを作るのであればウォーターフォールの方が向いてることもあると思います。今回は基幹システムといえど、急速に変化していく時代に対応できる基幹システムを目指しているので、アジャイル開発を推進して正解だったと思っています。

 

(Q)アジャイルコーチって、居てくれて何が一番良かったですか?

yigarashi:その名の通りアジャイル推進のプロで、経験と知識が豊富なのはもちろん、それをチームに展開するテクニックもたくさん持っています。スピード感や安心感が全く違います。

岡部:専任のアジャイルコーチがいる状態で開発した経験はないのですが、そういう役割がいることにより、さまざまな知識を使いうまく状況を可視化してPO,開発チームの間で納得感を持たせながらプロダクト開発上の意思決定を進められる状態にできる点が大きいメリットだと思います。

西田:右も左もわからない中でまずは実践しながら基礎を教えていただいたこと、そして絶妙にガードレールを敷いていただきながらもプラスにとっての最良の方法を一緒に模索していただいていることです。豊富な経験と知識でいつも導いてもらっていて、やはり途中でこれで本当にいいのか?と不安になった時もとても頼りになる存在です。

 

(Q)工程管理や工数管理に使っているツール(Backlog、Redmine、Trello、Asana等)を教えてもらいたいです。 これまでに使ってきて良かったもの、悪かったもの、その評価に至った理由などが聞けるとありがたいです。

yigarashi:デイリーで見ているカンバンにはAsanaを使っている。それなりの規模のデュアルトラックアジャイルでは、全職種が見る場所、エンジニアだけが見る場所などうまく整理して、情報の流量を制御してあげるのが大事になる印象で、Asanaは複数カンバンの上でアイテムを操作する能力に長けているのでうまくハマっている。

岡部:ZenHub。GitHubのプラグインを使っています。見通しがしづらいという課題点はあります。Jiraは機能的な不足はほとんどなかったです。今Jiraに移行しようとしています。

西田:Jiraを使っています。初めて使ったので、良い悪いは分からないですが、使いやすいです。今後も色々なツールは試してみたいと思っています。

 

(Q)3企業さんの、アジャイル推進「最大のピンチ」と「最大の幸福」を語ってもらいたいですw

yigarashi:最大のピンチはあまり思いつかないです。一番怖いのは、何も起こらないこと。半期組織変わってないみたいなことが起こると怖い。
最大の幸福は、アジャイル開発の楽しさ。コミュニケーション量も増えるし、成果物があがってくるのも速いのでアジャイル楽しいです。

岡部:最大のピンチは、プロダクトオーナーからアジャイルの意味を問われたときです。
最大の幸福は、沢山あります。フィードバックもらえたり、負債がたまっていてもどんどん減っていくし、チームの信頼度があがっていく。もろもろを含めて楽しいです。

西田:最大のピンチはまだないです。今後はアジャイル開発は楽しいし、プラスの世界観にマッチしていると思っているので、それが崩れるのがこわい。
最大の幸福は、アジャイル開発をしることができ、デビューできたこと。チームメンバーに出会えたことも幸福でした。

 

(Q)3社様にききたい!いまさらウォーターフォール開発って、、、できますか?(やりたいですか?)

yigarashi:初めから要件が明らかでユーザーの行動から学ぶ必要がなければ、ウォーターフォール的に開発するほうが適していることもあるかと思います。要件定義など大きな枠組みはウォーターフォール的に行いつつ開発は反復的に行うなどハイブリッドなやり方も考えられ、腫れ物のように忌避するものではないという印象です。

西田:要件がしっかりと決まっていて普遍なものを作るのであれば、最初にガッと設計して、担当も割り振ってといったウォーターフォール開発もいいと思います。個人的にはその開発の進め方のほうがいろいろ決まってて安心で心地いい自分も別の側面では存在している気はしています。笑 でも楽しいと思えたのはやはりアジャイル開発だったので、まだまだアジャイル開発をやっていきたいなという気持ちはあります。ウォーターフォール開発のいいところもアジャイル開発のいいところも、うまく場面場面で取り入れて最高の開発体験を作っていけたらいいなと思います。

 

(Q)プランニングポーカーにすごく時間が掛かっていますが、皆さんどのくらい時間をかけているのでしょうか?チケット全てを対象にしているのでしょうか?

yigarashi:週に2時間ほどをバックログの整理や見積もりなどのリファインメントに使っています。取り扱うのは優先度が高く直近着手する可能性が高いチケットに限ることが多いです。

西田:1週間スプリントの中で2時間プランニングの時間として、バックログの整理と見積もりを行っています。大体向こう2・3スプリントで消化する分くらいのバックログに対しては、チームでどんな作業が発生しそうかを話しつつ比較的しっかりめに見積もりをしています。それ以外のものは後でポイントを変える前提でざっくりと見積もっています。

 

Q&Aコーナーは以上です。

次回のイベントレポートもお楽しみに♪