分12デバイスとの接続それでは,デバイスとの接続を検知するところからはじめて見ましょう。ベースとなるViewController.hにRMCoreをimportします。<RMCore/RMCore.h>接続の検知は,RMCoreクラスのdelegateとして通知されます。起動時にdelegateの設定を行います。setDelegate:self];}実際のDelegateメソッドを以下のように記述します。ここで1つの問題,iPhoneをPCから切り離してデバイスに接続しないと動作しないので,デバッグのテキストを画面上のUILabelに表示するようにしました。debugText;delegateでRomoの各種処理を提供するRMCoreRobotオブジェクトが渡されるのですが,Romoは今後の機能拡張を想定してRMCoreRobotに各機能を表すインターフェースを実装する形で拡張される設計になっています。HeadTiltProtocolがiPhoneの角度を変更するインターフェース,DriveProtocolが左右のキャタピラを操作するインターフェース,LEDProtocolがLEDの点灯を制御するインターフェースとなっています。複雑な表記ですが,それぞれのインターフェースを指定した記述で,以下のようにRMCoreRobotオブジェクトを持つようにします。外すと以下のメソッドが呼ばれます。}}ちなみに今回は利用をしないのですが,開発する上で接続が手間となり,とりあえずデバイスに接続しなくてもシミュレータなどで処理を確認したい場合,deviceとの接続をダミーで知らせるRMCoreのconnectToSimulatedRobotというクラスメソッドと,接続解除をダミーで知らせるdisconnectFromSimulatedRobotというクラスメソッドがそれぞれ用意されています。connectToSimulatedRobot];以上のようにダミーで知らせると,robotDidConnectがdelegateで呼ばれます。LED続いて何かアクションをさせてみましょう。画面にUIButtonを配置し,タップするとLEDを光らせるようにしました。RMCoreRobotオブジェクトが実装しているLEDProtocolインターフェースに,LEDsというRMCoreLEDsクラスのプロパティがあります。こちらのメソッドを呼び出して処理を行います。dutyCycle:0.1];}この書き方で,0.5秒間隔で点灯と消灯を1:9の割合で行うようにできます。一瞬チカッと光るイメージです。点灯や点滅,決められた明るさでの点灯など,より詳しいメソッドはクラスドキュメントRMCoreLEDsで確認することができます。続いて,Romoに接続したiPhoneの傾斜を動かす方法です。RMCoreRobotオブジェクトが実装しているHeadTiltProtocolに各種プロパティとメソッドが用意されています。}}タップするごとに,頭が前後に傾くようになります。ちなみに最初の判定で-1を入れているのは,headAngleがモーターの状態などにより誤差が少し生じるためです。このあたりの調整が,デバイスをプログラミングしている実感を感じさせますね。ちなみに,completionにblockを設定することで,処理の完了を受け取ることができます。最後に,Romoの左右のキャタピラを使って移動させる方法です。RMCoreRobotオブジェクトが実装しているDriveProtocolに各種プロパティとメソッドが用意されています。}}タップすると,半径1m,秒速1mで回転移動を始めます(状況により誤差は出るようです⁠)⁠。一度タップすると停止します。回転以外にも前後の移動,その場での回転などざまざまなメソッドが用意されています。まとめさて,いかがでしたでしょうか?実際にRomoが動き出すと手応えがあり,デバイスを利用したプログラミングの楽しさを実感できます。今回は比較的制御しやすい方法をご紹介させていただきましたが,直接それぞれのモーターを制御するなど,もっと掘り下げた処理を行うこともできるので,ぜひ一度クラスドキュメントに目を通されることをおすすめします。Romoは現在,エデュケーショナルロボットとして販売していますが,スマートフォンで動かすことのできるロボットデバイスと捉えることで,皆さんが開発するアプリ次第で,エデュケーショナル以外にもさまざまな用途を見出すこともできるかと思います。UIを制御するRMCharacterをご紹介します。年に面白法人カヤック入社。Webやモバイルアプリの制作を主に,エンジニア,クリエイティブディレクターとして勤務。2014年4月よりセオ商事として独立。執筆や,各種媒体への記事の寄稿なども行っています。2019」を開催しました。DAY1・DAY2の様子を注目セッションとともにお伝えします。LINEのエンジニア3名がイベントに先駆けて見どころを紹介します。コードの安全性・安定性を高める開発サイクル~テスト管理の効率を上げ,脆弱性診断を自動で行う~本連載では,連載「業務を改善する情報共有の仕掛け」を受けつつ,安全性・安定性を加えた開発サイクルについて考えていきます。若者世代から圧倒的な人気を誇るライブ配信&動画投稿コミュニティアプリ「MixChannel」(ミクチャ)の裏側(レコメンドシステムやサーバサイド開発など)について解説していきます。その他の連載CSS3アニメーションでつくるインターフェイス表現CSS3によるアニメーション表現を紹介していきます。その中でも,幅広い読者に応用してもらえるだろうインターフェイスを主なお題とします。MySQL道普請便り本連載では,MySQLを使ったアプリ開発・運用に関するノウハウをご紹介していきます。RecipeUbuntuの強力なデスクトップ機能を活用するための,いろいろなレシピをお届けします。JavaScriptセキュリティの基礎知識JavaScriptに関するセキュリティ上の問題はどこで発生し,どうすれば防ぐことができるのか?について解説していきます。〜システムをきちんと運用するための基礎知識システムは「作って終わり」ではなく,運用の中でさまざまな問題が発生します。問題の発生に備えて事前にどのような対応をしておくべきなのか,問題発生時に何をしなければならないのか,ポイントを解説していきます。きたみりゅうじの聞かせて珍プレーソフトウェア開発の現場で体験したトホホな失敗,思わずうなる珍プレーをきたみりゅうじ氏が四コママンガで紹介。Linuxのメンテナンスの傍ら,Linuxやオープンソースソフトと日々を過ごす著者が,その魅力とつきあい方を,エッセイ風味でお届けします。PRESS特別編集部員,さわやか笑顔のスーパーハカーはまちちゃんとネット大好き14歳わかばちゃんが,毎号,読者の皆さんから寄せられたおたよりを紹介します。皆さんの日頃の悩みにも答えちゃいますよ。]メールでのお知らせメールで次の案内をお送りしております。メールの配信を希望する方は,利用したい項目をチェックしてメールアドレスを入力し,[登録]ボタンをクリックしてください。UPDATES[ほぼ週間に1回]新刊メールマガジン[ほぼ週間に1回]電脳会議の各号案内[ほぼ1ヵ月半に1回]※変更する場合や停止する場合は,登録情報変更ページをご覧ください。※登録いただいたメールアドレスには,そのお知らせ以外,配信いたしません。Ltd.ページ内容の全部あるいは一部を無断で利用することを禁止します。個別にライセンスが設定されている記事等はそのライセンスに従います。