SlideShare ist ein Scribd-Unternehmen logo
1 von 42
> アプリ開発作業の効率改善
2015/07/09
2015/07/09
日経電子版×Sansanアプリ開発プロジェクト成功への道
〜アプリ開発者勉強会Vol.3
Sansan株式会社 辰濱健一
Copyright © 2014 Sansan, Inc. All rights reserved.
> Agenda
1
• 自己紹介
• テスト自動化
• テスト以外の作業の自動化
• デザイナとの連携
• iOS / Android で同じ仕様のアプリを効率良く作るた
めの工夫
> 自己紹介
2015/07/09
Copyright © 2014 Sansan, Inc. All rights reserved.
> 自己紹介
3
• 辰濱健一( kenichi.tatsuhama)
• Sansan 株式会社 Sansan 開発部
• 神山ラボ勤務(徳島現地採用)
• Android 版 Sansan アプリ実装担当
&アプリチームリーダ
• 通勤電車を避け、3社連続徳島勤務中
• 趣味
• 音楽
• エレクトーン、トランペット、篠笛(阿波踊り)
• 旅行
• 黒部立山アルペンルートや伊豆諸島がお気に入りスポット
• 次は小笠原諸島に行きたい
Copyright © 2014 Sansan, Inc. All rights reserved.
> Sansan株式会社
4
モバイルアプリエンジニアは、2つの事業部で6人のメンバー
・Sansan … 2名
・Eight … 4名
Copyright © 2014 Sansan, Inc. All rights reserved.
> 神山ラボ
5
• 築70年の木造古民家(3棟)
• 略歴
• 2010年設置
• 〜2013/11:合宿所
• 2013/11〜:常駐メンバーのいる開発拠点に
• 家具家電、畑付き、風呂トイレセパレート
• 家賃:数万円 / 月
• インターネット接続:光回線
• 最寄り駅まで徒歩15分
• 改装OK物件
Copyright © 2014 Sansan, Inc. All rights reserved.
> 神山での仕事(良いこと)
6
• 通勤が楽、静かで広々していて、高いパフォーマンス
の状態で仕事に集中できる
• 業務上必要なコミュニケーションは、Github, Skype,
Slack 等のツールで意外となんとでもなる
Copyright © 2014 Sansan, Inc. All rights reserved.
> 神山での仕事(難点)
7
• ネットワーク状態にコミュニケーションが左右される
• 開発チーム外の人に直接話しかけられない
• 視察・取材などの業務も伴う
• 自然環境との戦い(虫、カビ、寒さ…)
> テストの自動化
2015/07/09
Copyright © 2014 Sansan, Inc. All rights reserved.
> テスト自動化との関わり
9
• 前々職時代
• 正確さと性能が求められるプロダクト(25名チーム)に
おいて、高速化担当にアサインされる誰の箇所であれ、
とにかく遅い箇所は改修して、高速化することがミッ
ション
• 但し、品質面でも性能面でもデグレードは許されない
• QA チームはあったが、細かい部分まで手は回らない…
• なのにテスト環境・パフォーマンス観測環境がない。。。
→ UWSC を用いて、UI 自動テストを導入
Copyright © 2014 Sansan, Inc. All rights reserved.
> テスト自動化との関わり
10
• Sansan 株式会社にて
• iOS 担当:1名、Android 担当:1名
• 法人向け Sansan サービスには Web 版があるものの、
アプリの利用促進がなされている
• 海外展開においては、開発のスピード感が求められてい
る
• 毎年新しい OS 、新しい機種での動作確認が必要
• なのに QA チームはない…
→ スマホアプリでも UI 自動テストの導入を!
Copyright © 2014 Sansan, Inc. All rights reserved.
> スマホアプリの自動テストライブラリ
11
- Android 専用
- Robotium
- monkeyrunner
- Espresso
- など…
- iOS 専用
- KIF
- Kiwi
- など…
- ハイブリッド
- Appium
- Calabash
- MonkeyTALK
- など…
Copyright © 2014 Sansan, Inc. All rights reserved.
> 選定したライブラリ
12
• Android 版 … Robotium
• Android 実装と同じ Java 言語で記述
• アプリケーション内部のオブジェクトを参照できる
• UI に見えない内部の値のチェックもできる
• DB にもアクセスできるのでテストケースを動的生成できる
→ サーバ DB 状態の変更にも強い
• ただし、リリースビルドでは使えない…
※リリースビルドでも使える appium などのライブラリもある
• iOS 版 … KIF
• 社内他チームでも先行調査をしており、ノウハウ共有の
ためにライブラリを合わせた
Copyright © 2014 Sansan, Inc. All rights reserved.
> テスト項目
13
• まずは「広く浅く」のリグレッションテストを自動化
• 主要画面の主要機能のみ自動化
• 例)
• ログイン画面
• ログインできること ← これだけ
• パスワードが空の時にエラーが表示されること ← しない
• 未登録ユーザの時エラーが表示されること ← しない
• ユーザ一覧画面
• ユーザタップで名刺一覧画面に遷移すること
• 名刺一覧画面
• 名刺タップで名刺詳細画面に遷移すること
• バックキー押下でユーザ一覧画面に戻ること
Copyright © 2014 Sansan, Inc. All rights reserved.
> テストコードの例
14
- ログイン処理
- メールアドレス入力欄を取得
- パスワード入力欄を取得
- メールアドレスを入力
- パスワードを入力
- ログインボタンを押す
テストライブラリをラッ
プして可読性確保!
Copyright © 2014 Sansan, Inc. All rights reserved.
> デモ動画
15
• 2014/11 時点の動画です
• http://youtu.be/scY_RPgfxeY
• 4分ぐらいありますが、発表時間の都合上ちょっとだ
け…
Copyright © 2014 Sansan, Inc. All rights reserved.
> 自動テスト導入の効果
16
• デグレードの早期発見・防止につながった
• 実際に開発中のミスを検出し、デグレードを未然に防いだ
• 開発サーバのデグレードを検出した
• 大規模な修正も行いやすくなった
• 何度でもテストを簡単に実行できる
• 作業効率UP
• 離席中・昼食中・ミーティング中にでもテストができる
• テストに割く時間を開発に充てることができる
• 新しい OS が出てもテスト工数を割かなくて良い
Copyright © 2014 Sansan, Inc. All rights reserved.
> アドバイス
17
• UI テストは仕様変更に弱いので、書きすぎない
• SLEEP じゃなくて WAIT で
• 「通信が終わったら」「ぐるぐるが消えたら」…
• 操作の限界はあるので、適度にあきらめること
• 届いたメールの URL をクリックしてブラウザに…!?
• アプリを終了させて再起動した時に…?
• テストの目的で分割する
• スモークテスト … 広く浅く、最低限の確認
• 機能テスト … その機能の本格的な確認
• スクリーンショット収集
• パフォーマンス計測
Copyright © 2014 Sansan, Inc. All rights reserved.
> さらなるテストに向けて…
18
• 操作中に取っている各種ログの活用
• テスト専用使い捨て環境の用意
Copyright © 2014 Sansan, Inc. All rights reserved.
> 推移時間(イメージ)
19
• パフォーマンス改善の結果確認、性能デグレの検出が
できる(かも?)
• 通信状態やサーバ状態に大きく左右される気がする…
0
2
4
6
8
10
12
2015/2/27 2015/2/28 2015/3/1 2015/3/2 2015/3/3 2015/3/4 2015/3/5 2015/3/6
ログイン処理
初回同期
名刺画像送信
詳細データ取得
高画質画像データ取得
手動同期処理
Copyright © 2014 Sansan, Inc. All rights reserved.
> 通信回数の分析
20
- 呼び出し毎に API名と実行時間を csv ファイルに出力
- Excel のピボットテーブルで集計
- iOS / Android で同じ仕組みを入れれば、
同じ操作で API 呼び出しの違いがわかる!
そんなに呼び
出す必要ある
の…?
サーバ負荷削減のためのボトルネック分析が容易になる
Excelマクロ
Copyright © 2014 Sansan, Inc. All rights reserved.
> 通信回数の分析(推移)
21
- さっきのデータを実行毎に集計する
呼び出し回数削減施策導入
Copyright © 2014 Sansan, Inc. All rights reserved.
> テスト用の使い捨て環境
22
• 誰もが触る開発環境で自動テストを行っており、他者
によるデータの追加・削除が行われる
• そのデータの存在を前提としているテストコードの
データが削除されていて失敗したり、件数が増えて同
じ環境でのパフォーマンス計測が行えない
• → Docker を用いて、テスト用に毎回同じ環境を作
れる仕組みを導入
• 特殊なデータや条件による過去の不具合が再現しない
テストも確認可能に!
> テスト以外の作業の自動化
2015/07/09
Copyright © 2014 Sansan, Inc. All rights reserved.
> テスト以外の作業の自動化
24
• 本番ビルド(は、もちろんなので省略)
• スクリーンショット収集ツール
• イベントトラッキング仕様書と実装のギャップの洗い
出しツール
• iOS の未使用文言洗い出しツール
• デザインパーツ向けツール
Copyright © 2014 Sansan, Inc. All rights reserved.
> スクリーンショット収集ツール
25
• 自動テストライブラリを使って、各画面に遷移しスク
リーンショットを保存するだけのテストを実行
• 言語環境(日本語 / 英語)を切り替えてキャプチャ
• 色んな端末で実行して結果を集約
Copyright © 2014 Sansan, Inc. All rights reserved.
> スクショ一覧
26
画面名→
画面名→
画面名→
Nexus4 Nexus5 デザイン指示画像(期待値)
※元サイズが違うけど、
今は同じサイズで
表示されている
目で比較する!
デザイナのチェックや
意図しないレイアウト崩れの
確認が楽になりました
Copyright © 2014 Sansan, Inc. All rights reserved.
> イベント仕様が実装されているかのチェック
27
• Google Spread Sheet にイベントトラッキング用の
イベント名一覧の仕様書がある
• その1つ1つのトラッキングイベント名を、ソースコー
ド内全検索してヒットするかチェック
• 仕様にあるが実装にないイベントの検出が容易になり、
実装漏れの検出が可能に!
• Android / iOS 両方に適用可能
※ Ruby でツールを自作
Android iOS
Copyright © 2014 Sansan, Inc. All rights reserved.
> iOS 未使用文言洗い出しツール
28
• 基本的には、前述と同じ仕組み。
• Localizable.string のキー部分を抜き出して、ソース
コード全行検索
(Android の Lint みたいなのがあればいいのに…)
Copyright © 2014 Sansan, Inc. All rights reserved.
> デザインパーツ向けツール1
29
「PNG や JPEG 画像を一括最適化するツール」
• 最適化をかけると、
• アプリサイズの削減
• Webページの場合、通信量の削減&高速化
• Git リポジトリの不可削減
などのメリットがある
• 一括最適化ツールはあるが、TinyPNG が圧縮率
で勝っているので、TinyPNG の API にフォルダ
以下全部渡すツールを Ruby で作成
Copyright © 2014 Sansan, Inc. All rights reserved.
> デザインパーツ向けツール2(製作途中…)
30
「サイズチェックツール」
• Android では、xh, xxh などフォルダに分けて、それ
ぞれの画像をデザイナから受け取っている
• 「xh フォルダにあるけど、xxh フォルダにない」
• 「xh/icon.png と、xxh/icon.png のサイズに矛盾が
ある」
• これらを検出するツールを作成中…
(まぁ、Lint がやってくれますけどね…)
> デザイナとの連携
2015/07/09
Copyright © 2014 Sansan, Inc. All rights reserved.
> 読み合わせ会
32
• 各種ガイドラインの読み合わせ会を実施
• Android は「マテリアルデザインガイドライン」
• iOS は 「ヒューマンインターフェイスガイドライン」
• 参加者は、開発者&デザイナ
• ただ読み合わすだけではなく、実機を持って参加
• 「このアプリのこの動きがそれだ!」
• 「このアプリのこの動きはガイドラインに反してるね」
など開発者&デザイナでライトにに話をしながら進める
• デザイナの作業の中で自動化できる箇所はサポート
• 前述の一括最適化など…
> iOS / Android で同じ仕様のア
プリを効率良く作るための工夫
2015/07/09
Copyright © 2014 Sansan, Inc. All rights reserved.
> 先行実装と移植
34
• 例)iOS で先行実装して、Android は移植する
• 効果
• 移植する側の OS 担当者は、試行錯誤の必要がない
• 設計が似ることによる、コードレビューや調査のコストダウン
• でも、スケジュールによっては難しい…
• 規模が大きいけど、同時リリースしたいときとか
• 可能なら、機能担当制
• この機能はAさん担当、iOS も Android も作る
• iOS & Android 両方のスキルが必要…
Copyright © 2014 Sansan, Inc. All rights reserved.
> UI 先行とロジック先行
35
• 対応工数が1ヶ月&同時リリースしたい改修で実施中
• iOS では、UIモックを先行作成
• Android では、API との通信部分やエラーチェックな
どのロジックを先行実装
• 後の実装は双方を参考に
• 効果
• モックにより、UI/UX の手戻りは最小限に
• 仕様考慮漏れの早期洗いだしに
Copyright © 2014 Sansan, Inc. All rights reserved.
> ログの活用
36
• iOS / Android とも、開発版のみで共通のログを出力
する
• 例)
• 通信(パラメータも含む)
• イベントトラッキング
• これらを突き合わせることで、
相互の動作確認・実装差異
の確認ができる
各種ログ
突き合わせ
Copyright © 2014 Sansan, Inc. All rights reserved.
> 同じ操作を iOS / Android で行う
37
• 基本的に同じ仕様なので同じ結果になるはず…
同じ検索文字列で、同じ順番で検索結果が得られているかどうか
(左:Android、右:iOS)
> 最後に…
2015/07/09
Copyright © 2014 Sansan, Inc. All rights reserved. 39
人数が少ないので、作業効率化が必要でした。
逆に、人数が少なかったから、効率化について色々と取
り組み、開発作業の効率化について取り組むことができ
ました。
さらに開発スピードを上げるためには…
> 最後に…
Copyright © 2014 Sansan, Inc. All rights reserved.
40
Sansanは一緒に新しい価値を作っていく
仲間をさがしています。
Ruby, Ruby on Rails
(Webアプリケーション)
C#,ASP.NET MVC
(Webアプリケーション)
iOS / Android アプリ
- 個人向け名刺管理アプリ「Eight」
- 名刺データ化分散処理システム
- 法人向け名刺管理サービス「Sansan」
- 法人向け名刺管理サービス
「Sansan」
- 個人向け名刺管理アプリ「Eight」
エンジニア募集中
Sansan 採用 検索
recruit@sansan.com まで
お気軽にご連絡ください。
興味のある方は
Copyright © 2014 Sansan, Inc. All rights reserved.
> 関連資料
41
• 「Robotium を使った UI テストとレイアウト確認の
効率化」
http://www.slideshare.net/kenichitatsuhama/robotium-ui
もう少しだけ詳しい、自動化の話
• 「Rubyを使ったスマホアプリのUIテスト」
http://www.slideshare.net/kenichitatsuhama/rubyui
リリースビルドでも使える自動テストライブラリを調べた話

