来年も Cookpad TechConf やります

こんにちは! @yoshiori です。

今年年明けに Cookpad TechConf 2016 という、クックパッドのエンジニア、デザイナーがサービスづくりの過程で得た技術的知見や経験をみなさんに発表させていただくイベントを開催させていただきました。
こういったイベントは続けてナンボ!!! ってことで来年もやります!!!
前回は会場キャパシティ 250 人の所、1000 人以上のお申込みを頂きました。
今回はその反省も含めレイアウトを変更し会場キャパシティ 350 人用意しました!!!

今年もエンジニア組織的な話から海外展開で得た知見、基盤技術、サービス開発、デザイン、機械学習など多種多様なコンテンツを用意していますので、知っている分野は更に知見が深まり、知らない分野のこともザックリ知れる。そんな一日にしたいと思っています。

一同お待ちしています! みなさま奮ってご参加ください!

Cookpad TechConf 2017

タイムテーブル

タイトル 発表者
Cookpad under a microscope 成田 一生
Deliver apps to global audience 滝口 健太郎
Building infrastructure for our global service sorah
クックパッドで取り組めるデザイン(仮) 若月 啓聡
モバイルアプリのA/Bテスト基盤 加藤 龍
チームでサービス開発をするための取り組み 丸山 亮
サービスのプロトタイピング時に心がけていること(仮) 須藤 耕平
フェージングのすゝめ 〜サービスの大規模リニューアルの話〜(仮) 京和 崇行
快適なサービス開発を支える技術 国分 崇志
Real World Machine Learning 染谷 悠一郎
行動ログでプロダクトを改善するには 兼山 元太
Cookpad awakens 庄司 嘉織

お申込み

お申込みはコチラ から

"使える"プロトタイプ主導の開発プロセス

検索事業部の須藤です。 クックパッドの検索周りのサービス開発を担当しています。

はじめに

最近ではプロトタイピングツールも充実し、コードを書かなくとも動的なモックアップが作れるようになるなど、思いついたアイデアをより早く、より最終的なアウトプットに近い形でメンバーに共有することができるようになったと感じています。

また、実際にコードを書いてユーザーに公開するための効率的な手法や、公開後の検証方法についても様々なツールや知見が共有されており、より精度の高い定量評価ができるようにもなってきたかと思います。

一方、これらの効率化が進んでも、実際に打った施策の数を増やせたか、最終的にサービスインできたプロダクトの数が増えたかというと、そこまで実感がありません。

その理由のひとつは、思いついたアイデアを具体化して作り始めるまでの初期段階と、実際にそのプロダクトを(テスト目的であっても)公開に耐えうる完成度に持っていくまでの間には、相変わらず高いハードルがあるからだと思います。

f:id:sudokohey:20161017095937p:plain

この「間」の部分にある、発想の仕方や開発の進め方こそが所謂「サービス開発」の勘所だと思うのですが、この段階でのプロダクトの作り込みに関しての具体的な知見は、あまり目にすることがありません。

もっとも、提供するサービスの種類や成熟度、作っている組織の規模やカルチャーによって、その扱いは千差万別で、なかなか共有可能なメソッドにならないことがその理由だと思うのですが、今回は敢えてその部分にスポットを当てて、プロダクトの完成度を効率良く高めるために実践している、"使える"プロトタイプ主導の開発プロセスについて書いてみようと思います。

本当にイケてるアイデアを見極める

実際の生活の中でユーザーと同じ立場になって使用感を確かめることができないプロトタイプは、その形態がどうであれ「良さそう」以上の評価はできません。 また、経験上、その段階での良さそうなアイデアの殆どは、作り込んでいく過程のどこかで「ダメそう」に変わります。

効率良くプロダクトの完成度を高めるためには、思いついたアイデアが、本腰を入れて作り込んでいくに値するものかどうかを、できるだけ早期に見極める必要があります。

実際に"使える"プロトタイプを作る

