このページの本文へ

前へ 1 2 3 4 5 6 次へ

車とスマホがつながるSDLの世界 第8回

SDLのライブラリを組み込み、車載機のユーザーインターフェースを実現してみよう!

SDL対応アプリ開発環境の構築その4~白紙のiOSプロジェクトから作るSDLアプリ

2019年01月13日 11時00分更新

文● 柴田文彦 編集●アスキー編集部

提供: トヨタ自動車株式会社

  • この記事をはてなブックマークに追加
  • 本文印刷

今回はiOS用SDKがテーマ。ライブラリの組み込み方、APIの使い方、動作確認の方法を解説

SDL対応iOSアプリ開発の基本方針

 SDLアプリ開発環境の構築と、SDKの使い方を解説するこの連載では、第1回でSDLの車載器エミュレーターを準備し、第2回ではAndroidおよびiOS対応のサンプルプロジェクトからアプリのビルド、起動方法などを取り上げた。また前回の第3回では、Androidのサンプルプロジェクトに手を加えて、いろいろなSDLのAPIを利用する方法を解説した。第4回の今回は、iOS用SDKの利用方法に話を進める。

 前回のAndroidでは、SDLが用意するサンプルプロジェクトを起点とし、そこに手を加えていった。それに対して今回のiOSでは、SDLのサンプルプロジェクトは使用せず、Xcodeが用意する一般的なアプリのテンプレートを利用して作成したプロジェクトからスタートする。

 そこにSDL用のライブラリを加え、SDL対応アプリとして機能するためのクラスを追加する。さらにそのクラスの中身をプログラミングしていくことで、SDLならではのユーザーインターフェースを実現する工程を示す。

 今回このようなアプローチを取ることにしたのは、iOSのサンプルプロジェクトが、開発者が独自のアプリを作るためのベースとして使うのには色々な意味で不向きだからだ。

 まず、そのプロジェクトによって実現されるアプリが、ユーザーインターフェースとして、すでにかなり作り込んだものになっている。独自のUIを実現しようとすると、ソースコードを書き加えるよりも、むしろ余計なものを削除する作業が多くなる。

 また、サンプルプロジェクトには、Objective-CとSwift両方のコードが含まれていて、どちらか半分は確実に無駄になってしまう。さらに、プロジェクトには、固定されたバージョンのSDLのライブラリ最初から組み込まれているので、今後のSDLのSDKのバージョンの進化に対応しにくいという欠点もある。

新規Xcodeプロジェクトを作成する

 というわけで、今回はごく普通のXcodeの新規プロジェクトを作成するところから始める。プロジェクトのテンプレートは、なんでも構わないが、ここではいちばんシンプルな「Single View App」を選んだ(図1)。

図1:今回のiOSプロジェクトでは、最初にXcodeの標準的な「Single View App」のプロジェクトを作成するところから始めよう

 プロジェクト名は、もちろんどんなものでも良い。車載機が認識するSDLアプリとしての名前は、別途指定するので、これとは別にすることもできる。ここでは「MyFirstSDLApp」とした。なお言語としてはSwiftを選んでいる。念のために、プロジェクトの初期状態のソースコードの構成を確認しておこう(図2)。

図2:プロジェクト名は、ここでは「MyFirstSDLApp」としている。プロジェクトのファイル構成は、この段階ではまだ標準的なものだ

CocoaPodsによってSDLのライブラリを用意する

 SDLのSDK、つまりライブラリをプロジェクトに追加するには、CocoaPodshttps://cocoapods.org/)というXcode用のディペンデンシマネージャを利用するのが便利だ。これにより、最新版に限らず、指定したバージョンのSDKを半自動的にプロジェクトに追加することが可能となる。

 CocoaPods自体は、Rubyで記述されている。Rubyは、macOSに最初からインストールされているものが使える。ターミナルでgemコマンドを使って、以下のようにタイプすれば、まずCocoaPodsをインストールできる。

$ sudo gem install cocoapods

 この後、管理者ユーザーのパスワードを入力すれば、インストールはあっという間に終わる。

 これにより、CocoaPodsを利用するためのpodコマンドが使えるようになる。最初にpodコマンドを使って、目的のXcodeプロジェクトをCocoaPodsに対して初期化する。まず上で作成したXcodeプロジェクトのフォルダにカレントディレクトリを移動してから、以下のようなコマンドをタイプするだけでいい。

$ pod init

 これによって、プロジェクトフォルダー内には、「Podfile」という名前のCocoaPodsの設定ファイルが作成される。それを適当なテキストエディタ(ここでは「テキストエディット」)を使って編集する。と言っても、次の1行を追加するだけでいい。