Weitere ähnliche Inhalte

Was ist angesagt?

Swift愛好会_ライブラリを使わずにゴリゴリと
Swift愛好会_ライブラリを使わずにゴリゴリとSwift愛好会_ライブラリを使わずにゴリゴリと
Swift愛好会_ライブラリを使わずにゴリゴリとSachiko Kajishima
 
コードが書けない人が凶悪ノベルゲーム「ヤンデレ小杉」を作ってみた
コードが書けない人が凶悪ノベルゲーム「ヤンデレ小杉」を作ってみたコードが書けない人が凶悪ノベルゲーム「ヤンデレ小杉」を作ってみた
コードが書けない人が凶悪ノベルゲーム「ヤンデレ小杉」を作ってみたShintaro Ito
 
Swiftビギナーズ倶楽部 vol.2
Swiftビギナーズ倶楽部 vol.2Swiftビギナーズ倶楽部 vol.2
Swiftビギナーズ倶楽部 vol.2Kanako Kobayashi
 
マルチデバイスに対応するためのAuto layout
マルチデバイスに対応するためのAuto layoutマルチデバイスに対応するためのAuto layout
マルチデバイスに対応するためのAuto layoutasakahara
 
Apple審査を一発通過! iOS開発経験0でも出来る じげん流Swift開発のすべて
Apple審査を一発通過!iOS開発経験0でも出来るじげん流Swift開発のすべてApple審査を一発通過!iOS開発経験0でも出来るじげん流Swift開発のすべて
Apple審査を一発通過! iOS開発経験0でも出来る じげん流Swift開発のすべてMasaru Gushiken
 