そのためには、プロトタイプと言えども、実際に「使える」ものをつくることが大事です。 これは、webサービスであれば、一般に公開されている本サイトと同じ体験ができるものをつくるということであり、例えば、

  • 思いついたキーワードで自由に検索ができる
  • リアルタイムに様々な情報が更新される
  • 思考が途切れずに操作するに足りる実行速度である

といった要件を満たすものでなければ、正確な見極めができません。*1

1日で作れるものをつくる

そこまでのものをつくるとなると、企画を出して、仕様を詰めて、デザイナーやエンジニアを集めてがっつり開発するのと変わらないのでは?と思うかもしれません。 また、プロトタイプである以上、プロダクションでの公開を前提とした開発と同等に時間がかかっていては本末転倒です。

そこで、1日で作れるものをつくるという制約を自分の中に持つようにしています。

アイデア段階での構想が大きなプロダクトであっても、体験を構成する要素を機能単位に分解し、その中から、そのコンセプトを成立させるために欠かせない機能や遷移を抜き出します。 まずはその部分にフォーカスし、それがユーザーのサービス内での行動動線の中でどのように機能するのかを確かめるために必要な分だけの実装をします。

スピード最優先でつくる

実装と言っても、書いているのは簡単なコードばかりです。 例えば「食べ方提案」と呼んでいる以下のようなUIを持った機能を例に挙げると、まず簡単なスクリプトを書いて、食べ方のデータを用意します。本来であれば、DBにテーブルを作ってそのデータをインポートして、さらにデータの更新方法を準備して...と進むはずですが、それをやっている時間すら惜しいので、UIに合った使いやすい形にデータを整形して出力し、ハードコードして済ませます。

コンセプトを確かめる程度であればこれで十分です。

f:id:sudokohey:20161017100328p:plain:w300
※開発中のプロトタイプの画面

また、ぱっと見は完成形と変わらない新機能が日々追加されていく環境を用意することは、いくつかの面でメリットがあります。

ちなみにアプリの場合は?

chankoのような機能もなく、プロダクションのAPIに手を入れる必要があること、また、デプロイゲートなどを使った確認のコストも高いと感じることから、現時点ではアプリ向けの機能のプロトタイピングもweb上で行うようにしています(web版で公開予定のないものであっても)。

f:id:sudokohey:20161017100648p:plain:w300f:id:sudokohey:20161017100704p:plain:w300
※chanokoを利用してweb上に実装したアプリ向けのプロトタイプの画面。(web版での公開予定は今所無い)

もちろんアプリならではの表現などは再現し辛いため、コアになる機能や遷移をまずweb上に用意し、細かなインタラクションについてはデザイナーが部分的に動的なモックを作るなどし、並行して検討します。

初期段階で必要以上に議論しない

ちょっと話が逸れますが、クックパッドでは「動くものを前に議論する」という言葉が時々出てきます。 これは裏返すと、実際に「使える」状態にないものに対してあれこれ言ってもあまり意味がないという事です。 ですので、余計なインプットを入れずに、使えるプロトタイプとして最初にデプロイするまでは、直感を信じて作り切るようにします。

ちなみに、ここで全くイケてないものを作ってしまった場合(結構あります...)のダメージを最小化するためにも、1日でつくれるものを意識しています。

基盤技術になりそうなものは、別ラインで開発する

さて、上記のようなプロトタイピングを繰り返していると、

  • あるレシピからその料理名を簡単に抽出したい
  • あるレシピの主材料が何かを判定したい

といったような具体的な要件が明確になってくる事があります。

例えば「簡単!うまうまゴマいんげん」というレシピがあったときに、人間が見ればこれが「いんげんの胡麻和え」であることは一目瞭然なのですが、機械的に正確にこれを判定しようとすると結構難しかったりするので、その分野の解決が得意なエンジニアに別ラインで開発を依頼します。

こういった技術開発を依頼される側からすると、開発する技術の具体的な使われ方がわからないため、正解の状態をイメージできなかったり、どの程度の精度のものを仕上げれば良いのかが分からず、仕様を定めるのに時間がかかるケースがあると思うのですが、使えるプロトタイプがそこにあるため、比較的スムーズに話がすすみます。

