トレタ開発者ブログ

飲食店向け予約/顧客台帳サービス「トレタ」、モバイルオーダー「トレタO/X」などを運営するトレタの開発メンバーによるブログです。

UX Days Tokyo2017に参加しました

トレタデザイン部の佐野 彩です。

先日行われたUX Days Tokyo2017というイベントに参加しました。 ニュースを流し読みするだけでは得られない、デザイナーの視点からの最新情報にまとめて触れることができる3日間でした。

2016年に起きた数々の事件が影響してか、UXというバズワードのみで捉えずに、心理学やモラルまでも踏まえた深みのあるセッションが多かったのが印象的でした。 それはもはやUXデザインがバズワードではなくなり常識になったことを示すのかもしれません。 とにかく1日でものすごい情報量に触れることができました。

まずは最初にカンファレンスの報告からいきたいと思います。

1. 計測のさらに先を読む(エリカ・ホール)

人間は完璧な存在ではありません。 データドリブンが良しとされがちな開発の現場で、デザイナーは数字に意味を見出す場合に気をつけるべきはどんなことかを問いかける発表でした。

カンボジアの国民病 貧血を改善した事例

データは物語があって初めて意味をなす、という話。

● 貧血を直すのには鉄分を摂取しなくてはいけないが、ただの治療用鉄石を配るだけでは全く状況が改善されなかった。 ● 人々の生活を観察して馴染みのある形に改善。製品の形にストーリーを加えて説明、やっと使ってもらえるものになった。

データは物語があって初めて意味をなす、というサービス開発にも活かせるエピソードですね。

定量と定性の罠

定量だけでは真実が見えない、定性だけでも真実が見えないという話も興味深かったです。

● 人間の合理的な理解能力には限界があり、人間の脳にはまず自分を考えてしまうというトラップがあるので、気分や偏見などのパターンに勝手に当てはめて数字を見てしまうのが定量の限界 ● 定性の限界はインタビュアーや観察者に依存してしまうこと。 また、簡単にできることを正しいと思いこみがち、大抵グラフにして満足して終わりになってしまう、という指摘も。

人間は不完全であり、それを認識するには脳の特性を知り、偏見にとらわれないで良い質問を繰り返し、クリティカルシンキングをすることが大事だということでした。

2. AI時代の倫理(ケニー・ボウルズ)

サービスを成長させるとなると必ず社会的責任がセットになり、企業側の倫理が問題になります。 去年だけでも、AI(人工知能)がいくら便利とはいえ、設計者が倫理についてルールを持たないと直接的なマイナスの影響を社会に及ぼす例がいくつも示されました。

2016年の例

  • マイクロソフトがTwitterアカウントとして運営していた人工知能のTay(差別発言)
  • カメラアプリの皮膚色変更スタンプ(人種差別的)
  • Facebookのお祝い機能(悲しい記憶に結びつくものをお祝いで出してしまう)
  • 配車サービスのUberやLyft(乗車拒否・差別)

技術は中立ではない

現在の日本に暮らしているとあまりデザイナーが倫理規範はどうあるべきかを議論する光景は目にしませんが、 モノにインターネットや人工知能が実装され、デザイナーが体験設計に関係する場面が増え、そこには人命も関わると認識されていくにつれ、日本でも議論が活発化するのではないでしょうか。

3. フリクション(ステファン・アンダーソン)

フリクションとは衝突・摩擦、という意味です。 ユーザービリティが悪いことで生じる摩擦は絶対悪なので無くしましょう、と語られることが多いですが、 プロダクトにおいて摩擦や衝突が起きるシチュエーションについて多様なコンテキストを踏まえて深堀りしましょうというセッションでした。6つのフリクションのうち、興味深いと感じたものを数点挙げてみます。

内省的フリクション

  • 表面化していないフリクション。支払いステップの最中にパスワードが必要になりそこからパスワードのリセットプロセスに入り・・・など。

境界フリクション

  • デバイス間の断絶による摩擦のこと。様々な改善例があるが、テレビの画面をハンドジェスチャーでキャプチャしてSNSにシェアするアイデアが面白かったです。
  • この改善にはExperience mapなどにデバイスのタッチポイントを記入することが助けになります。

