SlideShare une entreprise Scribd logo
1  sur  33
Télécharger pour lire hors ligne
iOSとWin8の違い


2013/10/15
iOSアプリ開発者が

WinRTアプリ開発に
携わった感想を述べます。
開発経験

•

iOS

• 3年

•

WinRT

• 2週間∼3週間
目次
1)開発OSの違い
2)IDEの違い
3)UI構築の違い
4)プログラミングの違い
i. 言語の違い
ii. メモリ管理の違い
iii. DBの扱いの違い
開発OSの違い
Operation System

iOS: Mac
WinRT: Windows8
iOS: Mac
• 普及率が低い
•
•

• キーボードからして違う
慣れる必要がある
OSは安い($19.99)
• Mavericksはアップデートタダ
WinRT: Windows8
• Windows系列
• 広く普及している
• OSが高い
• アップグレードは安い
• Win7からは1200円∼
IDEの違い
Integrated Development Environment

iOS: Xcode
WinRT: VisualStudio
iOS: Xcode
• タダ
•
•

• 一瞬、$4.99の時期があった
OSも最新にしないと動かない
自分好みに変えづらい
• 色とパネルの表示/非表示くらい
パネル数は少なめ

•
• 全画面推奨

画像引用元: https://itunes.apple.com/jp/app/xcode/id497799835
WinRT: Visual Studio
• タダ
• Win8以降が必要
• 自分好みにカスタマイズ可能
•
•

• パネルの場所は自由自在に移動可能
パネルが多い
• パネルが行方不明になる
ショートカットキーが難解
画像引用元: http://www.microsoftstore.com/store/msus/en_AU/pdp/productID.288733900
UI構築の違い
User Interface

iOS: Interface Builder
WinRT: Blend & XAML
iOS: InterFace Builder

• 機種依存はほぼ、無し
•
•

• 縦長か否か、のみ
ドラッグ&ドロップのみで構成
• コードとのつなぎ込みも可
コーディングと明確に分離
• 中身は解読困難
• Gitでコンフリクトしたら悲惨

画像引用元: http://www.electricpig.co.uk/2011/01/18/apple-icon-secrets-hidden-meanings-hiding-in-plain-sight/
WinRT: Blend & XAML
• 2つのツールを行き来しながら作業
• Blend

•

• ドラッグ&ドロップでUI構築
• XAML
• C#との繋ぎ込み等は直書き
機種依存へ考慮が必要
• VMと実機で違う

挙動をすることも

画像引用元: 	

https://www.facebook.com/MicrosoftExpression
Win8系の解像度について
Logical DPIの存在
Dot per Inch

フルHD(1980 1080)ディスプレイだけど、

ストアアプリは「1366

768」で動くよ!

参考URL
http://www.slideshare.net/manatokameya/ss-23981128
UI配置の違い

• iOS
• UIViewの下にUI要素を配置
• 基本は絶対位置を指定
• WinRT
• Grid等で画面を区分け
• 相対的に配置
UIの動的生成における違い

• iOS
• コード上で全部書く
• WinRT
• XAML上で枠組みだけ書き、

生成元の変数等はC#で書く
プログラミングの違い
Programming

iOS: Objective-C
WinRT: C#(他にもあるヨ)
iOS: Objective-C
• オブジェクト指向言語
•
•

• C++によって潰されかけた言語
丁寧で厳しい言語
学習コストが高い
• Mac、iOSアプリ以外に使い道がない
• 一部フレームワークの学習コストも高い

(CoreData、CoreGraphicsなど

• Webアプリの火付け役
Obj-Cの例
WinRT: C#
• 簡単で学習コストが低い
•

• 既に習得している人も多い
曖昧な開発も可能
• var(型推論)
• null許容型
•

•

int? j= null + 100; // jはnull

非同期処理がいつの間にか行われることも
•

http://itpro.nikkeibp.co.jp/article/Watcher/20130331/467401/
メモリ管理の違い
Memory Management

iOS: ARC
WinRT: GC
iOS: ARC
• Automatic Reference Counting
• MRC(Manual RC)の発展系
1) 元々は手動でメモリ管理
✴

Release、Retain等記載

2) 「Releaseが抜けている」とエラー表示
3) 「自動で補完すれば良いのでは」

4)ARC!
ARCの注意点
あくまで
「メモリ管理コードを自動で挿入」
するだけ
特異な書き方をすれば
誤った挿入が行われて