また、仕様通りに作るよりも、プロダクトに貢献できるイメージが持てると、気持ち的にだいぶ違います。先程いくつかのメリットと書きましたが、その一つがこれに当たります。

いつのまにかまともなコードに!?

捨てる前提のコードでプルリクエストを送っていると、「それ、他のところでも使えそうそうだからメソッド用意しといた」みたいな感じで、部分的な開発を肩代わりしてくれる神様のようなエンジニアが出てきたりします。依頼する前に解決するという奇跡のコラボレーションです。

これを繰り返していくと、いつの間にかハリボテ(?)のコードが、まともなコードになってたりします。これもメリットです。

実際に使ってみて評価する

さて、これが最も大事なことですが、使えるプロトタイプが用意できたら、これを実際の生活の中で使って評価します。平日に料理をするのはなかなか難しいのですが、毎日小さく開発していくと、週末には5つのアップデートが載っています。これを週末に使い倒します。

作ったプロトタイプは、次にあげるような不意に訪れるピンチを救ってくれるものになっているでしょうか?「良さそう」だと思ったアイデアが単なる妄想に過ぎなかった場合は、ポケットの中のプロトタイプがそれを教えてくれます。

  • 小松菜で何か作ろうと思って買いに行ったら、台風による日照不足の影響で、1束250円もした。隣には白菜が128円で積まれていた。さてどうする?*2

  • 29の日(肉の日)の特売目当てでお肉を買いに行ったら、時間が遅かったためにほとんど売り切れていた。残っていたのは普段あまり使わない手羽先だけだった。さてどうする?

  • 夕飯のおかずは冷凍してある鶏肉で...と考えていたが、いざ料理を始めると、冷凍庫の中には、あるはずの鶏肉が無かった(!)。かわりにすっかりその存在を忘れていた、鱈の切り身が見つかった。さてどうする?

このようなイレギュラーが現実では沢山おこります。そしてこれらは、机の前で開発しているときには想像できません。誰かが事前に用意したペルソナにはもっとざっくりとした、ありがちなシナリオしか設定されていません。

さてどうする?

これを解決するために、"使える"プロトタイプ主導の開発プロセスを実践しています。

誰がこの役割を担うのか?

このサイクルを一人で回すには、様々なスキルが要求されます。

  • 周辺にある実用段階の技術を幅広く理解する
  • それフル活用して、現時点で実現可能かつ斬新な企画をいくつもひねり出す
  • コンセプトを体現するシンプルなインターフェースをデザインする
  • 実際にコードを書いて、1歩先の姿を作り続ける

こう書くととてもムズカシイことのように見えますが、クックパッドには、これを実践するデザイナーやエンジニアがちらほらいます。新卒社員の中にもいたりします。

もしこの記事を読んで「自分にぴったりだ!」と感じた方がいらっしゃいましたら、ぜひこの 役割をお願いしたいと思っておりますので、ご応募お待ちしております!

*1:クックパッドでは、行単位でレプリケーションされた開発用のデータベースに接続して開発できるようになっていること、また、chankoを利用してプロダクションのコードに影響のない形でプロトタイプをそのままプロダクションに載せることができるようになっているため、この要件を満たすとは比較的容易です。

*2:先々週にあった自分の実体験です

ペンとふせんで!スマホUIのアイデアプロトタイピング

f:id:transit_kix:20161011214557p:plain 検索事業部のデザイナー倉光です。

今回は、開発現場でアイデア発散フェーズにやっていることの一例を紹介したいと思います。UIデザインの手法として比較的知名度は高く、デザイナー以外でも学びたいという要望も多い「ペーパープロトタイピング」についてです。

前提として

プロトタイピングにはフェーズと目的に応じて 様々な手法がありますが、今回は「小規模チームでアイデアをぽんぽん出し、伝え合うためのプロトタイピング」の話です。ユーザーに実際に評価してもらうためのプロトタイプの作り方についてはこの記事では割愛させていただきます。