学習的フリクション

  • 意図的なフリクション。摩擦があることで理解が向上したり損害の防止になるもの。
  • ゲームアプリなどにおいては学習が楽しい体験ということも言え、課題を乗り越える楽しさをデザインするのがゲームデザインとも言える。
  • どうしても困難な保険商品を選ぶ場合でも、困難だということを学ぶことで最善と思える選択をすることはできる。

4. 正しいMVPと顧客の学習(メリッサ・ペリ)

スピーカーが報告していたように、LeanUXを実践しようとするときに一番難しいのがMVPをどう定義するかということだと思います。 私も同業他社の方と話していて「MVPは無理だ」「とにかく出すことが重要だ」という両極端な考えをよく聞いた覚えがあります。

ここでのMVP定義とは

  • ベンダーとユーザーに最大のリターンがあるものをMVPと呼ぶ

となると、お客さんの本当に必要としていることを学習する必要があるし、本当に乗り超える問題があるのかを学習し、実験してそれを明らかにしなくてはいけないということを様々な例から学ぶことができました。

上手くいった例

  • HiFlyの例。航空会社が路線のニーズがあるか実験するときに使う乗り入れ航空機を出す会社。(事業と実験そのものがMVPになっている)
  • airBnBの例。良い写真がないせいでユーザーから申し込みが来ないとわかっていたので、カメラマンを雇う代わりに自分で良いカメラを買って写真を撮り乗せた。 などなど

必要とされているかをまず実験し、上手くいったらスケールさせる方法だと認識すると、チームの中でも意識が統一できそうだなと思いました!

5. 対話型UIの設計(ジャイルズ・コルボーン)

次世代インターフェイスとしてChatBotや音声入力が話題になりがちですが、本当にどんな場合でも便利なのでしょうか? Amazon echoやAlexaを例に挙げ、ユーザーのコンテキストを理解した提案を対話を踏まえ提供することこそが「人間的」なのではないかということでした。

次世代型インターフェイスの落とし穴

  • 人間の心は複雑なのでトラッキングする必要があり、人間側のコンテキストに対応する必要がある
  • マナーやエチケットを理解したインターフェイスである必要がある
  • 状態を人間に伝えることで安心してコミュニケーションが取れると人間側が間違えを起こしにくい。 などなど。

人間同士での会話のようにデバイスと会話でき、簡単に物事が済むとしたらとても便利ですね。

f:id:ayasano:20170428141804j:plain

会場の様子。休憩時間にAdobe XDのデモが実施されました。

私の感想

ユーザーを理解し、最適解を提供しよう、という意味でのUXの提唱ではなく、現場でUXをデザインする上でさらにより良くするためには心理学、倫理、脳科学など幅広い知識が必要になってきているという意味で、デザイナーが学ぶべきことはまだまだあるのだなと実感しました。深い学識の裏付けを備えたスピーカーばかりで、聞いていて非常に学びが多かったです。 今はサービスやインターネットが当たり前になった上で、インターフェイスが切り替わり、私たちの生活が変わる過渡期ならではの難しさがあるということなのかもしれません。

次回記事ではワークショップの感想をお送りします。

イベントURL : http://2017.uxdaystokyo.com/

トレタでは、最新の情報にキャッチアップし、考え続けることが好きなデザイナーを募集しています!

www.wantedly.com

try! Swift Tokyo 2017に行ってきた

f:id:y_koh:20170302095411j:plain

iOSエンジニアの高です。去年に引き続き今年もtry! Swiftに参加してきました。

www.tryswift.co

最近のカンファレンスは後日スライドだけでなく動画まで公開していたりします。try! Swiftの場合はスポンサーのRealmが公開してくれてます。 try! Swift Conference

こうやって資料が共有されると、そもそも参加する必要はあるのだろうか?と思ってしまいがちなのですが、やっぱりそこでの空気感だったり、他のエンジニアとの交流だったりは結構大事だなと思っていて出来る限り参加するようにしています。

海外からはもちろんですが、国内でも東京以外から参加されてる方も多かったです。僕が話した感じでは福岡が多かったなという印象です。

会場

f:id:y_koh:20170304145228j:plain ベルサール新宿セントラルパークビルで行われました。天井も高く、広々とした会場で良かったです。

所感

今年も興味深い話ばかりでしたが、去年に比べるとSwift言語自体に突っ込んだ話は少なくなったかなという印象でした。去年はプロトコル指向、型消去、LLDB、オープンソースSwiftなどもう少しコアな話が多かったと思います。