pod 'SmartDeviceLink', '~> 6.1.2'

 追加する場所も含めて、編集後のPodfileの内容を確認しておこう(図3)。

図3:この中の「~> 6.1.2」の部分では、SDL SDKのバージョン番号を指定している。通常は、GitHub(https://github.com/smartdevicelink/sdl_ios/releases)に公開されている最新版を選べばいいだろう。もちろん過去の特定のバージョンを指定することもできる

 Podfileの編集が終わったら、再びターミナルで、いよいよSDKをインストールするためのpodコマンドをタイプする。

$ pod install

 ここまでのターミナルコマンドの過程を確認しておこう(図4)。

図4:CocoaPodsをインストールしてから、SDLライブラリをXcodeプロジェクトに取り込むまでの過程。実際には、「pod init」によって生成された「Podfile」を編集してから「pod install」を実行する

 このターミナルのスクリーンショットには、CocoaPodsをインストールするところから、SDLのSDKをインストールするまでが含まれている。たったこれだけで、Xcodeプロジェクトの準備は完了する。

 なお、CocoaPodsによってライブラリを追加した場合、ライブラリは1つのXcodeプロジェクトとして扱われるようになる。そのため以後は、元来のアプリのプロジェクトとライブラリのプロジェクトを、まとめて1つのワークスペースとして開く必要がある。そのため、元のプロジェクトフォルダには、「元のプロジェクト名.xcworkspace」というファイルが作成される(図5)。

図5:CocoaPodsを使ってライブラリをインストールすると、元のプロジェクトに、そのライブラリプロジェクトを加えたワークスペース(.xcworkspace)が生成される

 今後は、元のプロジェクト(.xcodeproj)ではなく、このワークスペースファイルをダブルクリックして、SDLアプリのプロジェクトを開くようにしなければならない。

SDL用のプロキシマネージャクラスを追加する

 SDLライブラリを追加したプロジェクトには、車載機と通信するためのプロキシとして機能するクラスを追加する。Androidではサービスとして実装したが、iOSにはそのような区分はないので、一般的なSwiftのクラスファイルを追加する。Xcodeの「File」メニューの「New」サブメニューから「File...」を選び、ファイルのタイプとして「Swift File」を選んで追加すればいい。名前は「ProxyManager.swift」とした(図6)。

図6:プロジェクトには、一般的なSwiftクラスファイルとして「ProxyManger.swift」を追加する。今回のプログラミングは、ほとんどこのクラスが対象となる

 念のため、この段階でのワークスペースの状態を確認しておこう。今、追加したばかりの「ProxyManager.swift」は、「MyFirstSDLApp」プロジェクトの中の「MyFirstSDLApp」フォルダに入っている。また、CocoaPodsによって、「Pods」という名前のプロジェクトが作成され、その中に「BiSON」や「SmartDeviceLink」といったライブラリが追加されていることも確認できる(図7)。

図7:SDLアプリの心臓部となる「ProxyManager.swift」ファイルを加えたワークスペースの状態。Xcodeで作成した「MyFirstSDLApp」と、CocoaPodが追加した「Pods」のプロジェクトが含まれている

前へ 1 2 3 4 5 6 次へ

カテゴリートップへ

本記事はアフィリエイトプログラムによる収益を得ている場合があります

この連載の記事

ASCII倶楽部

注目ニュース

  • 角川アスキー総合研究所

プレミアム実機レビュー

ピックアップ
1
KIOXIA(キオクシア) 旧東芝メモリ microSD 128GB UHS-I Class10 (最大読出速度100MB/s) Nintendo Switch動作確認済 国内サポート正規品 メーカー保証5年 KLMEA128G
KIOXIA(キオクシア) 旧東芝メモリ microSD 128GB UHS-I Class10 (最大読出速度100MB/s) Nintendo Switch動作確認済 国内サポート正規品 メーカー保証5年 KLMEA128G
¥2,413
2
【Amazon.co.jp限定】 ロジクール 静音 ワイヤレス トラックボール マウス M575SPd Bluetooth Logibolt 無線 windows mac iPad OS Chrome トラックボールマウス ブラック M575 M575SP 国内正規品 ※Amazon.co.jp限定 壁紙ダウンロード付き
【Amazon.co.jp限定】 ロジクール 静音 ワイヤレス トラックボール マウス M575SPd Bluetooth Logibolt 無線 windows mac iPad OS Chrome トラックボールマウス ブラック M575 M575SP 国内正規品 ※Amazon.co.jp限定 壁紙ダウンロード付き
¥7,313
3
エレコム 電源タップ 6個口 3m 雷ガード 個別スイッチ ほこりシャッター付 耐熱 PSE技術基準適合 ブラック T-K6A-2630BK
エレコム 電源タップ 6個口 3m 雷ガード 個別スイッチ ほこりシャッター付 耐熱 PSE技術基準適合 ブラック T-K6A-2630BK
¥1,899
4
CIO フラットスパイラルケーブル CtoC (Type-C/USB-C) PD 急速充電 平型 磁石 マグネット吸着 まとまる 充電ケーブル PD 240W データ転送 480Mbps 形状記憶 iPhone 17 / 16 / 15 Macbook Pro/Air/iPad用/ノートパソコン Galaxy Google Pixel Android (ライトブラック, 1.5m)
CIO フラットスパイラルケーブル CtoC (Type-C/USB-C) PD 急速充電 平型 磁石 マグネット吸着 まとまる 充電ケーブル PD 240W データ転送 480Mbps 形状記憶 iPhone 17 / 16 / 15 Macbook Pro/Air/iPad用/ノートパソコン Galaxy Google Pixel Android (ライトブラック, 1.5m)
¥2,290
5
Anker USB Type C ケーブル PowerLine USB-C & USB-A 3.0 ケーブル iPhone 17 / 16 / 15 /Xperia/Galaxy/LG/iPad Pro/MacBook その他 Android 等 USB-C機器対応 テレワーク リモート 在宅勤務 0.9m ホワイト
Anker USB Type C ケーブル PowerLine USB-C & USB-A 3.0 ケーブル iPhone 17 / 16 / 15 /Xperia/Galaxy/LG/iPad Pro/MacBook その他 Android 等 USB-C機器対応 テレワーク リモート 在宅勤務 0.9m ホワイト
¥740
6
Anker Zolo USB-C & USB-C ケーブル (240W, 高耐久ナイロン) 1.8m ブラック iPhone 17 / 16 / 15 Galaxy iPad Pro MacBook Pro/Air 各種対応
Anker Zolo USB-C & USB-C ケーブル (240W, 高耐久ナイロン) 1.8m ブラック iPhone 17 / 16 / 15 Galaxy iPad Pro MacBook Pro/Air 各種対応
¥1,590
7
Anker Nano Charging Station (7-in-1, 100W, 巻取り式 USB-C ケーブル) (USBタップ 電源タップ) 【PSE技術基準適合】MacBook iPad iPhone Galaxy Android ブラック
Anker Nano Charging Station (7-in-1, 100W, 巻取り式 USB-C ケーブル) (USBタップ 電源タップ) 【PSE技術基準適合】MacBook iPad iPhone Galaxy Android ブラック
¥9,990
8
Anker iPhone充電ケーブル PowerLine II ライトニングケーブル MFi認証 超高耐久 iPhone 14 / 14 Pro Max / 14 Plus / 13 / 13 Pro / 12 / 11 / X/XS/XR / 8 Plus 各種対応 (0.9m ホワイト)
Anker iPhone充電ケーブル PowerLine II ライトニングケーブル MFi認証 超高耐久 iPhone 14 / 14 Pro Max / 14 Plus / 13 / 13 Pro / 12 / 11 / X/XS/XR / 8 Plus 各種対応 (0.9m ホワイト)
¥990
9
Verbatim バーベイタム 1回録画用 ブルーレイディスク BD-R 25GB 50枚+3枚増量パック インクジェットプリンタ対応 ホワイト 片面1層 1-6倍速
Verbatim バーベイタム 1回録画用 ブルーレイディスク BD-R 25GB 50枚+3枚増量パック インクジェットプリンタ対応 ホワイト 片面1層 1-6倍速
¥2,480
10
ソニー ゲーミングイヤホン INZONE Buds:WF-G700N Fnatic監修/ワイヤレス / 低遅延2.4GHzワイヤレス接続 USBType-Cトランシーバー同梱/LE Audio対応/アクティブノイズキャンセリング/立体音響 / 最大約24時間バッテリー / 急速充電/マイク付き / PS5 スマホ PC Switch グラスパープル
ソニー ゲーミングイヤホン INZONE Buds:WF-G700N Fnatic監修/ワイヤレス / 低遅延2.4GHzワイヤレス接続 USBType-Cトランシーバー同梱/LE Audio対応/アクティブノイズキャンセリング/立体音響 / 最大約24時間バッテリー / 急速充電/マイク付き / PS5 スマホ PC Switch グラスパープル
¥20,800

Amazonのアソシエイトとして、ASCII.jpは適格販売により収入を得ています。

デジタル用語辞典

ASCII.jpメール デジタルMac/iPodマガジン