また非デザイナーの方は「いやいや、デザイナーじゃないと画面なんてうまく書けないよ…」と躊躇してしまうかもしれませんが、本記事では社内のディレクター/エンジニア/インターン生が書いた成果物も掲載していますので、そちらも参考になると思います。


目次


1.ペーパープロトタイピング(紙実装)とは

「プロダクトをこんなかたちにしたい」という画面案を紙に書き、それを成果物として利用/評価/改善をすることを指します。私は個人的に「紙実装」と呼んでいます。コードを用いた本実装との対比ですが、小さく価値検証するための実装方法の一つであるという捉え方をしています。

どんな時に有効?

主に開発初期の工程で使われます。以下のような場面です。

  • アプリの新機能について構想していて、自分の頭の中にある画面の関係性を整理したい時
  • 複数人で議論していて、その場でざっくりと画面案の方針を決めてしまいたい時
  • チームメンバーへ、自分のアイデアを伝える時

なぜこれをやるか?

正解のわからないサービス開発においては、初期に1つでも多くのアイデアを発散させてからデザイン→実装へと収束していくことが最も近道であると考えています。また、アイデア発散の際には早く具現化することで「果たして実現性のありそうなアイデアかどうか」の判断ができるからです。


2.実施方法

f:id:transit_kix:20161011214545p:plain

まずはこちらを準備しましょう。手元で揃う道具で構いません。(ちなみに実際に使っている道具名はこちらです*1 。)スマートフォンは紙を撮影したり、プロトタイピングツールを動作させるために利用します。

2-1.かんがえる

画面の設計図を書くことに関しては絵の上手い下手はありません。画力に自信がないあなたも、まずは手書きのスケッチをオススメします。

PCを開く前に、まずはペンを持とう

ツールの習熟度に振り回されずに、アイデアを生み出すことができます。また、いきなりツールを触ることの弊害として、そのツールの機能で出来ることしか試さなくなってしまうことが挙げられます。サービスに載せたい情報が曖昧なままにツールを触りだすと、早くキーカラーを決めたくなったり、それっぽい高品質画像を素材サイトから探す方に熱心になってしまうという罠にも気をつけなければいけません。

頭の中の整理をする

そもそも、体験を考慮した遷移設計ってどう考えたらいいの?…そんな時は画面を書く前に頭の中を整理します。もし作る画面が1画面のみだったとしてでも、あなたがもっとユーザーのことを考えてみたいと思ったならばユーザーがその日アプリを起動するきっかけと、最後に何をしたら満足してアプリを閉じることになるか…その一連の流れをコピー用紙に矢印や図を使ってスケッチしてみましょう。

f:id:transit_kix:20161011215346p:plain [例]アプリ「みんなのお弁当」のSNSシェアページをデザインする前に書いたもの

書き出してみると、デザインするのはSNSシェアページの一画面のみであっても、シェア先で表示するカードのデザインや、それを見た人がどういった経路を辿るのかというのがだんだん見えてきますね。もう少し厳密に体験を定義したい場合は、ユーザーストーリーを書き出します。(詳しくは 「インターンシップ「サービス開発演習」の舞台裏」 の回にて)

2-2.描く

長方形のふせんを用意します。縦向きにしましょう。 スマホっぽい比率の紙になりました。

f:id:transit_kix:20161011214557p:plain

今から作りたいと思っている画面を書いてみましょう。スクロールするような長い画面は、2枚目、3枚目のふせんを更に下につなげていきます。

慣れないうちはペンを使い分けなくても良いです。使い分けたい場合は、サインペン(太)はボタンの境界線や目立たせたい見出しに、サインペン(細)は注釈や説明文などに利用します。

f:id:transit_kix:20161011214638p:plain ユーザーが実際に目にするであろうテキストを配置しよう