この一年で一通り出尽くしたからか、もしかしたら1年経ったけれど悩みのタネは特に変わってなくてずっと同じ話になってしまうのも、、ってことなのかもしれませんね。

気になったセッション

気になったセッションをいくつかご紹介します。

Swift開発者が知りたかったけど聞きにくい機械学習のすべて

機械学習は最近至る所で耳にするので一度取り組んでみようと思ってるところです。このセッションでは機械学習はiOSアプリ開発と類似点が多いのでiOSエンジニアであれば機械学習を始めやすいのではという話をしていました。

UIをSwiftyに書く

やっぱり海外の方はStoryboardが嫌いみたいです😅 たしかにイケてないところはたくさんある。もう少し自然な形で統合してくれと誰もが思ってるでしょう。後述しますが、色の扱いもどうにかしてほしいところです。。

それでもUIをコードで書くと後から見たときに脳内変換が必要になってつらいので、僕は使えるところではStoryboard・xibを使うようにしてます。

独自のツールを構築する

ざっくり言うと、みんなが作ってるアプリはXcodeで作るのに適してないからReactNativeで作ろうぜって話でした。そうきたか!という感じでしたが、納得できるところは多かったです。

Appleのアプリを見ればわかると思いますが、ほとんどがスタンドアロンアプリです。もちろん通信もしますけど、それがメインではない。Xcodeはそういったアプリを作るための環境として提供されているので、API指向なアプリを開発しやすい環境ではないとのことです。

その点ReactNativeはAPI指向なアプリと親和性が高いとのことです。ReactNativeはクロスプラットフォームの文脈で語られることが多いですが、単純にAPI指向なアプリを作りやすいそうです。

ReactNativeは出た当時一瞬だけ触ってみましたが、アプリを起動し直さなくても変更点が反映されるHot Reloadingが本当に羨ましいです。

テスト可能なコードを書くということの2つの側面

テストする際に問題になるのが環境です。自動テストするには毎回同じ環境を用意する必要があるのですが、特定の環境を作り出す方法として、環境をグローバルなstructにまとめてしまい、必ずここを通るようにするという方法を紹介してました。

struct Environment {
  let ApiService: ServiceProtocol
  let cookieStorage: HTTPCookieStorageProtocol
  let customUser: User?
  let dateType: DateProtocol.Type
  let language: Language
  ...
}

Kickstarterアプリではこのリストが25個程度続くそうです。

これが本当にbetter wayかはやってみないとわからないですが、アプローチとしては面白いなと思いました。

Swiftで堅牢なカラーシステムを構築する

アプリで使っている色をプログラマティックに変更できるようにする方法を紹介しています。ZEPLINとの共有や、IB上で使用するためのパレット作成などの話もありました。

しかし、IB上で色を指定してもXMLを開いてみるとわかると思いますが、名前がついていないため参照することが出来ません。つまりプログラマティックに色を変えることが出来ません。これに関しては今のところ色は必ずコードで指定するという縛りを導入するしかなさそうです。

SwiftであればIBOutletプロパティdidSetで指定するのが良さそうです。

後半、色覚異常についての話もありました。僕もこの辺は気にはしているのですが、トレタアプリが複数人で使用するアプリのため特別な対応は難しいかなぁと思っているところです。

チームの生産性を改善するために決断疲れを最小化する

仕組み化やルール化できるところはなるべくそうして決断にかける時間を最小限するという話です。Pivotal Labでの一日の過ごし方をベースに何をやっているかを説明されていてとても良くまとまっていました。

  • 朝食
  • 朝礼
  • プロジェクト向けの朝礼
    • ファイル置き場の話。Xcodeのグルーピング
  • ペアプログラミング
  • MARKアノテーション
    • 人によって書き方が変わらないように、ViewControllerのテンプレートをXcodeのスニペットとして使っている
  • 休憩に卓球
  • ふりかえり(毎週金曜日)
    • Keep😀、Discuss😕、Improve😭

最近トレタでも属人化排除のために何が出来るかという話を良くしているところだったので色々と参考になる話が多かったです。ルール化することで窮屈になってしまっては本末転倒ですが、余計な決断を減らすためにルール化するというのは取り入れたいところです。

懇親会