落ちる
WinRT: GC
• Garbage Collection
• 自動でメモリ解放
•

• 今後アクセスし得ない変数を解放
• ずっと保持し続ける処理を書くとリーク
重い
あまり触れた事ないです…
DB管理の違い
Database Management

iOS: Core Data
WinRT: SQLite Wrapper
iOS: CoreData
Object / Relational

• O/R Mapperの1つ
• 面倒なことを代理実行
•
•

• データ保護、メモリ管理など
他クラスとの連携も容易
• テーブルビューとは密接に連携
敷居が高い
CoreDataは鬼門
•
•
•

サンプル読んでも何やっているか分からない
マニュアルも難しい
これだけで本が書けて売れる
• 本を読んでも理解できない
• 本が間違っていることもある
ただし、最近はWeb資料の充実や


Xcode自体のアップデートで使いやすくなっている
WinRT: SQLite
• 拡張(Wrapper)の位置づけ
• 簡単
•

• 導入迄に1時間も要らなそう
データ保護等は自力?
デバッグの違い

• iOS
• 変数の監視期間が短い
•

すぐ解放されてしまう

• WinRT
• 変数の監視期間が長い
• デバッグ中にソースコードを

書き換えられない
その他感想
Other Differences between iOS and Win8
普及度合いによる差

• iOS
• 資料が多い
•

たいていの問題はGoogle等で解決可

• WinRT
• 資料が少ない
•

フォーラムや英語サイトを

彷徨う必要有

Contenu connexe

En vedette

ウェアラブルコンピューターが変える小売のミライ_エンジニア勉強会20140425
ウェアラブルコンピューターが変える小売のミライ_エンジニア勉強会20140425ウェアラブルコンピューターが変える小売のミライ_エンジニア勉強会20140425
ウェアラブルコンピューターが変える小売のミライ_エンジニア勉強会20140425エンジニア勉強会 エスキュービズム
 
Azure container service上でコンテナベースでオートスケールの検証をしてみた
Azure container service上でコンテナベースでオートスケールの検証をしてみたAzure container service上でコンテナベースでオートスケールの検証をしてみた
Azure container service上でコンテナベースでオートスケールの検証をしてみたエンジニア勉強会 エスキュービズム
 
事故らないためのUnix(linux)オペレーション エスキュービズム勉強会0711
事故らないためのUnix(linux)オペレーション エスキュービズム勉強会0711事故らないためのUnix(linux)オペレーション エスキュービズム勉強会0711
事故らないためのUnix(linux)オペレーション エスキュービズム勉強会0711エンジニア勉強会 エスキュービズム
 

En vedette (20)

ウェアラブルコンピューターが変える小売のミライ_エンジニア勉強会20140425
ウェアラブルコンピューターが変える小売のミライ_エンジニア勉強会20140425ウェアラブルコンピューターが変える小売のミライ_エンジニア勉強会20140425
ウェアラブルコンピューターが変える小売のミライ_エンジニア勉強会20140425
 
de:code 2015
de:code 2015de:code 2015
de:code 2015
 
様々なEntry system,register system エンジニア勉強会20140108
様々なEntry system,register system エンジニア勉強会20140108様々なEntry system,register system エンジニア勉強会20140108
様々なEntry system,register system エンジニア勉強会20140108
 
Developer Summit 2016 参加してきました。
Developer Summit 2016 参加してきました。Developer Summit 2016 参加してきました。
Developer Summit 2016 参加してきました。
 
エンジニア勉強会_Node.js
エンジニア勉強会_Node.jsエンジニア勉強会_Node.js
エンジニア勉強会_Node.js
 
Yii c orange エンジニア勉強会20140129
Yii c orange エンジニア勉強会20140129Yii c orange エンジニア勉強会20140129
Yii c orange エンジニア勉強会20140129
 
【エンジニア勉強会】品質ってなんなのさ
【エンジニア勉強会】品質ってなんなのさ【エンジニア勉強会】品質ってなんなのさ
【エンジニア勉強会】品質ってなんなのさ
 
POSとステートマシン_エンジニア勉強会20131127
POSとステートマシン_エンジニア勉強会20131127POSとステートマシン_エンジニア勉強会20131127
POSとステートマシン_エンジニア勉強会20131127
 
Visual studio2015と
Visual studio2015とVisual studio2015と
Visual studio2015と
 