本当に有効なアイデアかどうかを検証するには可能な限り完成予想に忠実にしてあげましょう。「ここにテキストが入ります」「ああああ」「hogehoge」などの曖昧なテキストはやめましょう。

オーバーレイするUIパーツは別のふせんで

サイドメニューや部分スクロールするUI、ダイアログは違う色の小さなふせんで上から貼ると、いろんな画面で使い回し可能です。後述する「手動実演」の時にも、手軽に画面状態を変えられます。

どんどん捨てる

いくつかの案で悩んでいたら、上から別案を張り付けることもできます。書き損じたら、使える部分だけ残してハサミで切り取っても可です。とにかく躊躇せず、切り刻んでください。

実際に画面に置く部品の書き方についてはfladdictさんの 「ペーパープロトタイピング入門 – 第4回 見やすいペーパープロトの描き方」がわかりやすくまとまっていると思います。

2-3.つなぐ

ひとまず1画面ができたら、その画面の中にあるボタンを押したら進む次の画面など、ユーザーストーリーに登場する画面の集合体を作りましょう。作業中に考慮漏れに気づき、新しい画面が増えていくこともあります。プロダクトの全貌が明らかになっていくイメージです。

ちなみにふせんを壁に貼りながら、関係性に沿って配置&前後の画面を線で繋いでいくと、簡易遷移図が出来上がります。

f:id:transit_kix:20161011215349p:plain

2-4.さわってみる

出来上がった画面を、今度はユーザーの行動に沿って動かしてみましょう。

手動実演

上の図は、iOSウィジェット機能を活かしたアイデアを手動で動かしている動画です。「ここを押したら、画面がシュッと移動して、こうなります」…このように、手でふせんを入れ替えながら実演してみせるのも良いでしょう。施策相談中にそのままプロトタイピングが始まっちゃう時には、割と頻繁に見かける光景です。

f:id:transit_kix:20161011214650p:plain

実機にプロトタイプを入れて、ユーザーと同じ環境下で触ってみる

出来上がった画面は撮影して各種プロトタイピングツール(Prott/Invision/Flinto for macなど)に転送しリンクを設定すれば、「操作することのできる試作品」にすることができます。昼間に作ったプロトタイプを帰宅途中のスーパーで開き、食材を探しながら歩き回ってみたりしたこともありましたが、デスクにいる時と全く受ける印象が違います。

実際に操作ができるようになることで格段にアイデアの解像度はあがり、様々な課題が可視化されます。実際「最高かよ…」と思ってたアイデアが具現化したら全然イマイチだったみたいなことは日常茶飯事なので「紙実装のうちにわかって良かったですね!」ということで次の策を打ちましょう。


3.現場でどう活かすか

使われ方

アイデアのプレゼン/ミーティングの成果物/仕様概要/アイデアの自己検証…として利用されます。ちなみに紙実装はそれ単体の出来で評価されることはありません。どういったユーザーストーリーでその画面を操作していくのかを同時に定義しています。

周囲への共有方法

f:id:transit_kix:20161011215912p:plain 最終的にはGitHub上の関連Issueに、情報を貼りつけます(プロトタイピングツールのシェアURLも)。

f:id:transit_kix:20161011224717g:plain 紙実装である程度の方向性を確認した後、これを元にデザイナーがグラフィックやトランジションを考慮した設計に移行していきます。

紙の保管方法

f:id:transit_kix:20161011214620p:plain ふせん一式は重ねることでコンパクトに保存することができます。またA4のコピー用紙に並べて貼ることで、一覧性を保ったまま保存することもできます。ただしあくまで中間成果物なので、Issueに貼った後は長期間実物を保管することはあまりありません。


4.開発に取り入れた影響

f:id:transit_kix:20161011214654p:plain

いろんなUXデザインの手法をクックパッドの現場流にアレンジして個人的にやっていた紙実装ですが、数ヶ月前に社内ブログで紹介したところディレクターを中心に反響があり、その後実際にどんな変化があったのかについて触れます。

(余談ですが画面プロトタイピングにおけるふせんの活用については、海外では電子書籍も出ています。少し利用方法は異なりますが( *2 )。)