f:id:y_koh:20170304145241j:plain 懇親会は会場から2駅離れたキリストンカフェで行われました。写真を見てもらえるとわかると思いますが、すごい人数です。これだけのiOSエンジニアが集まる機会はそうそう無いですよね。

とても楽しく有意義な時間でした。

おわりに

去年に引き続き今年も楽しませてもらいました。運営も全体的にとてもスムーズで素晴らしかったです。来年もあればまた参加したいと思います。

CTOがチームマネージメントじゃない方向に向かう時に何をするべきなのか - トレタにおけるmasuidriveの役割 2017年版

トレタ CTOの増井です。

トレタは創業して3年半、エンジニアも2名から13名に増え、私の役割も変わってきました。

当初は一人目のエンジニアとしてアプリの設計やサーバサイドのコードを書いたり運用全般を行っていました。

人数も増え、2年を過ぎたあたりからエンジニアリングの中で私が率先してやる必要のあることがほぼなくなってきました。むしろ海外展開で出張が増え、連続した時間がとれずに進捗を遅らせる原因になってしまうこともありました。

最近の論調では、メンバーが増えるとCTOはマネージメントや組織作りに移行して行くみたいですが、私はそっちに興味が全然なく、向いているとも思えませんでした。そもそも私は上司を持ったこともないし、決められた環境の中で働くのがとても苦手なので。

私が「組織を作って管理して行く」のは無理というのはトレタ設立当初から分かっていたことなので、メンバーを増やす時は「自分で目標を作って管理していける人」を基準に採用していました。そのため、多くの人がプレイングマネージャとして動け、開発部にはマネージャ職がないまま3年間進んできました。 しかし、人数が増えると人を管理するためでなく、他部署への窓口となる人や、担当のいない仕事を拾いタスクにしてメンバーに割り振る人が、必要になってきました。そこで「エンジニアリングマネージャ」として、昨年4月に入社した酒井がプレイングマネージャとして、その辺の面倒を観てくれるようになりました。

さて、そうなると、私が関わらなくても開発は順調に行われていきます。特にトレタ本体では開発フローが出来上がっており、連続した時間を取りにくくなった私が下手に関わると開発サイクルの歪めてしまうことになります。

2017年は「組織と異なる視点からの問題解決」を行動指針に

そんな感じで、シンガポール立ち上げも落ち着いた2016年半ばから「自分はCTOとして何をして会社に貢献するべきか」という事をずっと考えてきました。

CTOとしていろんなイベントに呼ばれる時には他社のCTOに話を聞いたり、IVS CTOのアンカンファレンスでは「マネージメントしないCTO 〜 We are NOT Naoya.」という枠をもらって色々なCTOと話し合ったりしました。

先行事例として、海外のCTOはどうなのかな?と聞いたら、AWS CTOのWernerさんのブログを教えてもらいました。 10年前ですが「The Different CTO Roles」 という記事の中では「CTOとは何をする人なのか」という話から、その役割として4種類に分類されていました。

  • Infrastructure Manager
  • Technology Visionary and Operations Manager
  • External Facing Technologist
  • Big Thinker

前の二つはエンジニア組織を直接管理する方向で、後の二つは会社を新しい方向に導くために他の部署とも連携取りながら影響して行くという風に説明してます。目線がエンジニア組織に向くか、会社(スタートアップの場合は ≒ CEO)に向くかの違いでしょう。

このブログを読むうちに、イベントでよく聞くCTOの役割は前者であり、私が目指すのは後者じゃないかと感じてきました。 特に創業CTOとして、前職なども含め6年間もCEOの中村と一緒に仕事をして来て、私に求められているのも後者としての役割だと感じていました。

「Technology Visionary」は「CTOは技術を引っ張らなければ行けない」という気持ちがありCTOは当然あるべき役割だと思っていましが、この分類では私の目指す方向に入ってこないことは、割と衝撃的でした。

この記事や関連記事を読み、「エンジニアの先頭に立ち、引っ張って行くより、一人突っ走って『こういう道があるんだ』という事を観てもらえる立場」になりたいなと明確に思えるようになったのは11月頃でした。

また、事業や会社の進むべき方向をもっとも理解しているべき創業者の一人として、事業や会社の課題をチームとは違う角度で解決を模索するという事も「やっていいんだ」と思えるようになってきました。 これをやると開発チームとは距離ができてしまう可能性もあり、「開発部 CTO」として正しい道なのかずっと気になっていました。