iOSでライブラリを提供する際に気をつけたいこと
iOSでライブラリを提供する際に気をつけたいことiOSでライブラリを提供する際に気をつけたいこと
iOSでライブラリを提供する際に気をつけたいことasakahara
 
TypeScriptで作る型安全FirefoxOSアプリ
TypeScriptで作る型安全FirefoxOSアプリTypeScriptで作る型安全FirefoxOSアプリ
TypeScriptで作る型安全FirefoxOSアプリprogre
 
ゲームエンジンの中の話
ゲームエンジンの中の話ゲームエンジンの中の話
ゲームエンジンの中の話Masayoshi Kamai
 
多言語学習アプリを作成してみよう
多言語学習アプリを作成してみよう多言語学習アプリを作成してみよう
多言語学習アプリを作成してみようkorune ☆
 
できるだけUI系のライブラリを用いないアニメーションを盛り込んだサンプル実装まとめ(追加版)
できるだけUI系のライブラリを用いないアニメーションを盛り込んだサンプル実装まとめ(追加版)できるだけUI系のライブラリを用いないアニメーションを盛り込んだサンプル実装まとめ(追加版)
できるだけUI系のライブラリを用いないアニメーションを盛り込んだサンプル実装まとめ(追加版)Fumiya Sakai
 
AngularでAmebaコミュニティサービス開発
AngularでAmebaコミュニティサービス開発AngularでAmebaコミュニティサービス開発
AngularでAmebaコミュニティサービス開発Yusuke Goto
 
Swift事情2014夏 ~ Swift入門 beta6対応
Swift事情2014夏 ~ Swift入門 beta6対応Swift事情2014夏 ~ Swift入門 beta6対応
Swift事情2014夏 ~ Swift入門 beta6対応Tomoki Hasegawa
 
Uiテスト@yidev
Uiテスト@yidevUiテスト@yidev
Uiテスト@yidevYusuke Kita
 
capybara で快適なテスト生活を
capybara で快適なテスト生活をcapybara で快適なテスト生活を
capybara で快適なテスト生活をRyunosuke SATO
 
Embedded framework and so on
Embedded framework and so onEmbedded framework and so on
Embedded framework and so ontoyship
 
最近のSpringFramework2013 #jjug #jsug #SpringFramework
最近のSpringFramework2013 #jjug #jsug #SpringFramework最近のSpringFramework2013 #jjug #jsug #SpringFramework
最近のSpringFramework2013 #jjug #jsug #SpringFrameworkToshiaki Maki
 
KANAZAWA アプリ開発塾 2015 アプリ制作マスターへの道
KANAZAWA アプリ開発塾 2015 アプリ制作マスターへの道KANAZAWA アプリ開発塾 2015 アプリ制作マスターへの道
KANAZAWA アプリ開発塾 2015 アプリ制作マスターへの道Masayuki KaToH
 
【東京】ドコモのAIエージェント基盤「セバスチャン」勉強会【#3】
【東京】ドコモのAIエージェント基盤「セバスチャン」勉強会【#3】【東京】ドコモのAIエージェント基盤「セバスチャン」勉強会【#3】
【東京】ドコモのAIエージェント基盤「セバスチャン」勉強会【#3】Nishida Kansuke
 
Swift 3 その基本ルールを眺める #cswift
Swift 3 その基本ルールを眺める #cswiftSwift 3 その基本ルールを眺める #cswift
Swift 3 その基本ルールを眺める #cswiftTomohiro Kumagai
 

Was ist angesagt? (20)

Swift愛好会_ライブラリを使わずにゴリゴリと
Swift愛好会_ライブラリを使わずにゴリゴリとSwift愛好会_ライブラリを使わずにゴリゴリと
Swift愛好会_ライブラリを使わずにゴリゴリと
 
コードが書けない人が凶悪ノベルゲーム「ヤンデレ小杉」を作ってみた
コードが書けない人が凶悪ノベルゲーム「ヤンデレ小杉」を作ってみたコードが書けない人が凶悪ノベルゲーム「ヤンデレ小杉」を作ってみた
コードが書けない人が凶悪ノベルゲーム「ヤンデレ小杉」を作ってみた
 
Swiftビギナーズ倶楽部 vol.2
Swiftビギナーズ倶楽部 vol.2Swiftビギナーズ倶楽部 vol.2
Swiftビギナーズ倶楽部 vol.2
 
マルチデバイスに対応するためのAuto layout
マルチデバイスに対応するためのAuto layoutマルチデバイスに対応するためのAuto layout
マルチデバイスに対応するためのAuto layout
 
Apple審査を一発通過! iOS開発経験0でも出来る じげん流Swift開発のすべて
Apple審査を一発通過!iOS開発経験0でも出来るじげん流Swift開発のすべてApple審査を一発通過!iOS開発経験0でも出来るじげん流Swift開発のすべて
Apple審査を一発通過! iOS開発経験0でも出来る じげん流Swift開発のすべて
 
iOSでライブラリを提供する際に気をつけたいこと
iOSでライブラリを提供する際に気をつけたいことiOSでライブラリを提供する際に気をつけたいこと
iOSでライブラリを提供する際に気をつけたいこと
 
TypeScriptで作る型安全FirefoxOSアプリ
TypeScriptで作る型安全FirefoxOSアプリTypeScriptで作る型安全FirefoxOSアプリ
TypeScriptで作る型安全FirefoxOSアプリ
 
ゲームエンジンの中の話
ゲームエンジンの中の話ゲームエンジンの中の話
ゲームエンジンの中の話
 
多言語学習アプリを作成してみよう
多言語学習アプリを作成してみよう多言語学習アプリを作成してみよう
多言語学習アプリを作成してみよう
 
できるだけUI系のライブラリを用いないアニメーションを盛り込んだサンプル実装まとめ(追加版)
できるだけUI系のライブラリを用いないアニメーションを盛り込んだサンプル実装まとめ(追加版)できるだけUI系のライブラリを用いないアニメーションを盛り込んだサンプル実装まとめ(追加版)
できるだけUI系のライブラリを用いないアニメーションを盛り込んだサンプル実装まとめ(追加版)
 
AngularでAmebaコミュニティサービス開発
AngularでAmebaコミュニティサービス開発AngularでAmebaコミュニティサービス開発
AngularでAmebaコミュニティサービス開発
 
Swift事情2014夏 ~ Swift入門 beta6対応
Swift事情2014夏 ~ Swift入門 beta6対応Swift事情2014夏 ~ Swift入門 beta6対応
Swift事情2014夏 ~ Swift入門 beta6対応
 
Uiテスト@yidev
Uiテスト@yidevUiテスト@yidev
Uiテスト@yidev
 
capybara で快適なテスト生活を
capybara で快適なテスト生活をcapybara で快適なテスト生活を
capybara で快適なテスト生活を
 
Embedded framework and so on
Embedded framework and so onEmbedded framework and so on
Embedded framework and so on
 
最近のSpringFramework2013 #jjug #jsug #SpringFramework
最近のSpringFramework2013 #jjug #jsug #SpringFramework最近のSpringFramework2013 #jjug #jsug #SpringFramework
最近のSpringFramework2013 #jjug #jsug #SpringFramework
 
KANAZAWA アプリ開発塾 2015 アプリ制作マスターへの道
KANAZAWA アプリ開発塾 2015 アプリ制作マスターへの道KANAZAWA アプリ開発塾 2015 アプリ制作マスターへの道
KANAZAWA アプリ開発塾 2015 アプリ制作マスターへの道
 
【東京】ドコモのAIエージェント基盤「セバスチャン」勉強会【#3】
【東京】ドコモのAIエージェント基盤「セバスチャン」勉強会【#3】【東京】ドコモのAIエージェント基盤「セバスチャン」勉強会【#3】
【東京】ドコモのAIエージェント基盤「セバスチャン」勉強会【#3】
 
Kyakusaki.rb
Kyakusaki.rbKyakusaki.rb
Kyakusaki.rb
 
