Windows Bridge for iOS 〜Objective-C(Xcode)で作成したプロジェクトを変換してみた〜
今日は、Objective-Cで作成たプロジェクトをWindows用のプロジェクトに変換してみました。
↓WinObjCなど、基本的な事については、昨日の記事をご参照ください。furuya02.hatenablog.com
1 vsimporter.exe
WinObjCに含まれるvsimporter.exeを使用することで、Objective-CのプロジェクトをWindows用のプロジェクトに変換できます。vsimporter.exeの使用方法は、-help スイッチで確認できます。
c:\winobjc\bin>vsimporter.exe -help Usage: vsimporter.exe [-project projectname] [-target targetname ...] [-configuration configurationname] [-interactive] [setting=value ...] vsimporter.exe [-project projectname] -scheme schemename [-configuration configurationname] [-interactive] [setting=value ...] vsimporter.exe -workspace workspacename -scheme schemename [-configuration configurationname] [-interactive] [setting=value ...] vsimporter.exe -list [-project projectname | -workspace workspacename] Program Options -usage print brief usage message -help print full usage message -interactive enable interactive mode -loglevel LEVEL debug | info | warning | error -list list the targets and configurations in the project -sdk SDKROOT specify path to WinObjC SDK root (by default calculated from binary's location) -project PATH specify project to process -workspace PATH specify workspace to process -target NAME specify target to process -alltargets process all targets -scheme NAME specify scheme to process -allschemes process all schemes -configuration NAME specify configuration to use -xcconfig FILE apply build settings defined in FILE as overrides -format FORMAT winstore8.1 | winphone8.1 | winstore10 (default) -version print the tool version
- formatでターゲットを指定することで、3種類のプロジェクトが生成可能です。
2 Xcodeでのプロジェクト作成
Xcodeの「Single View Application」から、テスト用のアプリを作成します。
なお、vsimporter.exeは、現時点では、Storyboardに対応できていないので、Xcode6でデフォルトで使用されるMain.Storyboardは削除して、ラベルをコードで貼りました。
AppDelegate.h
#import <UIKit/UIKit.h> @class ViewController; @interface AppDelegate : UIResponder <UIApplicationDelegate> @property (strong, nonatomic) UIWindow *window; @property (strong, nonatomic) ViewController *viewController; @end
AppDelegate.m
・・・省略・・・ - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // Override point for customization after application launch. self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; self.window.backgroundColor = [UIColor whiteColor]; self.viewController = [[ViewController alloc] init]; self.window.rootViewController = self.viewController; [self.window makeKeyAndVisible]; return YES; } ・・・省略・・・
ViewController.m
・・・省略・・・ - (void)viewDidLoad { [super viewDidLoad]; [self initLabel]; } - (void)initLabel{ CGRect rect = CGRectMake(60,100,200,30); UILabel *label = [[UILabel alloc] initWithFrame:rect]; label.text = @"Hello World!"; label .textAlignment = NSTextAlignmentCenter; label.textColor = [UIColor blackColor]; [self.view addSubview:label]; } ・・・省略・・・
3 Windows用プロジェクトの作成と実行
Xcodeで作成したプロジェクトを丸ごとWindows環境へ移して、vsimporter.exeを使用して、WindowsPhone用のプロジェクトを作成してみます。コピーした時点でのフォルダの状態は次のとおりです。
vsimporter.exeに-formatスイッチでWindowsPhoneを指定して実行した様子です。
変換後のフォルダの状態です。
生成されたslnファイルをダブルクリックしてVisualStudio2015を起動して、実行した様子です。
4 Windows Bridge for iOS について補足
Bridgeは、次の4つのコンポーネントでできています。1.Objective-C コンパイラ
Objective-Cのコードを、ネイティブなユニバーサルWindowsアプリにコンパイルします
2.Objective-C ランタイム
Objecttive-Cランタイムには、メッセージのディスパッチやデリゲーション、自動参照カウントなどが含まれています
3.iOS API ヘッダ/ライブラリ
基本APIについては、すでに提供されていますが、さらに改善するために意見を待っているとの事です
4.VisualStudio IDEの統合
Xcodeプロジェクトをインポートする
参考:Windows Bridge for iOS: Let’s open this up | Building Apps for Windows
ちなみに、このプロジェクトは、単に既存のObjecttiv-CのコードをWindowsでコンパイルする事だけが目標ではないそうです。
例えば、次のように、Objective-CにコードからWindowsのAPIもコールできるようです。
上記では、Windows.Foundation.UriやWindows.System.Launcherが利用されています。
参考:Windows Bridge for iOS: Let’s open this up | Building Apps for Windows
5 Windows Bridge for iOS の現状
現時点では、あくまで限定的なリリースで、完成度は、まだまだだと感じます。
今回の作業も、細いハッピーパスをくぐり抜けた感じが否定できません。
最終的なリリースは、今秋のVisualStudio2015のUpdateが予定との事です。
参考:Open Sourcing the Windows Bridge for iOS | Building Apps for Windows
なお、Androidの、テクニカルプレビューも一部の招待者で始まっており、8月末のパブリックベータが予定されているようです。
試してみたい方はサインアップしておくといいでしょう。
参考:Windows Bridge for Android - Windows アプリの開発
参考資料
Windows Bridge for iOS: Let’s open this up | Building Apps for WindowsOpen Sourcing the Windows Bridge for iOS | Building Apps for Windows
Windows Bridge for Android - Windows アプリの開発