iOSデバイスと接続して連携するガジェットの開発方法

最近、iOSデバイスと連携して動作するガジェットの開発方法について調べてたんだけど、iOSデバイスと通信する方法もいくつかあるようだ。沢山あって結構ややこしかったので、一覧にしてみる。
まず接続方法には、大きく分けて有線接続、無線接続の2通りがある。

有線接続

  • Lightningケーブル接続

    • 直接接続

    • サードパーティ製のMIDIアダプタ経由の接続

    • サードパーティ製のシリアル通信対応ケーブル経由の接続

  • イヤフォンジャック接続

無線接続

  • Wi-Fi接続

  • Bluetooth (SPP: Serial Port Profile)接続

  • Bluetooth 4.0 +LE (BLE: Bluetooth Low Energy)接続

そして、開発の難易度はAppleのライセンスポリシーが大きく影響してくる。何で有線接続方法がやたらと回りくどく細分化しているのかと言うと、Lightningケーブルで直接接続して通信するデバイスを開発するには、普通のiOS Developer Program契約だけでなく、別途Appleとのライセンス契約が必要となるからなのだ。


スポンサーリンク

Lightningケーブル接続でiOSデバイスと直接接続して通信可能なガジェットを開発するにはMFi Programというライセンス契約を結ばないと、ドキュメントやSDKなどの開発リソースを入手することができない。Bluetooth (SPP: Serial Port Profile)による通信を行うデバイス開発も同様に、MFi Programの契約が必要となる。ちなみにMFiってのは「Made For iPhone」の略らしい。

ここ最近、Bluetooth 4.0 +LE (BLE: Bluetooth Low Energy)で連携するガジェットがやたらと流行りだした理由の1つは、MFi Programの契約無しで開発可能な点も大きいようだ。

有線接続での通信方法としては、イヤフォンジャックで音声信号をやり取りする方法もある。この方法はMFi Program不要なので、着手の敷居がかなり低く、有線接続の方法としては最も手軽みたい。手軽に開発できるマイコンとしてお馴染みのArduinoではイヤフォンジャック経由で通信するためのSoftModemというライブラリもすでにある。SoftModemはその名のとおりソフトウェア・モデムのことで、デジタル信号と音声信号を相互に変換できるらしい。

MFi Program契約無しで有線接続するもう一つの方法として、サードパーティ製のMFiライセンス取得済みデバイスを経由する方法がある。注意点は、この方法で開発したアプリは個人使用限定のものとなり、AppStoreで配布することができないという点。
現時点でオイラが知っているのは、MIDIインターフェイスを経由する方法と、Lightningケーブルをシリアル通信へ変換するアダプタ・SDKを使う方法。


スポンサーリンク

iOS対応のMIDIインターフェイスはたくさん出ている。中でも割とメジャーなのはIK Multimedia社iRig MIDI 2IK Multimedia社は以前、エレキギターとiPhoneを接続した時にもお世話になったメーカーですね。

そしてLightningケーブルをシリアル通信へ変換するアダプタ・SDKについては、Redpark社Lightning端子からシリアル通信へ変換するケーブルSDKを配布している。

オイラが作るとしたら間違いなく個人利用になるんだけど、どうせ作るんだったらMFi Programで契約して直接接続したいなぁ。そっちの方がスマートだし。MFi Programって個人で契約できないのかな。

Romoみたいなガジェットを開発するのって結構ハードル高いのね。
https://www.youtube.com/watch?v=2OWMPOcjH-Y


スポンサーリンク

関連記事

Google App EngineでWordPress
プログラミングスキルについて考える
Deep Neural Networkによる顔の個人識別フレームワーク『OpenFace』
機械学習手法『Random Forest』
スクレイピング
iOSデバイスのためのフィジカル・コンピューティングツールキット『konashi(こなし)』
SONYの自律型エンタテインメントロボット『aibo』
口笛から作曲できる作曲アプリ『Chordana Composer』
WebGL開発に関する情報が充実してきている
動的なメモリの扱い
チャットツール用bot開発フレームワーク『Hubot』
オープンソースのSLAMライブラリ『Cartographer』
C#で使える機械学習ライブラリ『Accord.NET Framework』
UnityでShaderの入力パラメータとして行列を渡す
株式会社ヘキサドライブの研究室ページ
今年もSSII
Python拡張モジュールのWindows用インストーラー配布サイト
Raspberry Piでセンサーの常時稼働を検討する
オープンソースの3Dメッシュデータライブラリ『OpenMesh』
Raspberry PiでIoTごっこ
ブログをGoogle App EngineからAmazon EC2へ移行
AndroidもopenGLも初心者さ (でもJavaは知ってるよ)
ブラウザ操作自動化ツール『Selenium』を試す
Konashiを買った
OpenCVのfindEssentialMat関数を使ったサンプルを読んでみる
続・ディープラーニングの資料
Google XML Sitemap Generatorプラグインを3.4.1へダウングレード
UnityでARKit2.0
『Deep Fluids』流体シミュレーションをディープラーニングで近似する
Linuxでテレビの視聴・録画ができるオープンソースプロジェクト『Myth TV』
WordPressの表示を高速化する
複数画像から3次元形状を再構築するライブラリ『Multi-View Environment』
konashiのサンプルコードを動かしてみた
Unity ARKitプラグインサンプルのドキュメントを読む
Raspberry Pi
Verilog HDL
Unity ARKitプラグインサンプルのチュートリアルを読む
オープンソースの顔の動作解析ツールキット『OpenFace』
UnityでLight Shaftを表現する
ディープラーニング
UnityのGameObjectの向きをScriptで制御する
ポリゴンジオメトリ処理ライブラリ『pmp-library (Polygon Mesh Process...

コメント