Swift 3 その基本ルールを眺める #cswift
Swift 3 その基本ルールを眺める #cswiftSwift 3 その基本ルールを眺める #cswift
Swift 3 その基本ルールを眺める #cswift
 

Andere mochten auch

確実に良くするUI/UX設計
確実に良くするUI/UX設計確実に良くするUI/UX設計
確実に良くするUI/UX設計Takayuki Fukatsu
 
スマホアプリ開発のワークフロー
スマホアプリ開発のワークフロースマホアプリ開発のワークフロー
スマホアプリ開発のワークフローKouhei Suzuki
 
Remote Research, The Talk.
Remote Research, The Talk.Remote Research, The Talk.
Remote Research, The Talk.bolt peters
 
Sketchnotes-SF Meetup :: Round 14 [Mon Jan 12, 2015]
Sketchnotes-SF Meetup :: Round 14 [Mon Jan 12, 2015]Sketchnotes-SF Meetup :: Round 14 [Mon Jan 12, 2015]
Sketchnotes-SF Meetup :: Round 14 [Mon Jan 12, 2015]Kate Rutter
 
Handmock by Concent, Inc.
Handmock by Concent, Inc.Handmock by Concent, Inc.
Handmock by Concent, Inc.Concent, Inc.
 
Uxデザイン定義書ワークショップ 20120726 公開版
Uxデザイン定義書ワークショップ 20120726 公開版Uxデザイン定義書ワークショップ 20120726 公開版
Uxデザイン定義書ワークショップ 20120726 公開版Mikihiro Fujii
 
スクー第1回 ウェブサービスで抑えておくべき法律の概略 nakanishi
スクー第1回 ウェブサービスで抑えておくべき法律の概略 nakanishiスクー第1回 ウェブサービスで抑えておくべき法律の概略 nakanishi
スクー第1回 ウェブサービスで抑えておくべき法律の概略 nakanishiwebcampusschoo
 
[Template]uxデザイン定義書201312
[Template]uxデザイン定義書201312[Template]uxデザイン定義書201312
[Template]uxデザイン定義書201312Mikihiro Fujii
 
Orchestrating Touchpoints - From Business to Buttons 2014
Orchestrating Touchpoints - From Business to Buttons 2014Orchestrating Touchpoints - From Business to Buttons 2014
Orchestrating Touchpoints - From Business to Buttons 2014Chris Risdon
 
SxSW 2013: Behavior Change as Value Proposition
SxSW 2013: Behavior Change as Value PropositionSxSW 2013: Behavior Change as Value Proposition
SxSW 2013: Behavior Change as Value PropositionChris Risdon
 
ソフトウェア開発を加速させるリーン開発の原則 公開用
ソフトウェア開発を加速させるリーン開発の原則 公開用ソフトウェア開発を加速させるリーン開発の原則 公開用
ソフトウェア開発を加速させるリーン開発の原則 公開用ESM SEC
 
Mind the Gap: Designing the Space Between Devices
Mind the Gap: Designing the Space Between DevicesMind the Gap: Designing the Space Between Devices
Mind the Gap: Designing the Space Between DevicesJosh Clark
 
IOS/Androidアプリの3つの大事な設計方針
IOS/Androidアプリの3つの大事な設計方針IOS/Androidアプリの3つの大事な設計方針
IOS/Androidアプリの3つの大事な設計方針Ken Morishita
 
Sketchで変わるワークフロー
Sketchで変わるワークフローSketchで変わるワークフロー
Sketchで変わるワークフローAsami Yamamoto
 
Measuring What Matters: A UX Approach to Metrics :: UX Days Tokyo [April 2015]
Measuring What Matters: A UX Approach to Metrics :: UX Days Tokyo [April 2015]Measuring What Matters: A UX Approach to Metrics :: UX Days Tokyo [April 2015]
Measuring What Matters: A UX Approach to Metrics :: UX Days Tokyo [April 2015]Kate Rutter
 
モバイルアプリのインタラクションプロトタイピング - 高速に仮説・実行・検証サイクルを回すために
モバイルアプリのインタラクションプロトタイピング - 高速に仮説・実行・検証サイクルを回すためにモバイルアプリのインタラクションプロトタイピング - 高速に仮説・実行・検証サイクルを回すために
モバイルアプリのインタラクションプロトタイピング - 高速に仮説・実行・検証サイクルを回すためにKeisuke Tada
 
iOSレガシーコード改善ガイド〜マンガボックス開発における事例〜
iOSレガシーコード改善ガイド〜マンガボックス開発における事例〜iOSレガシーコード改善ガイド〜マンガボックス開発における事例〜
iOSレガシーコード改善ガイド〜マンガボックス開発における事例〜Kentaro Matsumae
 
DeNAtechcon_DeNAのセキュリティの取り組みと、スマートフォンセキュリティ(same-origin policy)
DeNAtechcon_DeNAのセキュリティの取り組みと、スマートフォンセキュリティ(same-origin policy)DeNAtechcon_DeNAのセキュリティの取り組みと、スマートフォンセキュリティ(same-origin policy)
DeNAtechcon_DeNAのセキュリティの取り組みと、スマートフォンセキュリティ(same-origin policy)Toshiharu Sugiyama
 

Andere mochten auch (19)

確実に良くするUI/UX設計
確実に良くするUI/UX設計確実に良くするUI/UX設計
確実に良くするUI/UX設計
 
スマホアプリ開発のワークフロー
スマホアプリ開発のワークフロースマホアプリ開発のワークフロー
スマホアプリ開発のワークフロー
 
Remote Research, The Talk.
Remote Research, The Talk.Remote Research, The Talk.
Remote Research, The Talk.
 
Sketchnotes-SF Meetup :: Round 14 [Mon Jan 12, 2015]
Sketchnotes-SF Meetup :: Round 14 [Mon Jan 12, 2015]Sketchnotes-SF Meetup :: Round 14 [Mon Jan 12, 2015]
Sketchnotes-SF Meetup :: Round 14 [Mon Jan 12, 2015]
 
Designing for Touch... and Beyond - Josh Clark
Designing for Touch... and Beyond - Josh ClarkDesigning for Touch... and Beyond - Josh Clark
Designing for Touch... and Beyond - Josh Clark
 
Handmock by Concent, Inc.
Handmock by Concent, Inc.Handmock by Concent, Inc.
Handmock by Concent, Inc.
 
Uxデザイン定義書ワークショップ 20120726 公開版
Uxデザイン定義書ワークショップ 20120726 公開版Uxデザイン定義書ワークショップ 20120726 公開版
Uxデザイン定義書ワークショップ 20120726 公開版
 
スクー第1回 ウェブサービスで抑えておくべき法律の概略 nakanishi
スクー第1回 ウェブサービスで抑えておくべき法律の概略 nakanishiスクー第1回 ウェブサービスで抑えておくべき法律の概略 nakanishi
スクー第1回 ウェブサービスで抑えておくべき法律の概略 nakanishi
 
[Template]uxデザイン定義書201312
[Template]uxデザイン定義書201312[Template]uxデザイン定義書201312
[Template]uxデザイン定義書201312
 
Orchestrating Touchpoints - From Business to Buttons 2014
Orchestrating Touchpoints - From Business to Buttons 2014Orchestrating Touchpoints - From Business to Buttons 2014
Orchestrating Touchpoints - From Business to Buttons 2014
 
SxSW 2013: Behavior Change as Value Proposition
SxSW 2013: Behavior Change as Value PropositionSxSW 2013: Behavior Change as Value Proposition
SxSW 2013: Behavior Change as Value Proposition
 
ソフトウェア開発を加速させるリーン開発の原則 公開用
ソフトウェア開発を加速させるリーン開発の原則 公開用ソフトウェア開発を加速させるリーン開発の原則 公開用
ソフトウェア開発を加速させるリーン開発の原則 公開用
 
Mind the Gap: Designing the Space Between Devices
Mind the Gap: Designing the Space Between DevicesMind the Gap: Designing the Space Between Devices
Mind the Gap: Designing the Space Between Devices
 
IOS/Androidアプリの3つの大事な設計方針
IOS/Androidアプリの3つの大事な設計方針IOS/Androidアプリの3つの大事な設計方針
IOS/Androidアプリの3つの大事な設計方針
 
Sketchで変わるワークフロー
Sketchで変わるワークフローSketchで変わるワークフロー
Sketchで変わるワークフロー
 