再構成がしやすいので、開発へ移行するまでのスピードがより早く

画面同士の関係性を保ちながら壁に貼れたり、その場で別案を上から重ねたり…といった取り回しがしやすいことが何よりアイデアを考えることに集中できます。短時間で大量のアイデアを具現化し、その場で「それいいね!」と議論しながらアイデアを拡張する際にはおすすめです。

スマートフォンのUIアイデアを書き込む用紙としては、ペーパープロトタイピングのための専用ノートパッドや印刷して使えるテンプレートPDFなどがあります。社内デザイナーも各自が様々なツールを試していましたが、アイデア発散フェーズではこの方法が最も作業自由度が高く、コラボレーション性があるという声がありました。

デバイスのサイズ感を意識したアイデアが出せるようになった

スマホに似たサイズの紙にアイデアを書くことで、自然とデバイス実寸が考慮されたアイデアを考えやすくなりました。各種PCに入っているソフトウェアの図形ツールを駆使した画面案を見かけることがなくなった点は個人的に嬉しく思っています。(頑張って作ってくれたところ申し訳ないなとも思うのですが…これらは往々にしてディスプレイ上で拡大された状態で作成されているので、入りきれない量のテキストが極小サイズで画面に配置されていたりするのが悩みの種でした)。

詳細の説明なしで、やりたいことが伝わる

これは アラビア語版クックパッド を開発しているレバノン拠点スタッフ(非デザイナー)が作ったプロトタイプの一画面です。レシピ検索結果画面のアイデアスケッチを表しています。残念ながら私はアラビア語は全く読めないのですが、この画面を含む一連のプロトタイプを触ってみることで、彼がどんな機能を作ろうとしているのかが自然と理解できました。リモート開発や言語の壁がある環境においても、いち早く動くものを見せることは意思疎通のために有効だと考えています。


まとめ

最後に、紙実装のメリット / デメリットについてまとめておきます。 f:id:transit_kix:20161011214707p:plain

注意点は以下です。

サイズ感については、必ず実機で検証すること

手に入りやすいふせんですが、厳密に言うとスマートフォンとはサイズ/アスペクト比が異なります。ボタンに実機で問題ないタップ領域が確保されているか?などは、別途本番デザインの際に検証してください。

実装しちゃったほうが早いこともある

何を確かめるためにプロトタイピングするかによっては、実装に着手したほうが早く良い知見が得られることもあります。*3「手段が目的化する」ことは本末転倒ですので、場合に応じて使い分けてください。

…いかがでしたでしょうか?議論を加速し、皆でサービスの在るべき形を素早く生み出していくための1つの手法が紙実装です。デザイナーではない人が、または開発者ではない社内のスタッフが、もっと気軽に自分たちのサービスについてデザインを議論できるようになることで、よりサービスの開発速度を加速させていきたいと思います。

この他のデザイナーの取り組み事例は、こちらのデザイン記事一覧にてご覧ください。 クックパッドでは「プロダクトを率先して、具現化していきたい!」というデザイナーを募集中です。

*1:私は「アスクル 貼ってはがせるオフィスのノート 75x127mm / 38x 50 mm」「パイロット フリクションボールペン(黒 / 0.5)」「ぺんてる水性サインペン(黒)」を使用しています

*2:「The $1 Prototype: Lean Mobile UX Design and Rapid Innovation for Material Design, iOS8, and RWD」 活用方法などの詳細は異なりますが、ふせんをスマートフォンに見立てるという点では同じです。洋書ですが、 「日本語解説版」 はアジャイルUCD研究会が公開しています。

*3:例えば、実際のコンテンツ情報(240万品のレシピデータ、ユーザープロフィール、その人が興味のあるキーワードなど)をUIに反映しないと本当に良い体験が提案されるかどうかがわからない画面は、まずはstaging環境でHTMLプロトタイプを作成し、検討した上でネイティヴ化のためのUIデザイン/API準備を行なっています。