このページの本文へ

前へ 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 次へ

カテゴリートップへ

この連載の記事
1
【整備済み品】中古 ノートパソコン NEC VersaPro VKT16/15.6型・第8世代Core i5-8250U(最大動作3.4GHz)/快適メモリ8GB/ 高速SSD 256GB/Win11 Pro/MS Office 2019付属/テンキー付, Webカメラ, USB3.0, HDMI, VGA, 有線LAN, WIFI内蔵, Bluetooth/ACアダプター付属/180日間保証
【整備済み品】中古 ノートパソコン NEC VersaPro VKT16/15.6型・第8世代Core i5-8250U(最大動作3.4GHz)/快適メモリ8GB/ 高速SSD 256GB/Win11 Pro/MS Office 2019付属/テンキー付, Webカメラ, USB3.0, HDMI, VGA, 有線LAN, WIFI内蔵, Bluetooth/ACアダプター付属/180日間保証
¥26,880
2
【整備済み品】富士通 ノートパソコン LIFEBOOK U9310 13.3型FHD(1920x1080) 超軽薄 ノートPC/第10世代 Core i5-10310U@1.7GHz/ 8GB メモリ/高速ストレージ SSD/Webカメラ/WIFI/Type-C/HDMI/win11&MS Office 2019 搭載 ビジネス 在宅勤務向け パソコン (メモリ:8GB/SSD:256GB)
【整備済み品】富士通 ノートパソコン LIFEBOOK U9310 13.3型FHD(1920x1080) 超軽薄 ノートPC/第10世代 Core i5-10310U@1.7GHz/ 8GB メモリ/高速ストレージ SSD/Webカメラ/WIFI/Type-C/HDMI/win11&MS Office 2019 搭載 ビジネス 在宅勤務向け パソコン (メモリ:8GB/SSD:256GB)
¥36,979
3
HP ノートパソコン 15-fd 15.6インチ インテル Core Ultra 5 125H メモリ16GB SSD512GB Windows 11 Microsoft Office 2024搭載 WPS Office搭載 カメラシャッター 指紋認証 薄型 Copilotキー搭載 ナチュラルシルバー (BJ0M7PA-AAAF)
HP ノートパソコン 15-fd 15.6インチ インテル Core Ultra 5 125H メモリ16GB SSD512GB Windows 11 Microsoft Office 2024搭載 WPS Office搭載 カメラシャッター 指紋認証 薄型 Copilotキー搭載 ナチュラルシルバー (BJ0M7PA-AAAF)
¥134,377
4
Lenovo Chromebook クロームブック IdeaPad Flex 3i Gen8 12.2インチ インテル® プロセッサー N100搭載 メモリ4GB eMMC 64GB バッテリー駆動12.0時間 重量1.25kg アビスブルー 82XH001KJP
Lenovo Chromebook クロームブック IdeaPad Flex 3i Gen8 12.2インチ インテル® プロセッサー N100搭載 メモリ4GB eMMC 64GB バッテリー駆動12.0時間 重量1.25kg アビスブルー 82XH001KJP
¥39,800
5
Apple 2025 MacBook Pro 10 コアCPU、10 コアGPU のM5 チップ搭載ノートパソコン:Apple Intelligence のために設計、14.2 インチLiquid Retina XDR ディスプレイ、24GB ユニファイドメモリ、1TBのSSD ストレージ - スペースブラック
Apple 2025 MacBook Pro 10 コアCPU、10 コアGPU のM5 チップ搭載ノートパソコン:Apple Intelligence のために設計、14.2 インチLiquid Retina XDR ディスプレイ、24GB ユニファイドメモリ、1TBのSSD ストレージ - スペースブラック
¥296,323

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

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
¥1,880
2
Anker PowerLine III Flow USB-C & USB-C ケーブル Anker絡まないケーブル 240W 結束バンド付き USB PD対応 シリコン素材採用 iPhone 17 / 16 / 15 / Galaxy iPad Pro MacBook Pro/Air 各種対応 (1.8m ミッドナイトブラック)
Anker PowerLine III Flow USB-C & USB-C ケーブル Anker絡まないケーブル 240W 結束バンド付き USB PD対応 シリコン素材採用 iPhone 17 / 16 / 15 / Galaxy iPad Pro MacBook Pro/Air 各種対応 (1.8m ミッドナイトブラック)
¥1,890
3
【Amazon.co.jp限定】バッファロー microSD 32GB 100MB/s UHS-1 U1 microSDHC【 Nintendo Switch 対応 】V10 A1 IPX7 Full HD RMSD-032U11HA/N
【Amazon.co.jp限定】バッファロー microSD 32GB 100MB/s UHS-1 U1 microSDHC【 Nintendo Switch 対応 】V10 A1 IPX7 Full HD RMSD-032U11HA/N
¥980
4
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
5
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
6
【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限定 壁紙ダウンロード付き
¥5,280
7
KIOXIA(キオクシア)【日本製】USBフラッシュメモリ 32GB USB2.0 国内サポート正規品 KLU202A032GL
KIOXIA(キオクシア)【日本製】USBフラッシュメモリ 32GB USB2.0 国内サポート正規品 KLU202A032GL
¥699
8
キヤノン Canon 純正 インクカートリッジ BCI-381(BK/C/M/Y)+380 5色マルチパック BCI-381+380/5MP 長さ:5.3cm 幅:13.9cm 高さ:10.75cm
キヤノン Canon 純正 インクカートリッジ BCI-381(BK/C/M/Y)+380 5色マルチパック BCI-381+380/5MP 長さ:5.3cm 幅:13.9cm 高さ:10.75cm
¥5,545
9
バッファロー SDカード 128GB 100MB/s UHS-1 スピードクラス1 VideoSpeedClass10 IPX7 Full HD データ復旧サービス対応 RSDC-128U11HA/N
バッファロー SDカード 128GB 100MB/s UHS-1 スピードクラス1 VideoSpeedClass10 IPX7 Full HD データ復旧サービス対応 RSDC-128U11HA/N
¥1,980
10
バッファロー USBメモリ 32GB USB3.2(Gen1)/3.1(Gen 1)/3.0/2.0 充実サポート RUF3-K32GA-BK/N
バッファロー USBメモリ 32GB USB3.2(Gen1)/3.1(Gen 1)/3.0/2.0 充実サポート RUF3-K32GA-BK/N
¥880

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

デジタル用語辞典

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