Measuring What Matters: A UX Approach to Metrics :: UX Days Tokyo [April 2015]
Measuring What Matters: A UX Approach to Metrics :: UX Days Tokyo [April 2015]Measuring What Matters: A UX Approach to Metrics :: UX Days Tokyo [April 2015]
Measuring What Matters: A UX Approach to Metrics :: UX Days Tokyo [April 2015]
 
モバイルアプリのインタラクションプロトタイピング - 高速に仮説・実行・検証サイクルを回すために
モバイルアプリのインタラクションプロトタイピング - 高速に仮説・実行・検証サイクルを回すためにモバイルアプリのインタラクションプロトタイピング - 高速に仮説・実行・検証サイクルを回すために
モバイルアプリのインタラクションプロトタイピング - 高速に仮説・実行・検証サイクルを回すために
 
iOSレガシーコード改善ガイド〜マンガボックス開発における事例〜
iOSレガシーコード改善ガイド〜マンガボックス開発における事例〜iOSレガシーコード改善ガイド〜マンガボックス開発における事例〜
iOSレガシーコード改善ガイド〜マンガボックス開発における事例〜
 
DeNAtechcon_DeNAのセキュリティの取り組みと、スマートフォンセキュリティ(same-origin policy)
DeNAtechcon_DeNAのセキュリティの取り組みと、スマートフォンセキュリティ(same-origin policy)DeNAtechcon_DeNAのセキュリティの取り組みと、スマートフォンセキュリティ(same-origin policy)
DeNAtechcon_DeNAのセキュリティの取り組みと、スマートフォンセキュリティ(same-origin policy)
 

Ähnlich wie アプリ開発作業の効率改善

アプリの不具合を少なくするために
アプリの不具合を少なくするためにアプリの不具合を少なくするために
アプリの不具合を少なくするために健一 辰濱
 
Device Farm を使ったスマホアプリの自動テスト
Device Farm を使ったスマホアプリの自動テストDevice Farm を使ったスマホアプリの自動テスト
Device Farm を使ったスマホアプリの自動テスト健一 辰濱
 
Android 開発, 運用時に使いたいライブラリやサービスの紹介
Android 開発, 運用時に使いたいライブラリやサービスの紹介Android 開発, 運用時に使いたいライブラリやサービスの紹介
Android 開発, 運用時に使いたいライブラリやサービスの紹介健一 辰濱
 
Robotium を使った UI テスト
Robotium を使った UI テストRobotium を使った UI テスト
Robotium を使った UI テスト健一 辰濱
 
iOSアプリ開発のテスト環境 - テストをはじめる最初の一歩 -
iOSアプリ開発のテスト環境 - テストをはじめる最初の一歩 -iOSアプリ開発のテスト環境 - テストをはじめる最初の一歩 -
iOSアプリ開発のテスト環境 - テストをはじめる最初の一歩 -Toshiyuki Hirata
 
Voicepic@FukuiMASeminar
Voicepic@FukuiMASeminarVoicepic@FukuiMASeminar
Voicepic@FukuiMASeminarManabu Shimobe
 
20151201 私がSeleniumを使ってスクリーンショットを撮るまでに出会った闇の全て
20151201 私がSeleniumを使ってスクリーンショットを撮るまでに出会った闇の全て20151201 私がSeleniumを使ってスクリーンショットを撮るまでに出会った闇の全て
20151201 私がSeleniumを使ってスクリーンショットを撮るまでに出会った闇の全てOsamu Shimoda
 
Espresso と Firebase Test Lab で Android アプリのテストを自動化する
Espresso と Firebase Test Lab で Android アプリのテストを自動化するEspresso と Firebase Test Lab で Android アプリのテストを自動化する
Espresso と Firebase Test Lab で Android アプリのテストを自動化する健一 辰濱
 
Ansibleは簡単なIT自動化
Ansibleは簡単なIT自動化Ansibleは簡単なIT自動化
Ansibleは簡単なIT自動化You&I
 
iOSアプリの自動テストをはじめよう
iOSアプリの自動テストをはじめようiOSアプリの自動テストをはじめよう
iOSアプリの自動テストをはじめようToshiyuki Hirata
 
Bluepillを使ったiOS自動テストの並列化
Bluepillを使ったiOS自動テストの並列化Bluepillを使ったiOS自動テストの並列化
Bluepillを使ったiOS自動テストの並列化Toshiyuki Hirata
 
おすすめインフラ! for スタートアップ
おすすめインフラ! for スタートアップおすすめインフラ! for スタートアップ
おすすめインフラ! for スタートアップKoichiro Sumi
 
アウトプットのすすめ
アウトプットのすすめアウトプットのすすめ
アウトプットのすすめSatoshi Oikawa
 
kintone x Sansan 連携事始め~カスタマイズまで
kintone x Sansan連携事始め~カスタマイズまでkintone x Sansan連携事始め~カスタマイズまで
kintone x Sansan 連携事始め~カスタマイズまでKatsuki Ito
 
STFとAppiumをもちいたAndroidアプリの自動テスト
STFとAppiumをもちいたAndroidアプリの自動テストSTFとAppiumをもちいたAndroidアプリの自動テスト
STFとAppiumをもちいたAndroidアプリの自動テストToshiyuki Hirata
 
ニコニコ動画iOSアプリの UX・マネタイズ・技術の話
ニコニコ動画iOSアプリの UX・マネタイズ・技術の話ニコニコ動画iOSアプリの UX・マネタイズ・技術の話
ニコニコ動画iOSアプリの UX・マネタイズ・技術の話Kentaro Matsumae
 
Redmineプラグイン導入・開発入門
Redmineプラグイン導入・開発入門Redmineプラグイン導入・開発入門
Redmineプラグイン導入・開発入門Minoru Maeda
 
iOSアプリにおけるリリースフローとCI環境
iOSアプリにおけるリリースフローとCI環境iOSアプリにおけるリリースフローとCI環境
iOSアプリにおけるリリースフローとCI環境Toshiyuki Hirata
 
Ossを使ったazureでのdev ops
Ossを使ったazureでのdev opsOssを使ったazureでのdev ops
Ossを使ったazureでのdev ops裕貴 荒井
 

Ähnlich wie アプリ開発作業の効率改善 (20)

アプリの不具合を少なくするために
アプリの不具合を少なくするためにアプリの不具合を少なくするために
アプリの不具合を少なくするために
 
Device Farm を使ったスマホアプリの自動テスト
Device Farm を使ったスマホアプリの自動テストDevice Farm を使ったスマホアプリの自動テスト
Device Farm を使ったスマホアプリの自動テスト
 
Android 開発, 運用時に使いたいライブラリやサービスの紹介
Android 開発, 運用時に使いたいライブラリやサービスの紹介Android 開発, 運用時に使いたいライブラリやサービスの紹介
Android 開発, 運用時に使いたいライブラリやサービスの紹介
 
Robotium を使った UI テスト
Robotium を使った UI テストRobotium を使った UI テスト
Robotium を使った UI テスト
 
iOSアプリ開発のテスト環境 - テストをはじめる最初の一歩 -
iOSアプリ開発のテスト環境 - テストをはじめる最初の一歩 -iOSアプリ開発のテスト環境 - テストをはじめる最初の一歩 -
iOSアプリ開発のテスト環境 - テストをはじめる最初の一歩 -
 
Voicepic@FukuiMASeminar
Voicepic@FukuiMASeminarVoicepic@FukuiMASeminar
Voicepic@FukuiMASeminar
 
20151201 私がSeleniumを使ってスクリーンショットを撮るまでに出会った闇の全て
20151201 私がSeleniumを使ってスクリーンショットを撮るまでに出会った闇の全て20151201 私がSeleniumを使ってスクリーンショットを撮るまでに出会った闇の全て
20151201 私がSeleniumを使ってスクリーンショットを撮るまでに出会った闇の全て
 
Espresso と Firebase Test Lab で Android アプリのテストを自動化する
Espresso と Firebase Test Lab で Android アプリのテストを自動化するEspresso と Firebase Test Lab で Android アプリのテストを自動化する
Espresso と Firebase Test Lab で Android アプリのテストを自動化する
 
Ansibleは簡単なIT自動化
Ansibleは簡単なIT自動化Ansibleは簡単なIT自動化
Ansibleは簡単なIT自動化
 
