Submit Search
Upload
Conference withdevelopers 第二版
•
0 likes
•
1,619 views
Tamura Koya
Follow
conference with developers 2012 で後輩の @ginrou が発表した資料。
Read less
Read more
Technology
Report
Share
Report
Share
1 of 34
Download now
Download to read offline
Recommended
iOSのFileProtection
iOSのFileProtection
Yuichi Fujishige
クリスマス直前!HTML5 で作る♥はじめての iOS & Android アプリ開発
クリスマス直前!HTML5 で作る♥はじめての iOS & Android アプリ開発
Osamu Monoe
iOSアプリ開発 脱初心者に向けて
iOSアプリ開発 脱初心者に向けて
Kosuke Ogawa
スマホアプリ開発者のためのWeb api開発入門の入門
スマホアプリ開発者のためのWeb api開発入門の入門
Kenyu Miura
東京工業大学「ロボット技術・ロボットミドルウェア」
東京工業大学「ロボット技術・ロボットミドルウェア」
NoriakiAndo
今さら聞けない人のためのDevOps超入門 ODC2023編
今さら聞けない人のためのDevOps超入門 ODC2023編
VirtualTech Japan Inc./Begi.net Inc.
今さら聞けない人のためのDevOps超入門
今さら聞けない人のためのDevOps超入門
VirtualTech Japan Inc./Begi.net Inc.
iQONの開発手法 at iQONエンジニアセミナー
iQONの開発手法 at iQONエンジニアセミナー
Imamura Masayuki
Recommended
iOSのFileProtection
iOSのFileProtection
Yuichi Fujishige
クリスマス直前!HTML5 で作る♥はじめての iOS & Android アプリ開発
クリスマス直前!HTML5 で作る♥はじめての iOS & Android アプリ開発
Osamu Monoe
iOSアプリ開発 脱初心者に向けて
iOSアプリ開発 脱初心者に向けて
Kosuke Ogawa
スマホアプリ開発者のためのWeb api開発入門の入門
スマホアプリ開発者のためのWeb api開発入門の入門
Kenyu Miura
東京工業大学「ロボット技術・ロボットミドルウェア」
東京工業大学「ロボット技術・ロボットミドルウェア」
NoriakiAndo
今さら聞けない人のためのDevOps超入門 ODC2023編
今さら聞けない人のためのDevOps超入門 ODC2023編
VirtualTech Japan Inc./Begi.net Inc.
今さら聞けない人のためのDevOps超入門
今さら聞けない人のためのDevOps超入門
VirtualTech Japan Inc./Begi.net Inc.
iQONの開発手法 at iQONエンジニアセミナー
iQONの開発手法 at iQONエンジニアセミナー
Imamura Masayuki
今さら聞けない人のためのDevOps超入門
今さら聞けない人のためのDevOps超入門
Toru Miyahara
テスト勉強会よしおか100311 1
テスト勉強会よしおか100311 1
Hiro Yoshioka
Bringing Continuous Agile to Japan
Bringing Continuous Agile to Japan
Andy Singleton
非エンジニアのためのIT勉強会 ハイブリッドフレームワーク
非エンジニアのためのIT勉強会 ハイブリッドフレームワーク
Kaz Furukawa
Pivotal Trackerでアジャイルなプロジェクト管理
Pivotal Trackerでアジャイルなプロジェクト管理
You&I
ワンクリックデプロイ101 #ocdeploy
ワンクリックデプロイ101 #ocdeploy
Ryutaro YOSHIBA
できる!スマホアプリ:Webからはじまるアプリ
できる!スマホアプリ:Webからはじまるアプリ
Masami Yabushita
C#でiPhoneアプリ開発 with MonoTouch
C#でiPhoneアプリ開発 with MonoTouch
Shin Ise
TDDBC osaka 2012/06/02
TDDBC osaka 2012/06/02
Hiro Yoshioka
Ignite UI 2012 最新情報 jQuery Mobile 編
Ignite UI 2012 最新情報 jQuery Mobile 編
インフラジスティックス・ジャパン株式会社
今さら聞けない人のためのDevOps超入門
今さら聞けない人のためのDevOps超入門
VirtualTech Japan Inc.
Ignite ui 2012 最新情報 jQuery UI 編
Ignite ui 2012 最新情報 jQuery UI 編
Daizen Ikehara
2011 splc-using multiple feature models to design applications for mobile phones
2011 splc-using multiple feature models to design applications for mobile phones
n-yuki
スマートフォンアプリの色々自動化をはじめよう - at SonyDNA Meisters Salon 特別編
スマートフォンアプリの色々自動化をはじめよう - at SonyDNA Meisters Salon 特別編
Koji Hasegawa
これからのNOTESモバイルアプリはこう作れ
これからのNOTESモバイルアプリはこう作れ
Mitsuru Katoh
今さら聞けない人のためのDevOps超入門
今さら聞けない人のためのDevOps超入門
VirtualTech Japan Inc./Begi.net Inc.
今さら聞けない人のためのDevOps超入門
今さら聞けない人のためのDevOps超入門
VirtualTech Japan Inc./Begi.net Inc.
市場動向並びに弊社製品の今後の展望について
市場動向並びに弊社製品の今後の展望について
Ken Azuma
楽天市場で使われている技術、エンジニアに必要なコアスキルとはTechnology used in Rakuten, core skills neede...
楽天市場で使われている技術、エンジニアに必要なコアスキルとはTechnology used in Rakuten, core skills neede...
Rakuten Group, Inc.
Intalio japan special cloud workshop
Intalio japan special cloud workshop
Daisuke Sugai
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
CRI Japan, Inc.
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
WSO2
More Related Content
Similar to Conference withdevelopers 第二版
今さら聞けない人のためのDevOps超入門
今さら聞けない人のためのDevOps超入門
Toru Miyahara
テスト勉強会よしおか100311 1
テスト勉強会よしおか100311 1
Hiro Yoshioka
Bringing Continuous Agile to Japan
Bringing Continuous Agile to Japan
Andy Singleton
非エンジニアのためのIT勉強会 ハイブリッドフレームワーク
非エンジニアのためのIT勉強会 ハイブリッドフレームワーク
Kaz Furukawa
Pivotal Trackerでアジャイルなプロジェクト管理
Pivotal Trackerでアジャイルなプロジェクト管理
You&I
ワンクリックデプロイ101 #ocdeploy
ワンクリックデプロイ101 #ocdeploy
Ryutaro YOSHIBA
できる!スマホアプリ:Webからはじまるアプリ
できる!スマホアプリ:Webからはじまるアプリ
Masami Yabushita
C#でiPhoneアプリ開発 with MonoTouch
C#でiPhoneアプリ開発 with MonoTouch
Shin Ise
TDDBC osaka 2012/06/02
TDDBC osaka 2012/06/02
Hiro Yoshioka
Ignite UI 2012 最新情報 jQuery Mobile 編
Ignite UI 2012 最新情報 jQuery Mobile 編
インフラジスティックス・ジャパン株式会社
今さら聞けない人のためのDevOps超入門
今さら聞けない人のためのDevOps超入門
VirtualTech Japan Inc.
Ignite ui 2012 最新情報 jQuery UI 編
Ignite ui 2012 最新情報 jQuery UI 編
Daizen Ikehara
2011 splc-using multiple feature models to design applications for mobile phones
2011 splc-using multiple feature models to design applications for mobile phones
n-yuki
スマートフォンアプリの色々自動化をはじめよう - at SonyDNA Meisters Salon 特別編
スマートフォンアプリの色々自動化をはじめよう - at SonyDNA Meisters Salon 特別編
Koji Hasegawa
これからのNOTESモバイルアプリはこう作れ
これからのNOTESモバイルアプリはこう作れ
Mitsuru Katoh
今さら聞けない人のためのDevOps超入門
今さら聞けない人のためのDevOps超入門
VirtualTech Japan Inc./Begi.net Inc.
今さら聞けない人のためのDevOps超入門
今さら聞けない人のためのDevOps超入門
VirtualTech Japan Inc./Begi.net Inc.
市場動向並びに弊社製品の今後の展望について
市場動向並びに弊社製品の今後の展望について
Ken Azuma
楽天市場で使われている技術、エンジニアに必要なコアスキルとはTechnology used in Rakuten, core skills neede...
楽天市場で使われている技術、エンジニアに必要なコアスキルとはTechnology used in Rakuten, core skills neede...
Rakuten Group, Inc.
Intalio japan special cloud workshop
Intalio japan special cloud workshop
Daisuke Sugai
Similar to Conference withdevelopers 第二版
(20)
今さら聞けない人のためのDevOps超入門
今さら聞けない人のためのDevOps超入門
テスト勉強会よしおか100311 1
テスト勉強会よしおか100311 1
Bringing Continuous Agile to Japan
Bringing Continuous Agile to Japan
非エンジニアのためのIT勉強会 ハイブリッドフレームワーク
非エンジニアのためのIT勉強会 ハイブリッドフレームワーク
Pivotal Trackerでアジャイルなプロジェクト管理
Pivotal Trackerでアジャイルなプロジェクト管理
ワンクリックデプロイ101 #ocdeploy
ワンクリックデプロイ101 #ocdeploy
できる!スマホアプリ:Webからはじまるアプリ
できる!スマホアプリ:Webからはじまるアプリ
C#でiPhoneアプリ開発 with MonoTouch
C#でiPhoneアプリ開発 with MonoTouch
TDDBC osaka 2012/06/02
TDDBC osaka 2012/06/02
Ignite UI 2012 最新情報 jQuery Mobile 編
Ignite UI 2012 最新情報 jQuery Mobile 編
今さら聞けない人のためのDevOps超入門
今さら聞けない人のためのDevOps超入門
Ignite ui 2012 最新情報 jQuery UI 編
Ignite ui 2012 最新情報 jQuery UI 編
2011 splc-using multiple feature models to design applications for mobile phones
2011 splc-using multiple feature models to design applications for mobile phones
スマートフォンアプリの色々自動化をはじめよう - at SonyDNA Meisters Salon 特別編
スマートフォンアプリの色々自動化をはじめよう - at SonyDNA Meisters Salon 特別編
これからのNOTESモバイルアプリはこう作れ
これからのNOTESモバイルアプリはこう作れ
今さら聞けない人のためのDevOps超入門
今さら聞けない人のためのDevOps超入門
今さら聞けない人のためのDevOps超入門
今さら聞けない人のためのDevOps超入門
市場動向並びに弊社製品の今後の展望について
市場動向並びに弊社製品の今後の展望について
楽天市場で使われている技術、エンジニアに必要なコアスキルとはTechnology used in Rakuten, core skills neede...
楽天市場で使われている技術、エンジニアに必要なコアスキルとはTechnology used in Rakuten, core skills neede...
Intalio japan special cloud workshop
Intalio japan special cloud workshop
Recently uploaded
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
CRI Japan, Inc.
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
WSO2
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
CRI Japan, Inc.
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NTT DATA Technology & Innovation
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
Toru Tamaki
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
atsushi061452
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Hiroshi Tomioka
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
sn679259
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
Toru Tamaki
Recently uploaded
(12)
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
Conference withdevelopers 第二版
1.
mixiにおけるiPhoneアプリ開発 株式会社ミクシィ 武田祐一
2.
略歴 • 武田祐一 •
株式会社ミクシィ エンジニア • 2012年4月 株式会社ミクシィに入社 • 同年6月 より iOSアプリ開発に
3.
アウトライン • ミクシィでのiPhoneアプリの開発体制 –
大規模になる中でどうやってコードを維持するか • コードのテクニックなどよりも、開発環境や周 辺のツールなどについて
4.
mixi iPhoneアプリ • アップデート回数
– 23回 (2012年) • スマートフォンからのアクセス – 月間800万ユーザー • 巨大なコードベース – .mファイルは574個
5.
開発体制 • 開発チーム 計11人
– ディレクター 1人 – デザイナー 1人 – エンジニア 7人 – QAエンジニア 2人 • アジャイルな開発体制の一つ、スクラムを採 用しています
6.
スクラムによる開発 日々のデイリースクラムの様子 カンバン
7.
開発していく上で大切にしていること • 設計・コードベース –
オブジェクト指向 – MVCフレームワーク • 保守性 – テスト、CI – コードレビュー
8.
アプリの全体構成 Mixi Graph Kit
ビュー モデル コントローラ mixiの各機能 通信を管理する 内製ライブラリ • RESTful API • JSONRPC mixi.jpのサーバー MVCフレームワークに則って設計
9.
MVCフレームワーク モデル • MixiGraphKitを通じたデータのやり取り • ロジックを詰め込み、テストを書く コントローラ •
モデルとビューの仲介 • ロジックは書かない ビュー • 画面構成・ユーザーアクションの検知 • できるだけxibを用いて作成
10.
オブジェクト指向 • 同じような画面やパーツを作ることはよくある •
共通する部分は基底クラスを作ってサブクラ ス化していく – 一方で過度の多重継承は上位のクラスの改変が 難しくなるのでほどほどに
11.
オブジェクト指向 • クラス間の依存度はできるだけ下げる –
delegate, NSNoRficaRonなどでクラス間の通知 – プロトコル準拠などで依存度を下げる ViewControllerA @propery ModelA *model ModelA -‐(void)someMethod { // モーダルを表示したい // viewControllerが必要 }
12.
オブジェクト指向 • クラス間の依存度はできるだけ下げる –
delegate, NSNoRficaRonなどでクラス間の通知 – プロトコル準拠などで依存度を下げる ViewControllerA @propery ModelA *model ModelA @property ViewControllerA *vcA -‐(void)someMethod { [vcA presentModal…]; }
13.
オブジェクト指向 • クラス間の依存度はできるだけ下げる –
delegate, NSNoRficaRonなどでクラス間の通知 – プロトコル準拠などで依存度を下げる ViewControllerA @propery ModelA *model ModelA @property ViewController *vcA -‐(void)someMethod { [vcA presentModal…]; }
14.
オブジェクト指向 • クラス間の依存度はできるだけ下げる –
delegate, NSNoRficaRonなどでクラス間の通知 – プロトコル準拠などで依存度を下げる ViewControllerA @propery ModelA *model 依存 ModelA @property ViewController *vcA 依存 -‐(void)someMethod { [vcA presentModal…]; }
15.
オブジェクト指向 • クラス間の依存度はできるだけ下げる –
delegate, NSNoRficaRonなどでクラス間の通知 – プロトコル準拠などで依存度を下げる ViewControllerA <ModelADelegate> @propery ModelA *model -‐(void)showModal { [self presentModal…]; } ModelA @property id delegate; @protocol ModelADelagete -‐ (void) showModal -‐(void)someMethod { [delegate showModal]; }
16.
テスト • コードの品質を保つために、できるだけテストを 書くようにしている •
テストの種類 – モデル層の単体テスト • GHUnit – ユーザアクションをシミュレートしたテスト • KIF • UIAutomaRon • テストはgitにpushするたびにJenkinsで自動実行
17.
単体テスト • GHUnitを用いて、モデル層のロジックをテスト •
各メソッドごとにテストを書く • 他のクラスの挙動に左右される部分について はそのクラスのメソッドをモックする – 通信するメソッドなど – モックにはmethod_exchangeImplementaRonsを
18.
KIF • 受け入れテストの一つ、ユーザーの操作をシ ミュレーションする •
操作のシナリオをObjecitve-‐Cで記述 • コマンドラインからの実行が可能 – 毎日 午前/午後 3時に定時実行
19.
20.
UI AutomaRon • ユーザーの操作を自動実行するInstruments の機能、AutomaRonをテストで使用
• JavaScriptで操作を記述。あるいは実際に操 作した記録を用いることも可能 • Xcode 4.2よりコマンドラインで実行可能に – こちらも毎日 午前/午後 3時に定時実行
21.
KIF vs UI-‐AutomaRon KIF テストの記述 自由度 導入のしやすさ ObjecRve-‐Cで記述 UI-‐Automa6on JavaScript,
ユーザーによる操作 内部の状態とあわせたテストが 可能 ユーザーのできる操作に限定 (例:意図的にKeyChainのデータ を破壊)
22.
コードレビュー • エンジニアが7人もいると、コードの保守が 徐々に困難に –
記述の仕方が一致しない(命名規則とか) – ここはこういうライブラリを使ってほしい • ソースコードをチーム内でレビューするコード レビューを行っています • コードレビューの対象 – ソースコードファイル(.m, .hファイル) – xibなどは範囲外
23.
コードレビューで見るところ • コーディングガイドラインに沿っているか •
ライブラリの使い方などが正しいか • 明らかなバグがないか
24.
コードレビューで見るところ • コーディングガイドラインに沿っているか 1.
Appleのコーディングガイドライン 2. Google ObjecRve-‐C スタイルガイド 3. 独自で決めた規約など NSInteger numCols // NG (むやみに省略しない) NSInteger numberOfColumn; // OK -‐ (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath: (NSIndexPath *)indexPath { return 20.0; // NG (定数を直接書かない) retrun kDefaultCellHeight; // OK }
25.
コードレビューで見るところ • ライブラリの使い方が正しいか •
ライブラリ例 – UIWebViewやNSURLConnecRonは独自の拡張を 施している • 認証用のトークンの取得/更新 • 完了時にBlocksを実行 – 画像は一度キャッシュしているので、そこを介し ているか
26.
コードレビューで見るところ • 明らかなバグがないか //
NON ARC -‐(void)dealloc { self.model = nil; self.model.delegate = nil; // 先にmodelが解放されるのでdelegateは開放されない } self.block = ^(){ NSLog(@“%@”, self.value); // Blocksで循環参照 };
27.
コードレビューのサポートツール • Gerrit gerritの画像を貼る
28.
コードレビューのサポートツール • Gerrit –
Google製のGit用ソースコードレビューシステム – 行単位でのインラインコメントが可能 • パッチセット単位でのマージ – Jenkinsプラグインあり – 無料
29.
ワークフロー push テスト失敗 Jenkins (自動テスト) エンジニア コードレビューを受けて修正 verified Gerrit コードレビューOK
merge Git Remote リポジトリ
30.
開発をサポートするツール • 社内用Over the
Air配布ツール peperoncino • App Storeのレビュー閲覧ツール koala (hups://github.com/punchdrunker/AppReviewViewer)
31.
OTA ツール peperoncino •
「こういう環境のビルド欲しいから作って」と言 われる度に一々ビルドし直すのは面倒 • Jenkinsから – APIエンドポイント – ブランチ を指定してビルド • サーバーからiOS端末へ直接インストール
32.
Jenkinsでのビルド&配布 • xcodebuildを用いてビルドする –
configuraRonは Release – CODE_SIGN_IDENTITYはDistribuRonのものを • できたappをアーカイブ • manifestファイルを生成 • itms-‐services://?acRon=download-‐manifest&url=< アーカイブへのパス> でDLリンクを作る
33.
koala • AppStoreのレビューをスクレイピングして表示 •
現在は結果をポーリングしてIRCで通知 • githubに上がっているので良かったらご利用 ください
34.
以上、ご清澄ありがとうございました。
Download now