暗号理論_エンジニア勉強会20140509
暗号理論_エンジニア勉強会20140509暗号理論_エンジニア勉強会20140509
暗号理論_エンジニア勉強会20140509
 
メモリ管理の話_エスキュービズム勉強会20140926
メモリ管理の話_エスキュービズム勉強会20140926メモリ管理の話_エスキュービズム勉強会20140926
メモリ管理の話_エスキュービズム勉強会20140926
 
Sensu graphite_エンジニア勉強会20140205
Sensu graphite_エンジニア勉強会20140205Sensu graphite_エンジニア勉強会20140205
Sensu graphite_エンジニア勉強会20140205
 
Azure container service上でコンテナベースでオートスケールの検証をしてみた
Azure container service上でコンテナベースでオートスケールの検証をしてみたAzure container service上でコンテナベースでオートスケールの検証をしてみた
Azure container service上でコンテナベースでオートスケールの検証をしてみた
 
Kinect
KinectKinect
Kinect
 
IoTで何をやったか
IoTで何をやったかIoTで何をやったか
IoTで何をやったか
 
事故らないためのUnix(linux)オペレーション エスキュービズム勉強会0711
事故らないためのUnix(linux)オペレーション エスキュービズム勉強会0711事故らないためのUnix(linux)オペレーション エスキュービズム勉強会0711
事故らないためのUnix(linux)オペレーション エスキュービズム勉強会0711
 
ほんのりTDD
ほんのりTDDほんのりTDD
ほんのりTDD
 
Winストアアプリでble接続
Winストアアプリでble接続Winストアアプリでble接続
Winストアアプリでble接続
 
Rubyのクラスとメソッド_エスキュービズム勉強会0530
Rubyのクラスとメソッド_エスキュービズム勉強会0530Rubyのクラスとメソッド_エスキュービズム勉強会0530
Rubyのクラスとメソッド_エスキュービズム勉強会0530
 
レイアウトについて
レイアウトについてレイアウトについて
レイアウトについて
 

Similaire à iOSとwin8_エンジニア勉強会20131106

iPhoneとAndroidのアプリ開発最新潮流
iPhoneとAndroidのアプリ開発最新潮流iPhoneとAndroidのアプリ開発最新潮流
iPhoneとAndroidのアプリ開発最新潮流Rakuten Group, Inc.
 
C#でiPhoneアプリ開発 with MonoTouch
C#でiPhoneアプリ開発 with MonoTouchC#でiPhoneアプリ開発 with MonoTouch
C#でiPhoneアプリ開発 with MonoTouchShin Ise
 
ストアアプリ →universal Windows Apps =WP8.1アプリ
ストアアプリ→universal Windows Apps=WP8.1アプリストアアプリ→universal Windows Apps=WP8.1アプリ
ストアアプリ →universal Windows Apps =WP8.1アプリAkira Hatsune
 
第1回 コデアルiOSアプリ勉強会
第1回 コデアルiOSアプリ勉強会第1回 コデアルiOSアプリ勉強会
第1回 コデアルiOSアプリ勉強会codeal
 
Windows 8やWindows Phone 8についてのパネルディスカッション
Windows 8やWindows Phone 8についてのパネルディスカッションWindows 8やWindows Phone 8についてのパネルディスカッション
Windows 8やWindows Phone 8についてのパネルディスカッションYou&I
 
これからのNOTESモバイルアプリはこう作れ
これからのNOTESモバイルアプリはこう作れこれからのNOTESモバイルアプリはこう作れ
これからのNOTESモバイルアプリはこう作れMitsuru Katoh
 
Android Develop presentation on 19 Sep 2012.
Android Develop presentation on 19 Sep 2012.Android Develop presentation on 19 Sep 2012.
Android Develop presentation on 19 Sep 2012.Kazuaki Ueda
 
そこのスマホ開発者さん、Windows Phone どうですか?
そこのスマホ開発者さん、Windows Phone どうですか?そこのスマホ開発者さん、Windows Phone どうですか?
そこのスマホ開発者さん、Windows Phone どうですか?Kazuaki TAUCHI
 
新登場!Surface Laptop 4
新登場!Surface Laptop 4新登場!Surface Laptop 4
新登場!Surface Laptop 4Tomokazu Kizawa
 