iOSアプリの自動テストをはじめよう
iOSアプリの自動テストをはじめようiOSアプリの自動テストをはじめよう
iOSアプリの自動テストをはじめよう
 
Bluepillを使ったiOS自動テストの並列化
Bluepillを使ったiOS自動テストの並列化Bluepillを使ったiOS自動テストの並列化
Bluepillを使ったiOS自動テストの並列化
 
おすすめインフラ! for スタートアップ
おすすめインフラ! for スタートアップおすすめインフラ! for スタートアップ
おすすめインフラ! for スタートアップ
 
リモート・スマホ・レンタル
リモート・スマホ・レンタルリモート・スマホ・レンタル
リモート・スマホ・レンタル
 
アウトプットのすすめ
アウトプットのすすめアウトプットのすすめ
アウトプットのすすめ
 
kintone x Sansan 連携事始め~カスタマイズまで
kintone x Sansan連携事始め~カスタマイズまでkintone x Sansan連携事始め~カスタマイズまで
kintone x Sansan 連携事始め~カスタマイズまで
 
STFとAppiumをもちいたAndroidアプリの自動テスト
STFとAppiumをもちいたAndroidアプリの自動テストSTFとAppiumをもちいたAndroidアプリの自動テスト
STFとAppiumをもちいたAndroidアプリの自動テスト
 
ニコニコ動画iOSアプリの UX・マネタイズ・技術の話
ニコニコ動画iOSアプリの UX・マネタイズ・技術の話ニコニコ動画iOSアプリの UX・マネタイズ・技術の話
ニコニコ動画iOSアプリの UX・マネタイズ・技術の話
 
Redmineプラグイン導入・開発入門
Redmineプラグイン導入・開発入門Redmineプラグイン導入・開発入門
Redmineプラグイン導入・開発入門
 
iOSアプリにおけるリリースフローとCI環境
iOSアプリにおけるリリースフローとCI環境iOSアプリにおけるリリースフローとCI環境
iOSアプリにおけるリリースフローとCI環境
 
Ossを使ったazureでのdev ops
Ossを使ったazureでのdev opsOssを使ったazureでのdev ops
Ossを使ったazureでのdev ops
 

Mehr von 健一 辰濱

地方創生ワカモノ会合
地方創生ワカモノ会合地方創生ワカモノ会合
地方創生ワカモノ会合健一 辰濱
 
Google Analytics のデータ分析ハンズオン
Google Analytics のデータ分析ハンズオンGoogle Analytics のデータ分析ハンズオン
Google Analytics のデータ分析ハンズオン健一 辰濱
 
Sansan Tech Meetup Androidエンジニアが振り返る Google I/O
 Sansan Tech Meetup Androidエンジニアが振り返る Google I/O   Sansan Tech Meetup Androidエンジニアが振り返る Google I/O
Sansan Tech Meetup Androidエンジニアが振り返る Google I/O 健一 辰濱
 
知っておきたいFirebase の色んな上限について
知っておきたいFirebase の色んな上限について知っておきたいFirebase の色んな上限について
知っておきたいFirebase の色んな上限について健一 辰濱
 
Android 開発の昔と今
Android 開発の昔と今Android 開発の昔と今
Android 開発の昔と今健一 辰濱
 
Firebase Extensions はじめの一歩
Firebase Extensions はじめの一歩Firebase Extensions はじめの一歩
Firebase Extensions はじめの一歩健一 辰濱
 
Firebase & BigQuery で Android アプリの成⻑を支える
Firebase & BigQuery で Android アプリの成⻑を支えるFirebase & BigQuery で Android アプリの成⻑を支える
Firebase & BigQuery で Android アプリの成⻑を支える健一 辰濱
 
GDG DevFest Tokyo 2019 Day2 Special Hands-on
GDG DevFest Tokyo 2019 Day2 Special Hands-onGDG DevFest Tokyo 2019 Day2 Special Hands-on
GDG DevFest Tokyo 2019 Day2 Special Hands-on健一 辰濱
 
Firebase Summit 2019 Recap
Firebase Summit 2019 RecapFirebase Summit 2019 Recap
Firebase Summit 2019 Recap健一 辰濱
 
Cloud Firestore を使って、Polling をやめたい話
Cloud Firestore を使って、Polling をやめたい話Cloud Firestore を使って、Polling をやめたい話
Cloud Firestore を使って、Polling をやめたい話健一 辰濱
 
Firebase hands on in Matsuyama
Firebase hands on in MatsuyamaFirebase hands on in Matsuyama
Firebase hands on in Matsuyama健一 辰濱
 
インドのインターネット環境 との戦い方
インドのインターネット環境との戦い方インドのインターネット環境との戦い方
インドのインターネット環境 との戦い方健一 辰濱
 
インドの低速なネットワーク環境の攻略法
インドの低速なネットワーク環境の攻略法インドの低速なネットワーク環境の攻略法
インドの低速なネットワーク環境の攻略法健一 辰濱
 
DroidKaigi 2018 参加報告会 Closing
DroidKaigi 2018 参加報告会 ClosingDroidKaigi 2018 参加報告会 Closing
DroidKaigi 2018 参加報告会 Closing健一 辰濱
 
企業スポンサー
企業スポンサー企業スポンサー
企業スポンサー健一 辰濱
 
参加したセッションの ピックアップ
参加したセッションのピックアップ参加したセッションのピックアップ
参加したセッションの ピックアップ健一 辰濱
 
CFP(Call For Paper) を出す話
CFP(Call For Paper)を出す話CFP(Call For Paper)を出す話
CFP(Call For Paper) を出す話健一 辰濱
 
DroidKaigi 2018 参加報告会
DroidKaigi 2018 参加報告会DroidKaigi 2018 参加報告会
DroidKaigi 2018 参加報告会健一 辰濱
 
DroidKaigi アプリの内部を見る
DroidKaigi アプリの内部を見るDroidKaigi アプリの内部を見る
DroidKaigi アプリの内部を見る健一 辰濱
 
Java で書かれた Android アプリに Kotlin を適用させていく
Java で書かれた Android アプリに Kotlin を適用させていくJava で書かれた Android アプリに Kotlin を適用させていく
Java で書かれた Android アプリに Kotlin を適用させていく健一 辰濱
 

Mehr von 健一 辰濱 (20)

地方創生ワカモノ会合
地方創生ワカモノ会合地方創生ワカモノ会合
地方創生ワカモノ会合
 
Google Analytics のデータ分析ハンズオン
Google Analytics のデータ分析ハンズオンGoogle Analytics のデータ分析ハンズオン
Google Analytics のデータ分析ハンズオン
 
Sansan Tech Meetup Androidエンジニアが振り返る Google I/O
 Sansan Tech Meetup Androidエンジニアが振り返る Google I/O   Sansan Tech Meetup Androidエンジニアが振り返る Google I/O
Sansan Tech Meetup Androidエンジニアが振り返る Google I/O
 
知っておきたいFirebase の色んな上限について
知っておきたいFirebase の色んな上限について知っておきたいFirebase の色んな上限について
知っておきたいFirebase の色んな上限について
 
Android 開発の昔と今
Android 開発の昔と今Android 開発の昔と今
Android 開発の昔と今
 
Firebase Extensions はじめの一歩
Firebase Extensions はじめの一歩Firebase Extensions はじめの一歩
Firebase Extensions はじめの一歩
 
Firebase & BigQuery で Android アプリの成⻑を支える
Firebase & BigQuery で Android アプリの成⻑を支えるFirebase & BigQuery で Android アプリの成⻑を支える
Firebase & BigQuery で Android アプリの成⻑を支える
 
GDG DevFest Tokyo 2019 Day2 Special Hands-on
GDG DevFest Tokyo 2019 Day2 Special Hands-onGDG DevFest Tokyo 2019 Day2 Special Hands-on
GDG DevFest Tokyo 2019 Day2 Special Hands-on
 
Firebase Summit 2019 Recap
Firebase Summit 2019 RecapFirebase Summit 2019 Recap
Firebase Summit 2019 Recap
 
Cloud Firestore を使って、Polling をやめたい話
Cloud Firestore を使って、Polling をやめたい話Cloud Firestore を使って、Polling をやめたい話
Cloud Firestore を使って、Polling をやめたい話
 
