Amebaの
ネイティブ開発
株式会社サイバーエージェント
藤原 聖

#devsumiB
藤原 聖 fujiwara_satoru
Android Developer
facebook.com/satoru.fujiwara

東京大学
情報工学科

ベンチャー
Android

2011年9月
中途入社
藤原 聖 fujiwara_satoru
CyberAgent Inc.

チーフネイティブエンジニア
アメーバアプリ
プラットフォーム&コミュニティ
Androidお兄さん
Android / iOS
facebook.com/atom.cyberagent
開発合宿
ネイティブエンジニア以外のエ
ンジニア向け
Ameba
ネイティブ
体制
ツール
取り組み
体制
プラットフォーム&ブログ

ゲーム (7 Apps+)

コミュニティ (30 Apps+)
プラットフォーム&ブログ
Android

iOS

QA

UUUUUUUU UU
10人
Ameba
SDK

1App
ゲーム
Ameba Native Studio
Unity / Cocos2d-x

Unity plugin

UUUUU

UU

5人+
1App
ゲーム
GP室
iOS

Android

UUUU UUUU
8人+
…

5Apps+
コミュニティ
ネイティブスタジオ
Android

iOS

UUUUU
UUUUU

UUUUU

UUUUU

15人+

30Apps+
…
プラットフォーム/ゲーム(Native Studio)

UUUUU

r
o

ro

1アプリ

複数アプリ

UUUUUUUUU
コミュニティ/ゲーム(GP室)
複数アプリ

UUUUUUUUU
コミュニティ/ゲーム(GP室)
Android

iOS

UUUUU
UUUUU

UUUUU

UUUUU

…
Android

iOS

UUUUU
UUUUU

UUUUU

UUUUU

…
Android

iOS

UUUUU
UUUUU

UUUUU

UUUUU

…
Android

iOS

UUUUU
UUUUU

UUUUU

UUUUU

…
Android

iOS

UUUUU
UUUUU

UUUUU

UUUUU

…
運用アプリ開発のタスクの波
新規のスピードリリース
本日のStory
多くのネイティブアプリを
複数人で流動的に開発する時に、

どのようにして
「スピード」と「クオリティ」
を担保するか?
ツール
複数人開発
Pull Request
git-flow
r
o

ro

GitHub-flow
git-flow + PullRequest
upstream

fork

master

origin
develop

develop
clone

remote add
local

develop

より詳しくは
http://ameb...
git-flow + PullRequest
リリース

upstream
master

origin
PullRequest

feature/

develop

Pull

local
develop
feature/

より詳しくは
h...
GitHub-flow + PullRequest
リリース

upstream

PullRequest

master

Pull

origin
feature/

local
master
feature/

厳密にはGitHub-flow...
git-flow
d
n

dn

a

a

GitHub-flow
PullRequestでコードレビュー
upstreamに不要なbranchがない
スピード
クオリティ
;
Crashlytics
BugSense
Crittercism

今のところこれ
スピード
クオリティ
Jenkins?
配布の自動化
AppZone

github.com/CyberAgent/AppZone
レビューの自動化
Pull Reqしました!
静的コード解析
Lint
CheckStyle
FindBug
PMD
cpd
可視化&一元化
アンケート
Android
Developer
r
o

ro

iOS
Developer
Sorry… Android only
Eclipse
r
o

ro