そこから自分の役割をまとめて2017年のJob descriptionを下記のように書いてみました。

開発部の一部としてのCTOと、事業を包括的に見る共同創業者の立場で分けて考えてみました。

「組織と別の視点から問題を解決する」というのが2017年の行動の大枠になります。

# 開発部 CTO職

技術とビジネス、両軸のバランスを保ちながらトレタを伸ばす役割。

## 事業の技術判断
- 事業が生まれるところに技術視点を持ち込む
- 各プロジェクトの利用技術・アーキテクチャと問題の把握
- 各プロジェクトの目的や事業意義を把握し、メンバーのサポートを行う

## 技術広報
- トレタの中で起こってる技術を外に伝えて、技術力をトレタのブランド力向上に繋げる
- 各プロジェクトの利用技術・アーキテクチャと利点・欠点・の把握
- トレタの開発文化を明文化して内外に発信、定着させて行く

## 採用
- 会社説明と面接
- 採用広報

## メンタリング
- 必要に応じて1 on 1などを行う

## アーキテクト
- 基本設計の部分でデータ構造や全体の構成などのレビューを行う

## 隙間
- ハードなど、誰も持たない技術に関する案件


# 共同創業者職

トレタの創業者として、既存の関係性やビジネスに囚われずにトレタを伸ばす役割。

## 組織横断の問題解決
- 営業やマーケなど開発部以外でもエンジニアや共同創業者の視点からできる問題解決を提起する
- 特に海外展開を考慮した問題解決を行う

## TORETA LAB
- 非連続にトレタを成長させる種を見つける
- 技術を主とした新規事業開発
- プロダクト本流外を技術で解決するプロダクト
- どっかで学生バイトかインターン入れたいなぁ

去年の秋ぐらいから、上に書いたようなことを意識しながら仕事をしてきました。

もうトレタ本体の開発で日常的に私が関わる部分はなくなりました。新しい機能開発や技術剪定もほぼ全てを開発組織で行なっています。私がいなくてもトレタの開発に困ることはほとんどないでしょう。だからこそ、開発チームから少し離れた、別の視点を持ち込むことで、プロダクトが非連続に成長させていきたいと考えています。

また、チームの人数も増え、層も厚くなったことで開発チームの中からも新しい方向性が出てくるようになりました。

トレタでは3年以上運用して蓄積したお客様のデータを元に、お客様の利益になるデータをまとめて提供して行くためにデータ解析を本格的に始めたところなのですが、数学的な分野は私の苦手なところであり全然手の出てない部分でした。 そこは、エンジニアの芹沢と中村(若い方)を中心に企画・開発してガシガシと出来上がって行く様子を見て、新しく面白いものが出来上がって行くのをワクワクして見ています。

トレタの新しい可能性を見つけるための「TORETA LAB.」を開設

f:id:masuidrive:20170227144754p:plain:w150:right私は今年、アプリ内に面白い機能を入れるSDKを作ったり、新しいハードを作っていたり、営業部の業務フロー改善のお手伝いなど、本体の開発以外だけど「技術で解決」できる問題を探し回っています。会社としてのトレタの引き出しを増やして深みのある会社にしたいのです。その引き出しを作るための「TORETA LAB.」という一人組織的なものを作りました。

「創業CTO」というのは何をやっていても、後から入ったメンバーとしては口の出しにくいものでしょう。しかし文句も言いにくいため、その人の能力が組織の能力の上限になってしまう事も十分に考えられます。しかし、その「口の出しにくさ」をいい方向に生かして、新しいトレタの可能性を作って行く2017年を目指しています。

そして、こんな組織で一緒に働いてくれるエンジニアを募集しています。トレタの技術や組織に共感を持ってくれて「自分はこんな役割で働きたい」と思ってくれる、「こんな役割があるんじゃないか」と考えてくれる人が一緒に働いてくれると非常に嬉しいです。

また、TORETA LAB.では学生のインターン生も採って見たいなーと思っています。何も決まっていないのですがエンジニアリングの好きな学生さんがいましたら、 masuidrive@toreta.in まで気軽にメールいただけると嬉しいです。

© Toreta, Inc.

Powered by Hatena Blog