Firebase hands on in Matsuyama
Firebase hands on in MatsuyamaFirebase hands on in Matsuyama
Firebase hands on in Matsuyama
 
インドのインターネット環境 との戦い方
インドのインターネット環境との戦い方インドのインターネット環境との戦い方
インドのインターネット環境 との戦い方
 
インドの低速なネットワーク環境の攻略法
インドの低速なネットワーク環境の攻略法インドの低速なネットワーク環境の攻略法
インドの低速なネットワーク環境の攻略法
 
DroidKaigi 2018 参加報告会 Closing
DroidKaigi 2018 参加報告会 ClosingDroidKaigi 2018 参加報告会 Closing
DroidKaigi 2018 参加報告会 Closing
 
企業スポンサー
企業スポンサー企業スポンサー
企業スポンサー
 
参加したセッションの ピックアップ
参加したセッションのピックアップ参加したセッションのピックアップ
参加したセッションの ピックアップ
 
CFP(Call For Paper) を出す話
CFP(Call For Paper)を出す話CFP(Call For Paper)を出す話
CFP(Call For Paper) を出す話
 
DroidKaigi 2018 参加報告会
DroidKaigi 2018 参加報告会DroidKaigi 2018 参加報告会
DroidKaigi 2018 参加報告会
 
DroidKaigi アプリの内部を見る
DroidKaigi アプリの内部を見るDroidKaigi アプリの内部を見る
DroidKaigi アプリの内部を見る
 
Java で書かれた Android アプリに Kotlin を適用させていく
Java で書かれた Android アプリに Kotlin を適用させていくJava で書かれた Android アプリに Kotlin を適用させていく
Java で書かれた Android アプリに Kotlin を適用させていく
 