どうなる?Windows 8時代の業務アプリ開発
どうなる?Windows 8時代の業務アプリ開発どうなる?Windows 8時代の業務アプリ開発
どうなる?Windows 8時代の業務アプリ開発Yuya Yamaki
 
ET2016 Smart Japan Alliance Llilum 161118
ET2016 Smart Japan Alliance Llilum 161118ET2016 Smart Japan Alliance Llilum 161118
ET2016 Smart Japan Alliance Llilum 161118Atomu Hidaka
 
ここが変わったTizen sdk2.0alpha
ここが変わったTizen sdk2.0alphaここが変わったTizen sdk2.0alpha
ここが変わったTizen sdk2.0alphaHiroshi Sakate
 
Windows Phoneで始める拡張現実の世界
Windows Phoneで始める拡張現実の世界Windows Phoneで始める拡張現実の世界
Windows Phoneで始める拡張現実の世界Akira Hatsune
 
解説 Windows 10 May 2020 Update
解説 Windows 10 May 2020 Update解説 Windows 10 May 2020 Update
解説 Windows 10 May 2020 UpdateTomokazu Kizawa
 
Windows 8 Developers カンファレンス
Windows 8 Developers カンファレンスWindows 8 Developers カンファレンス
Windows 8 Developers カンファレンスKaoru NAKAMURA
 
iQONの開発手法 at iQONエンジニアセミナー
iQONの開発手法 at iQONエンジニアセミナーiQONの開発手法 at iQONエンジニアセミナー
iQONの開発手法 at iQONエンジニアセミナーImamura Masayuki
 

Similaire à iOSとwin8_エンジニア勉強会20131106 (20)

iPhoneとAndroidのアプリ開発最新潮流
iPhoneとAndroidのアプリ開発最新潮流iPhoneとAndroidのアプリ開発最新潮流
iPhoneとAndroidのアプリ開発最新潮流
 
C#でiPhoneアプリ開発 with MonoTouch
C#でiPhoneアプリ開発 with MonoTouchC#でiPhoneアプリ開発 with MonoTouch
C#でiPhoneアプリ開発 with MonoTouch
 
ストアアプリ →universal Windows Apps =WP8.1アプリ
ストアアプリ→universal Windows Apps=WP8.1アプリストアアプリ→universal Windows Apps=WP8.1アプリ
ストアアプリ →universal Windows Apps =WP8.1アプリ
 
第1回 コデアルiOSアプリ勉強会
第1回 コデアルiOSアプリ勉強会第1回 コデアルiOSアプリ勉強会
第1回 コデアルiOSアプリ勉強会
 
Windows 8やWindows Phone 8についてのパネルディスカッション
Windows 8やWindows Phone 8についてのパネルディスカッションWindows 8やWindows Phone 8についてのパネルディスカッション
Windows 8やWindows Phone 8についてのパネルディスカッション
 
これからのNOTESモバイルアプリはこう作れ
これからのNOTESモバイルアプリはこう作れこれからのNOTESモバイルアプリはこう作れ
これからのNOTESモバイルアプリはこう作れ
 
Soracom ug
Soracom ugSoracom ug
Soracom ug
 
Android Develop presentation on 19 Sep 2012.
Android Develop presentation on 19 Sep 2012.Android Develop presentation on 19 Sep 2012.
Android Develop presentation on 19 Sep 2012.
 
そこのスマホ開発者さん、Windows Phone どうですか?
そこのスマホ開発者さん、Windows Phone どうですか?そこのスマホ開発者さん、Windows Phone どうですか?
そこのスマホ開発者さん、Windows Phone どうですか?
 
新登場!Surface Laptop 4
新登場!Surface Laptop 4新登場!Surface Laptop 4
新登場!Surface Laptop 4
 
Jenkins on-mac
Jenkins on-macJenkins on-mac
Jenkins on-mac
 
XAML のこれまでとこれから、今「やる」べき意義
XAML のこれまでとこれから、今「やる」べき意義XAML のこれまでとこれから、今「やる」べき意義
XAML のこれまでとこれから、今「やる」べき意義
 
どうなる?Windows 8時代の業務アプリ開発
どうなる?Windows 8時代の業務アプリ開発どうなる?Windows 8時代の業務アプリ開発
どうなる?Windows 8時代の業務アプリ開発
 