Android Studio
環境切り替え(gradle)
sourceSets {!
main {!
manifest.srcFile 'AndroidManifest.xml'!
java.srcDirs = ['src/main/java']!
resources.s...
jarの生成
android.libraryVariants.all { variant ->!
    def name = variant.buildType.name!
    if (name.equals(com.android.bu...
deploy maven
apply plugin: 'maven'!

!

uploadArchives {!
    repositories {!
        mavenDeployer {!
            reposit...
Android Studio
but…
Eclipse
0.4.2 (early access preview)
Save Action
ant
Save Action
auto format & clean up
環境切り替え(ant)
<property name="source.dir" value="bin/buildsrc" />!
!
<target name="product">!
<property name="buildenv" valu...
atom-bootstrap
.settings
custom_rules.xml
開発環境の統一
デバッグ
Sorry… Android only
Smartphone Test Farm
Smartphone Test Farm
•

ブラウザからリアルタイムでAndroid実
機デバッグ

•

ブラウザ/WebView/logcat/apk/
ScreenShot/etc

•

一部オープンソース

•

github.c...
Pull Request で複数人開発
アプリのクラッシュを一元管理
AppZoneでアプリ配布
自動でコードレビュー&一元管理
auto format / clean up
様々な端末を同時にDebug
誰が作っても同じ様に
誰でも作れる
本日のStory
多くのネイティブアプリを
複数人で流動的に開発する時に、

どのようにして
「スピード」と「クオリティ」
を担保するか?
one of the

Answer
全部のアプリを同じ
様に作る
一人のスペシャリス
トが全部作る様に
取り組み
検証指令塔
SMAq (テスト)
CS
セキュリティ診断
K点チェック
アプリリリース判定
アプリのクオリティをチェック
イノテック会議
流動的な体制

SMAq

K点チェック
エンジニア主導
みんなを巻き込む
多くのネイティブアプリを
複数人で流動的に開発する時に、

どのようにして
「スピード」と「クオリティ」
を担保するか?
一人のスペシャリス
トが全部作る?
Action!
みんなで協力できる
形を
みんなで考える
Thank you!
Ask The Speaker
20140214_devsumi_ameba_native
20140214_devsumi_ameba_native
20140214_devsumi_ameba_native
20140214_devsumi_ameba_native
20140214_devsumi_ameba_native
20140214_devsumi_ameba_native
20140214_devsumi_ameba_native
20140214_devsumi_ameba_native
20140214_devsumi_ameba_native
20140214_devsumi_ameba_native
Upcoming SlideShare
Loading in …5
×

20140214_devsumi_ameba_native

1,243 views

Published on

Published in: Technology
1 Comment
4 Likes
Statistics
Notes
No Downloads
Views
Total views
1,243
On SlideShare
0
From Embeds
0
Number of Embeds
216
Actions
Shares
0
Downloads
3
Comments
1
Likes
4
Embeds 0
No embeds

No notes for slide

20140214_devsumi_ameba_native

  1. 1. Amebaの ネイティブ開発 株式会社サイバーエージェント 藤原 聖 #devsumiB
  2. 2. 藤原 聖 fujiwara_satoru Android Developer facebook.com/satoru.fujiwara 東京大学 情報工学科 ベンチャー Android 2011年9月 中途入社
  3. 3. 藤原 聖 fujiwara_satoru CyberAgent Inc. チーフネイティブエンジニア アメーバアプリ プラットフォーム&コミュニティ Androidお兄さん
  4. 4. Android / iOS facebook.com/atom.cyberagent
  5. 5. 開発合宿 ネイティブエンジニア以外のエ ンジニア向け
  6. 6. Ameba ネイティブ
  7. 7. 体制 ツール 取り組み
  8. 8. 体制
  9. 9. プラットフォーム&ブログ ゲーム (7 Apps+) コミュニティ (30 Apps+)
  10. 10. プラットフォーム&ブログ Android iOS QA UUUUUUUU UU 10人 Ameba SDK 1App
  11. 11. ゲーム Ameba Native Studio Unity / Cocos2d-x Unity plugin UUUUU UU 5人+ 1App
  12. 12. ゲーム GP室 iOS Android UUUU UUUU 8人+ … 5Apps+
  13. 13. コミュニティ ネイティブスタジオ Android iOS UUUUU UUUUU UUUUU
 UUUUU 15人+ 30Apps+ …
  14. 14. プラットフォーム/ゲーム(Native Studio) UUUUU r o ro 1アプリ 複数アプリ UUUUUUUUU コミュニティ/ゲーム(GP室)
  15. 15. 複数アプリ UUUUUUUUU コミュニティ/ゲーム(GP室)
  16. 16. Android iOS UUUUU UUUUU UUUUU
 UUUUU …
  17. 17. Android iOS UUUUU UUUUU UUUUU
 UUUUU …
  18. 18. Android iOS UUUUU UUUUU UUUUU
 UUUUU …
  19. 19. Android iOS UUUUU UUUUU UUUUU
 UUUUU …
  20. 20. Android iOS UUUUU UUUUU UUUUU
 UUUUU …
  21. 21. 運用アプリ開発のタスクの波 新規のスピードリリース
  22. 22. 本日のStory
  23. 23. 多くのネイティブアプリを 複数人で流動的に開発する時に、 どのようにして 「スピード」と「クオリティ」 を担保するか?
  24. 24. ツール
  25. 25. 複数人開発
  26. 26. Pull Request
  27. 27. git-flow r o ro GitHub-flow
  28. 28. git-flow + PullRequest upstream fork master origin develop develop clone remote add local develop より詳しくは http://ameblo.jp/ca-1pixel/entry-11658373787.html
  29. 29. git-flow + PullRequest リリース upstream master origin PullRequest feature/ develop Pull local develop feature/ より詳しくは http://ameblo.jp/ca-1pixel/entry-11658373787.html Push
  30. 30. GitHub-flow + PullRequest リリース upstream PullRequest master Pull origin feature/ local master feature/ 厳密にはGitHub-flowではないです…「のようなもの」 Push
  31. 31. git-flow d n dn a a GitHub-flow
  32. 32. PullRequestでコードレビュー upstreamに不要なbranchがない
  33. 33. スピード クオリティ
  34. 34. ;
  35. 35. Crashlytics BugSense Crittercism 今のところこれ
  36. 36. スピード クオリティ
  37. 37. Jenkins?
  38. 38. 配布の自動化
  39. 39. AppZone github.com/CyberAgent/AppZone
  40. 40. レビューの自動化
  41. 41. Pull Reqしました!
  42. 42. 静的コード解析
  43. 43. Lint CheckStyle FindBug PMD cpd
  44. 44. 可視化&一元化
  45. 45. アンケート
  46. 46. Android Developer r o ro iOS Developer
  47. 47. Sorry… Android only
  48. 48. Eclipse r o ro Android Studio
  49. 49. 環境切り替え(gradle) sourceSets {! main {! manifest.srcFile 'AndroidManifest.xml'! java.srcDirs = ['src/main/java']! resources.srcDirs = ['src/product']! res.srcDirs = ['res']! assets.srcDirs = ['assets']! }! develop {! resources.srcDirs = ['src/develop']! }! staging {! resources.srcDirs = ['src/staging']! }! product {! resources.srcDirs = ['src/product']! }! }
  50. 50. jarの生成 android.libraryVariants.all { variant ->!     def name = variant.buildType.name!     if (name.equals(com.android.builder.BuilderConstants.DEBUG)) {!         return;!     }!     def task = project.tasks.create "jar${name.capitalize()}", Jar!     task.dependsOn variant.javaCompile!     task.from variant.javaCompile.destinationDir!     task.from android.sourceSets.main.resources!     artifacts.add('archives', task);! } 参考 http://stackoverflow.com/questions/19307341/android-library-gradle-release-jar
  51. 51. deploy maven apply plugin: 'maven'! ! uploadArchives {!     repositories {!         mavenDeployer {!             repository url: "https://maven-server-url"!             pom.version = '1.0.0'!             pom.groupId = 'atom.commons'!             pom.artifactId = 'atom-commons-util'!         }!     }! }
  52. 52. Android Studio
  53. 53. but…
  54. 54. Eclipse
  55. 55. 0.4.2 (early access preview) Save Action ant
  56. 56. Save Action auto format & clean up
  57. 57. 環境切り替え(ant) <property name="source.dir" value="bin/buildsrc" />! ! <target name="product">! <property name="buildenv" value="product" />! <antcall target="dobuild"/>! </target>! ! <target name="staging">! <property name="buildenv" value="staging" />! <antcall target="dobuild"/>! </target>! ! <target name="develop">! <property name="buildenv" value="develop" />! <antcall target="dobuild"/>! <antcall target="dolint"/>! </target>! ! <target name="-pre-build">! <antcall target="clean"/>! <property name="buildenv" value="develop" />! <copy todir="${source.dir}">! <fileset dir="src/main/java"/>! <fileset dir="src/${buildenv}"/>! </copy>! </target>
  58. 58. atom-bootstrap .settings custom_rules.xml
  59. 59. 開発環境の統一
  60. 60. デバッグ
  61. 61. Sorry… Android only
  62. 62. Smartphone Test Farm
  63. 63. Smartphone Test Farm • ブラウザからリアルタイムでAndroid実 機デバッグ • ブラウザ/WebView/logcat/apk/ ScreenShot/etc • 一部オープンソース • github.com/CyberAgent/adbkit
  64. 64. Pull Request で複数人開発 アプリのクラッシュを一元管理 AppZoneでアプリ配布 自動でコードレビュー&一元管理 auto format / clean up 様々な端末を同時にDebug
  65. 65. 誰が作っても同じ様に
  66. 66. 誰でも作れる
  67. 67. 本日のStory
  68. 68. 多くのネイティブアプリを 複数人で流動的に開発する時に、 どのようにして 「スピード」と「クオリティ」 を担保するか?
  69. 69. one of the Answer
  70. 70. 全部のアプリを同じ 様に作る
  71. 71. 一人のスペシャリス トが全部作る様に
  72. 72. 取り組み
  73. 73. 検証指令塔 SMAq (テスト) CS セキュリティ診断
  74. 74. K点チェック アプリリリース判定 アプリのクオリティをチェック
  75. 75. イノテック会議
  76. 76. 流動的な体制 SMAq K点チェック
  77. 77. エンジニア主導 みんなを巻き込む
  78. 78. 多くのネイティブアプリを 複数人で流動的に開発する時に、 どのようにして 「スピード」と「クオリティ」 を担保するか?
  79. 79. 一人のスペシャリス トが全部作る?
  80. 80. Action!
  81. 81. みんなで協力できる 形を
  82. 82. みんなで考える
  83. 83. Thank you!
  84. 84. Ask The Speaker

×