アプリ開発作業の効率改善

  • 2. Copyright © 2014 Sansan, Inc. All rights reserved. > Agenda 1 • 自己紹介 • テスト自動化 • テスト以外の作業の自動化 • デザイナとの連携 • iOS / Android で同じ仕様のアプリを効率良く作るた めの工夫
  • 4. Copyright © 2014 Sansan, Inc. All rights reserved. > 自己紹介 3 • 辰濱健一( kenichi.tatsuhama) • Sansan 株式会社 Sansan 開発部 • 神山ラボ勤務(徳島現地採用) • Android 版 Sansan アプリ実装担当 &アプリチームリーダ • 通勤電車を避け、3社連続徳島勤務中 • 趣味 • 音楽 • エレクトーン、トランペット、篠笛(阿波踊り) • 旅行 • 黒部立山アルペンルートや伊豆諸島がお気に入りスポット • 次は小笠原諸島に行きたい
  • 5. Copyright © 2014 Sansan, Inc. All rights reserved. > Sansan株式会社 4 モバイルアプリエンジニアは、2つの事業部で6人のメンバー ・Sansan … 2名 ・Eight … 4名
  • 6. Copyright © 2014 Sansan, Inc. All rights reserved. > 神山ラボ 5 • 築70年の木造古民家(3棟) • 略歴 • 2010年設置 • 〜2013/11:合宿所 • 2013/11〜:常駐メンバーのいる開発拠点に • 家具家電、畑付き、風呂トイレセパレート • 家賃:数万円 / 月 • インターネット接続:光回線 • 最寄り駅まで徒歩15分 • 改装OK物件
  • 7. Copyright © 2014 Sansan, Inc. All rights reserved. > 神山での仕事(良いこと) 6 • 通勤が楽、静かで広々していて、高いパフォーマンス の状態で仕事に集中できる • 業務上必要なコミュニケーションは、Github, Skype, Slack 等のツールで意外となんとでもなる
  • 8. Copyright © 2014 Sansan, Inc. All rights reserved. > 神山での仕事(難点) 7 • ネットワーク状態にコミュニケーションが左右される • 開発チーム外の人に直接話しかけられない • 視察・取材などの業務も伴う • 自然環境との戦い(虫、カビ、寒さ…)
  • 10. Copyright © 2014 Sansan, Inc. All rights reserved. > テスト自動化との関わり 9 • 前々職時代 • 正確さと性能が求められるプロダクト(25名チーム)に おいて、高速化担当にアサインされる誰の箇所であれ、 とにかく遅い箇所は改修して、高速化することがミッ ション • 但し、品質面でも性能面でもデグレードは許されない • QA チームはあったが、細かい部分まで手は回らない… • なのにテスト環境・パフォーマンス観測環境がない。。。 → UWSC を用いて、UI 自動テストを導入
  • 11. Copyright © 2014 Sansan, Inc. All rights reserved. > テスト自動化との関わり 10 • Sansan 株式会社にて • iOS 担当:1名、Android 担当:1名 • 法人向け Sansan サービスには Web 版があるものの、 アプリの利用促進がなされている • 海外展開においては、開発のスピード感が求められてい る • 毎年新しい OS 、新しい機種での動作確認が必要 • なのに QA チームはない… → スマホアプリでも UI 自動テストの導入を!
  • 12. Copyright © 2014 Sansan, Inc. All rights reserved. > スマホアプリの自動テストライブラリ 11 - Android 専用 - Robotium - monkeyrunner - Espresso - など… - iOS 専用 - KIF - Kiwi - など… - ハイブリッド - Appium - Calabash - MonkeyTALK - など…
  • 13. Copyright © 2014 Sansan, Inc. All rights reserved. > 選定したライブラリ 12 • Android 版 … Robotium • Android 実装と同じ Java 言語で記述 • アプリケーション内部のオブジェクトを参照できる • UI に見えない内部の値のチェックもできる • DB にもアクセスできるのでテストケースを動的生成できる → サーバ DB 状態の変更にも強い • ただし、リリースビルドでは使えない… ※リリースビルドでも使える appium などのライブラリもある • iOS 版 … KIF • 社内他チームでも先行調査をしており、ノウハウ共有の ためにライブラリを合わせた
  • 14. Copyright © 2014 Sansan, Inc. All rights reserved. > テスト項目 13 • まずは「広く浅く」のリグレッションテストを自動化 • 主要画面の主要機能のみ自動化 • 例) • ログイン画面 • ログインできること ← これだけ • パスワードが空の時にエラーが表示されること ← しない • 未登録ユーザの時エラーが表示されること ← しない • ユーザ一覧画面 • ユーザタップで名刺一覧画面に遷移すること • 名刺一覧画面 • 名刺タップで名刺詳細画面に遷移すること • バックキー押下でユーザ一覧画面に戻ること
  • 15. Copyright © 2014 Sansan, Inc. All rights reserved. > テストコードの例 14 - ログイン処理 - メールアドレス入力欄を取得 - パスワード入力欄を取得 - メールアドレスを入力 - パスワードを入力 - ログインボタンを押す テストライブラリをラッ プして可読性確保!
  • 16. Copyright © 2014 Sansan, Inc. All rights reserved. > デモ動画 15 • 2014/11 時点の動画です • http://youtu.be/scY_RPgfxeY • 4分ぐらいありますが、発表時間の都合上ちょっとだ け…
  • 17. Copyright © 2014 Sansan, Inc. All rights reserved. > 自動テスト導入の効果 16 • デグレードの早期発見・防止につながった • 実際に開発中のミスを検出し、デグレードを未然に防いだ • 開発サーバのデグレードを検出した • 大規模な修正も行いやすくなった • 何度でもテストを簡単に実行できる • 作業効率UP • 離席中・昼食中・ミーティング中にでもテストができる • テストに割く時間を開発に充てることができる • 新しい OS が出てもテスト工数を割かなくて良い
  • 18. Copyright © 2014 Sansan, Inc. All rights reserved. > アドバイス 17 • UI テストは仕様変更に弱いので、書きすぎない • SLEEP じゃなくて WAIT で • 「通信が終わったら」「ぐるぐるが消えたら」… • 操作の限界はあるので、適度にあきらめること • 届いたメールの URL をクリックしてブラウザに…!? • アプリを終了させて再起動した時に…? • テストの目的で分割する • スモークテスト … 広く浅く、最低限の確認 • 機能テスト … その機能の本格的な確認 • スクリーンショット収集 • パフォーマンス計測
  • 19. Copyright © 2014 Sansan, Inc. All rights reserved. > さらなるテストに向けて… 18 • 操作中に取っている各種ログの活用 • テスト専用使い捨て環境の用意
  • 20. Copyright © 2014 Sansan, Inc. All rights reserved. > 推移時間(イメージ) 19 • パフォーマンス改善の結果確認、性能デグレの検出が できる(かも?) • 通信状態やサーバ状態に大きく左右される気がする… 0 2 4 6 8 10 12 2015/2/27 2015/2/28 2015/3/1 2015/3/2 2015/3/3 2015/3/4 2015/3/5 2015/3/6 ログイン処理 初回同期 名刺画像送信 詳細データ取得 高画質画像データ取得 手動同期処理
  • 21. Copyright © 2014 Sansan, Inc. All rights reserved. > 通信回数の分析 20 - 呼び出し毎に API名と実行時間を csv ファイルに出力 - Excel のピボットテーブルで集計 - iOS / Android で同じ仕組みを入れれば、 同じ操作で API 呼び出しの違いがわかる! そんなに呼び 出す必要ある の…? サーバ負荷削減のためのボトルネック分析が容易になる Excelマクロ
  • 22. Copyright © 2014 Sansan, Inc. All rights reserved. > 通信回数の分析(推移) 21 - さっきのデータを実行毎に集計する 呼び出し回数削減施策導入
  • 23. Copyright © 2014 Sansan, Inc. All rights reserved. > テスト用の使い捨て環境 22 • 誰もが触る開発環境で自動テストを行っており、他者 によるデータの追加・削除が行われる • そのデータの存在を前提としているテストコードの データが削除されていて失敗したり、件数が増えて同 じ環境でのパフォーマンス計測が行えない • → Docker を用いて、テスト用に毎回同じ環境を作 れる仕組みを導入 • 特殊なデータや条件による過去の不具合が再現しない テストも確認可能に!
  • 25. Copyright © 2014 Sansan, Inc. All rights reserved. > テスト以外の作業の自動化 24 • 本番ビルド(は、もちろんなので省略) • スクリーンショット収集ツール • イベントトラッキング仕様書と実装のギャップの洗い 出しツール • iOS の未使用文言洗い出しツール • デザインパーツ向けツール
  • 26. Copyright © 2014 Sansan, Inc. All rights reserved. > スクリーンショット収集ツール 25 • 自動テストライブラリを使って、各画面に遷移しスク リーンショットを保存するだけのテストを実行 • 言語環境(日本語 / 英語)を切り替えてキャプチャ • 色んな端末で実行して結果を集約
  • 27. Copyright © 2014 Sansan, Inc. All rights reserved. > スクショ一覧 26 画面名→ 画面名→ 画面名→ Nexus4 Nexus5 デザイン指示画像(期待値) ※元サイズが違うけど、 今は同じサイズで 表示されている 目で比較する! デザイナのチェックや 意図しないレイアウト崩れの 確認が楽になりました
  • 28. Copyright © 2014 Sansan, Inc. All rights reserved. > イベント仕様が実装されているかのチェック 27 • Google Spread Sheet にイベントトラッキング用の イベント名一覧の仕様書がある • その1つ1つのトラッキングイベント名を、ソースコー ド内全検索してヒットするかチェック • 仕様にあるが実装にないイベントの検出が容易になり、 実装漏れの検出が可能に! • Android / iOS 両方に適用可能 ※ Ruby でツールを自作 Android iOS
  • 29. Copyright © 2014 Sansan, Inc. All rights reserved. > iOS 未使用文言洗い出しツール 28 • 基本的には、前述と同じ仕組み。 • Localizable.string のキー部分を抜き出して、ソース コード全行検索 (Android の Lint みたいなのがあればいいのに…)
  • 30. Copyright © 2014 Sansan, Inc. All rights reserved. > デザインパーツ向けツール1 29 「PNG や JPEG 画像を一括最適化するツール」 • 最適化をかけると、 • アプリサイズの削減 • Webページの場合、通信量の削減&高速化 • Git リポジトリの不可削減 などのメリットがある • 一括最適化ツールはあるが、TinyPNG が圧縮率 で勝っているので、TinyPNG の API にフォルダ 以下全部渡すツールを Ruby で作成
  • 31. Copyright © 2014 Sansan, Inc. All rights reserved. > デザインパーツ向けツール2(製作途中…) 30 「サイズチェックツール」 • Android では、xh, xxh などフォルダに分けて、それ ぞれの画像をデザイナから受け取っている • 「xh フォルダにあるけど、xxh フォルダにない」 • 「xh/icon.png と、xxh/icon.png のサイズに矛盾が ある」 • これらを検出するツールを作成中… (まぁ、Lint がやってくれますけどね…)
  • 33. Copyright © 2014 Sansan, Inc. All rights reserved. > 読み合わせ会 32 • 各種ガイドラインの読み合わせ会を実施 • Android は「マテリアルデザインガイドライン」 • iOS は 「ヒューマンインターフェイスガイドライン」 • 参加者は、開発者&デザイナ • ただ読み合わすだけではなく、実機を持って参加 • 「このアプリのこの動きがそれだ!」 • 「このアプリのこの動きはガイドラインに反してるね」 など開発者&デザイナでライトにに話をしながら進める • デザイナの作業の中で自動化できる箇所はサポート • 前述の一括最適化など…
  • 34. > iOS / Android で同じ仕様のア プリを効率良く作るための工夫 2015/07/09
  • 35. Copyright © 2014 Sansan, Inc. All rights reserved. > 先行実装と移植 34 • 例)iOS で先行実装して、Android は移植する • 効果 • 移植する側の OS 担当者は、試行錯誤の必要がない • 設計が似ることによる、コードレビューや調査のコストダウン • でも、スケジュールによっては難しい… • 規模が大きいけど、同時リリースしたいときとか • 可能なら、機能担当制 • この機能はAさん担当、iOS も Android も作る • iOS & Android 両方のスキルが必要…
  • 36. Copyright © 2014 Sansan, Inc. All rights reserved. > UI 先行とロジック先行 35 • 対応工数が1ヶ月&同時リリースしたい改修で実施中 • iOS では、UIモックを先行作成 • Android では、API との通信部分やエラーチェックな どのロジックを先行実装 • 後の実装は双方を参考に • 効果 • モックにより、UI/UX の手戻りは最小限に • 仕様考慮漏れの早期洗いだしに
  • 37. Copyright © 2014 Sansan, Inc. All rights reserved. > ログの活用 36 • iOS / Android とも、開発版のみで共通のログを出力 する • 例) • 通信(パラメータも含む) • イベントトラッキング • これらを突き合わせることで、 相互の動作確認・実装差異 の確認ができる 各種ログ 突き合わせ
  • 38. Copyright © 2014 Sansan, Inc. All rights reserved. > 同じ操作を iOS / Android で行う 37 • 基本的に同じ仕様なので同じ結果になるはず… 同じ検索文字列で、同じ順番で検索結果が得られているかどうか (左:Android、右:iOS)
  • 40. Copyright © 2014 Sansan, Inc. All rights reserved. 39 人数が少ないので、作業効率化が必要でした。 逆に、人数が少なかったから、効率化について色々と取 り組み、開発作業の効率化について取り組むことができ ました。 さらに開発スピードを上げるためには… > 最後に…
  • 41. Copyright © 2014 Sansan, Inc. All rights reserved. 40 Sansanは一緒に新しい価値を作っていく 仲間をさがしています。 Ruby, Ruby on Rails (Webアプリケーション) C#,ASP.NET MVC (Webアプリケーション) iOS / Android アプリ - 個人向け名刺管理アプリ「Eight」 - 名刺データ化分散処理システム - 法人向け名刺管理サービス「Sansan」 - 法人向け名刺管理サービス 「Sansan」 - 個人向け名刺管理アプリ「Eight」 エンジニア募集中 Sansan 採用 検索 recruit@sansan.com まで お気軽にご連絡ください。 興味のある方は
  • 42. Copyright © 2014 Sansan, Inc. All rights reserved. > 関連資料 41 • 「Robotium を使った UI テストとレイアウト確認の 効率化」 http://www.slideshare.net/kenichitatsuhama/robotium-ui もう少しだけ詳しい、自動化の話 • 「Rubyを使ったスマホアプリのUIテスト」 http://www.slideshare.net/kenichitatsuhama/rubyui リリースビルドでも使える自動テストライブラリを調べた話