ET2016 Smart Japan Alliance Llilum 161118
ET2016 Smart Japan Alliance Llilum 161118ET2016 Smart Japan Alliance Llilum 161118
ET2016 Smart Japan Alliance Llilum 161118
 
ここが変わったTizen sdk2.0alpha
ここが変わったTizen sdk2.0alphaここが変わったTizen sdk2.0alpha
ここが変わったTizen sdk2.0alpha
 
Android0422
Android0422Android0422
Android0422
 
Windows Phoneで始める拡張現実の世界
Windows Phoneで始める拡張現実の世界Windows Phoneで始める拡張現実の世界
Windows Phoneで始める拡張現実の世界
 
解説 Windows 10 May 2020 Update
解説 Windows 10 May 2020 Update解説 Windows 10 May 2020 Update
解説 Windows 10 May 2020 Update
 
Windows 8 Developers カンファレンス
Windows 8 Developers カンファレンスWindows 8 Developers カンファレンス
Windows 8 Developers カンファレンス
 
iQONの開発手法 at iQONエンジニアセミナー
iQONの開発手法 at iQONエンジニアセミナーiQONの開発手法 at iQONエンジニアセミナー
iQONの開発手法 at iQONエンジニアセミナー
 

Plus de エンジニア勉強会 エスキュービズム

Plus de エンジニア勉強会 エスキュービズム (20)

エスキュービズム新技術発表資料
エスキュービズム新技術発表資料エスキュービズム新技術発表資料
エスキュービズム新技術発表資料
 
小売りにおけるAIの可能性
小売りにおけるAIの可能性小売りにおけるAIの可能性
小売りにおけるAIの可能性
 
React Redux Redux-Saga + サーバサイドレンダリング
React Redux Redux-Saga + サーバサイドレンダリングReact Redux Redux-Saga + サーバサイドレンダリング
React Redux Redux-Saga + サーバサイドレンダリング
 
はじめての品質
はじめての品質はじめての品質
はじめての品質
 
Go言語によるWebアプリケーション開発
Go言語によるWebアプリケーション開発Go言語によるWebアプリケーション開発
Go言語によるWebアプリケーション開発
 
機械学習ライブラリ : TensorFlow
機械学習ライブラリ : TensorFlow機械学習ライブラリ : TensorFlow
機械学習ライブラリ : TensorFlow
 
2016 新人研修 基本技術講座 (1)
2016 新人研修 基本技術講座 (1)2016 新人研修 基本技術講座 (1)
2016 新人研修 基本技術講座 (1)
 
Dockerを用いたマイクロサービスについて
Dockerを用いたマイクロサービスについてDockerを用いたマイクロサービスについて
Dockerを用いたマイクロサービスについて
 
VRのコンテンツ
VRのコンテンツVRのコンテンツ
VRのコンテンツ
 
Azureで動いている機械学習のいろいろについて
Azureで動いている機械学習のいろいろについてAzureで動いている機械学習のいろいろについて
Azureで動いている機械学習のいろいろについて
 
アルゴリズムとデータ構造(初歩)
アルゴリズムとデータ構造(初歩)アルゴリズムとデータ構造(初歩)
アルゴリズムとデータ構造(初歩)
 
何故エンジニアはテストをしないのか
何故エンジニアはテストをしないのか何故エンジニアはテストをしないのか
何故エンジニアはテストをしないのか
 
IoTのIを考えてみる話
IoTのIを考えてみる話IoTのIを考えてみる話
IoTのIを考えてみる話
 
AzureのIaaSとかの話
AzureのIaaSとかの話AzureのIaaSとかの話
AzureのIaaSとかの話
 
【エンジニア勉強会】PMやってみた
【エンジニア勉強会】PMやってみた【エンジニア勉強会】PMやってみた
【エンジニア勉強会】PMやってみた
 
Dockerを社内で使うために
Dockerを社内で使うためにDockerを社内で使うために
Dockerを社内で使うために
 
Riot.jsに触れてみた話
Riot.jsに触れてみた話Riot.jsに触れてみた話
Riot.jsに触れてみた話
 
Go言語オーバービュー201507
Go言語オーバービュー201507Go言語オーバービュー201507
Go言語オーバービュー201507
 
理想のWEB開発
理想のWEB開発理想のWEB開発
理想のWEB開発
 
マイコンとIoT
マイコンとIoTマイコンとIoT
マイコンとIoT
 

iOSとwin8_エンジニア勉強会20131106