2014年03月26日

今後の研究テーマについて考えた

今週に入って、信州はさらに暖かくなってきました。最低気温が零下になる日はなくなったので、やっと過ごし易くなってきたのは嬉しいです。最高気温も15℃を超える日が続いているので、今年の春は早く訪れそうな気がします。ただし、寒冷前線が通過すると、中信地域は一気に冷え込んで4月でも雪が降ることがあります。この気温変化の激しさは4月末まで続きます。暖かくなってきたのは良いのですが、私は先週末から花粉症の症状が急にひどくなりました。これから一ヶ月間花粉症に悩ませられる日々が続くのかと思うと憂鬱な気分です。

さて、先週末で本業の仕事がやっと一段落しました。今回の仕事は久しぶりのローエンド組込みで、直接マイコンを制御するプログラムを書いたのは3年ぶりでした。そのため、なかなか勘が戻らず苦労しました。やはり組込みLinuxの方がずっと楽です。ArduinoやRaspberry Piみたいな新世代の組込みボードを触っていると自然にワクワク感が湧いてくるのですが、ライブラリもOSも載っていないボードを動かすのはぜんぜん楽しくないです。ちなみに、こういうボードには大抵ルネサス(ルネサスエレクトロニクス)のCPUが搭載されています。ここ数年は組込みLinuxの仕事が続いていましたが、組込みLinuxのターゲットボードではほぼ例外なくFreescaleなどのARMコアを内蔵したCPUやSoC(System-on-a-chip)が搭載されていて、いまではルネサスのSHシリーズが使われることはありません。組込みLinux中心に移行する以前は、私は10年以上ローエンド組込みの仕事をしていました。OSはuITRONを使うことが多く、ターゲットハードウェアは大抵ルネサス(旧日立)のCPUが搭載されたボードでした。ルネサスのCPU向けにプログラムを書いていると、「これは一種の苦行ではないか」と感じることがあります。CPUに内蔵されている周辺モジュールのインテリゼンスが低く、ソフト側で超低レベルな制御処理をしっかりと実装しないと、まともに動いてくれないからです。私のようなベテランでさえ苦労することがあるので、ルネサスのCPUをちゃんと動かすのは、マイコン初心者にとってかなりハードルの高い開発作業だと言えます。ローエンド組込み向けのハードウェアではいまもルネサスのCPUが多数派を占めていますが、世の中には苦労している経験の浅い組込みプログラマがかなりの数存在するんじゃないかと思っています。仕事として選んだ以上はこういうハードルは自力で乗り越えていくしかありませんが、製造業の衰退が続いている現状を観ると、ローエンド組込みに将来性があるのかという点については大きな疑問を感じざるをえません。ArduinoやRaspberry Piみたいなボードが流行っているのは、いままでのローエンド組込みに対するアンチテーゼなのではないかという気がします。こういうボードが日本からは一つも現れていないことが、(時代遅れの開発手法を捨てられず、ひたすら現状維持を続けている)いまの日本の組込み分野の実情を反映しているように思えてなりません。

話は変わりますが、ここ5年ほど「どういう分野の研究テーマに取り組むべきかと」という問題でずっと悩んでいます。これについて考えない日はないと言っても良いくらいです。今回久しぶりにローエンド組込みの仕事をやって、改めて自分の志向について再認識したことがあります。

 ・音声や映像・画像(AV)を使わないプログラムは作っても楽しくない。

音声を映像・画像を伴うソフトウェアのインターフェース対象は人間(ヒューマン)なのに対して、これらをまったく伴わないソフトウェアのインターフェース対象はマシンやデバイスです。前者のプログラムの最終的な目的は人間に使ってもらうことですが、これに対して、後者はマシンやデバイスを正常に動かすことが最終的な目的です。やや乱暴な分け方かもしれませんが、現代のソフトウェアは大きくこの2つの種類に分けることができると思っています。ここで、一つの問が浮かびます。

 ・一般人にとって、どちらがより価値の高いソフトウェアなのか。

マシンやデバイスを正常に動かくことにも当然高い価値はあります。自動車がその代表例と言えるでしょう。しかし、車が正常に動くことは一般人には当たり前のことです。そして、車を正常に動かすソフトウェアに高い価値を感じてくれるのは自動車メーカーだけです。車載ソフトウェアという分野が存在しますが、この種のソフトはほとんど自動車関連メーカーの内部でのみ作られています。このようにマシンやデバイスを制御するソフトを必要とするのは、そのようなソフトを搭載する製品を開発している企業だけです。こういう製品が正常に稼働することは一般人にとっては普通のことであり、その事自体を特に評価することはありません。一般人が高い価値を感じてくれるのは、やはりAVを伴うソフトウェアやコンテンツの方です。当然の事ながら、音声や映像は人に聴いてもらったり視てもらうことを前提として創られています。YouTubeやニコニコ動画の人気が高いのは、多くの人がこれらのサイトで配信されているコンテンツを視たいからです。一般人にとって価値が高いということは、多く企業もその種のソフトを欲しているということです。マシンやデバイス向けのソフトで利益を得るのはそれらを搭載する製品を開発している企業だけなのに対して、AVを伴うソフトは一般人の役に立ち、同時に企業にも利益をもたらします。

 ・AVを伴うソフトウェアを作らないと、一般向けのビジネスにはならない。

ここでの「AV」という言葉は広い意味で使っています。BluetoothやZigBeeみたいな通信機能がコア部になっていても、Webクライアントやモバイルアプリをインターフェースとして使っていれば、それらもAV利用ソフトの範疇に入れます。「音声や映像・画像の入出力ができる。あるいは、音声や画像で操作できる」ことが、高価値なソフトを生み出す重要な条件だと考えます。本業の仕事では仕方なくやることもありますが、研究テーマで取り組む分野としてはこういう条件が存在しないソフト開発はもうやりたくいないと思っています。

現代ではAVと一括りで表現することが多いですが、音声と映像にも大きな差があります。映像は音声より10倍はアピール力があるじゃないかと思います。1890年代から映画は存在していましたが、映像がより一般的になったのは、やはりテレビ放送が始まった1950年代からでしょう。現代人にとって映像が身の回りに溢れていることはいまでは普通のことです。私は一切テレビを視ませんが、いつもテレビをついていないと寂しさを感じる人が多いことは知っています。常にテレビをつけている人にとっては、生活の中に映像が存在しない状態は考えられないようです。これくらい現代人にとって映像は無くなはならないコンテンツになっています。

 ・今後取り組むのは映像や画像に関連する分野に絞る。

これを最大の目標にして進んでいけば、大きなハズレを引いてしまうことはないんじゃないかという結論に至りました。一般人がもっとも価値を感じるコンテンツは映像や画像であることに異論を挟む人はまずいないでしょう。「人は何に価値を感じるか」ソフトもコンテンツの一種と考えるなら(コンテンツこそが一般人が価値を感じるものなので、むしろ「ソフトはコンテンツの付属物」と言った方が良いかも)、現代のソフトウェアにとってこれが一番大事なテーマだと思います。コンピュータの登場以来ハードとソフトいう区分がずっと使われてきましたが、これにコンテンツを加えて、いまは以下の優先度でモノづくりを考えるべきです。

 コンテンツ > ソフトウェア > ハードウェア

マシンやデバイスを動かすソフトにはコンテンツ(流行りの用語を使うなら、UX(User Experience)の方が適切かも)という要素は存在しませんが(こういうソフトにも本当はUXが存在すると思います。ハードの操作性の大部分を決めるのはソフトだからです)、人間が操作するソフトには必ずコンテンツあるいはUXが存在します。そして、いまは世界中の企業がこういうソフトを「ユーザ中心設計(User-Centered Design, UCD)」で開発しています(日本では、いまだにUXの重要性に気づいていないメーカーが多いみたいですが・・・)。

具体的にどの分野に的を絞るべきかについてはまだ決めかねていますが、将来性が高く有望なのはやはりNI(Natural Interaction)ではないかという気がします。PCの全盛期には「Microsoftの動向を追いかけていれば失敗はない」と言われていましたが、多数派のプラットフォームがモバイル機器に変わってしまったいまは「AppleやGoogleを追いかけていれば失敗はない」と考えるIT業界人が多いでしょう。03/15の記事に書いたとおり、PrimeSense社を買収したAppleは近い将来必ずモーションセンサーとNI技術を搭載した製品を出してくるはずです。一方のGoogleも以下のような動きをしています。

 Google、携帯に3D空間認識を与える Project Tango 発表。奥行きセンサつきスマートフォンを開発者に配布 - Engadget Japanese

ゲーム機だけでしか使われていなかったモーションセンサーとNI技術が家電やモバイル機器にも搭載され、これらの機器が連携して動くのは大きなムーブメントになりそうな予感がひしひしとします。近い将来にブレークする分野としてNIとその周辺技術に賭けるのが一番勝算がありそうです。「NIだけに的を絞って、一点突破を狙おうか」という気持ちが日に日に大きくなってきています。
タグ:UX NI
posted by とみやん at 17:02| Comment(2) | TrackBack(0) | 日記

2014年03月22日

飯田で過ごす週末

本業の仕事の関係でいま飯田(長野県)に滞在しています。03/18からこちらに来ていますが、来週の03/25に塩尻に戻る予定です。飯田は南信地域の中心となっている街です。飯田に来たのはこれが3回目ですが、泊まったのは今回が初めてです。「やっぱり寂れているなぁ」というのが飯田の第一印象になってしまいますね。南信の街は寂れているという噂は聞いていましたが、やはりその噂どおりでした。人口も少なく経済圏も小さいのでこれは仕方がないことなのでしょう。ただし、飯田の街はこぢんまりとまとまっていて、良い感じの寂れ方という感じもします。日本全国どこにでもある地方の小さな街というのがもっとも適切な表現じゃないかと思います。長野や松本と比較するのは可哀想だという気がします。周辺の観光資源は天竜峡の川下りと点在する温泉宿くらいなので、飯田を訪れる人も少ないのでしょう。
IMG_4379.JPG
IMG_4383.JPG
IMG_4371.JPG
IMG_4376.JPG
飯田は松本や塩尻から車で約1時間半の距離ですが、電車で来ると3時間もかかります。飯田線は電車の本数が少なく単線で駅の数がものすごく多いからです。このように交通の便が悪い所為もあり、南信と中信間の人の行き来は少ないのが実情です。飯田線ほどではありませんが、長野−松本間の篠ノ井線も電車の本数は多くありません、そのため、北信、中信、南信の間の交流はほとんどなく、それぞれがバラバラの経済圏を構成しています。地理的にも北信、中信、南信の間は山で隔てられています。この3つの地域(東信を加えると4つ)がたまたま長野県という線で一つにまとめられてだけで、これらの地域が一緒に活動することは滅多にありません。南信にも中小の製造業企業はありますが、名古屋を中心とした中部地方の企業と取り引きをしているところが多いようです。宿泊中のホテル内の食堂で他人の話を聞いていると、ほとんどは中部や東海方面から来ている観光客、営業マン、工事関係者などです。経済圏としては信州の中に入っいますが、実際の経済活動としては南信は中部や東海との繋がりの方が強いのが実情です。気候的にも北信や中信と差があります。南信の方がやや温暖で大雪が降ることはほとんどありません。地元住民の話題の中にも北信や中信が登場することは少なく、まるで遠く離れた別の地方の話をしているみたいな感じで「北の方」と呼んだりします。

いまは寂れている飯田ですが、30年後には大きく様変わりしているかもしれません。今年中の着工が予定されているリニア中央新幹線の駅が飯田市北部か高森町(下伊那郡)辺りに出来る予定になっているからです。JR東海の計画ではリニア中央新幹線の東京−名古屋間が開業するのは2027年となっていますが、この計画どおりに工事が進む可能性は低いんじゃないかと思います。現在の橋本駅(神奈川県相模原市)の近くにリニア中央新幹線の駅が設置される予定になっていますが、東京−橋本間の首都圏は用地買収が困難なこともあり、このルートはほとんどが大深度地下トンネルで結ぶことになるらしいです。そして、橋本以西は甲府市を通って飯田へ至るルートが計画されていますが、甲府−飯田間も南アルプス山脈を貫通するトンネルで結ぶ計画です。これらのトンネルは難工事が予想されます。いずれにしても、リニア中央新幹線が開通すれば、飯田周辺は大きく変わっていくことでしょう。

長野新幹線の途中駅が存在する佐久平の周辺は近年宅地や別荘地の開発がさらに進んで、いまでは東京近郊の街みたいになっています。現在の終着駅長野も中心地区の再開発が進み、街全体が小奇麗な感じに様変わりしました。来年(2015年)春に長野−金沢間の北陸新幹線が開業すれば、佐久や長野はさらに開発が進んでいくでしょう。リニア中央新幹線の開業が現実的になってくると、飯田周辺でも開発が進んでいくかもしれません。関東や中部地方からの観光客は確実に増えるでしょうし、Iターン者やリタイヤ組の中には南信を移住先候補地として考える人も出てくるでしょう。このように東信、北信、南信の近代化が進んでいく中で、中信だけが取り残されています。信州に残された「田舎」として逆に観光客を集めることができるかもしれませんが、移住先としては魅力のない地域という印象を持たれるのは大きなマイナスだと思います。関東周辺ではIターン者やリタイヤ移住者が地域繁栄の活力源になっている所が多く、逆に移住者が少ない地域ほど衰退のスピードが加速する傾向がはっきりと現れています。いまはまだそれほど大きな動きになっていませんが、中信地域の衰退はこれから10年位で顕在化してくる可能性が大だと私は想像しています。
posted by とみやん at 08:21| Comment(2) | TrackBack(0) | 日記

2014年03月15日

ASUS Xtion PRO LIVEを入手した

前記事から1ヶ月も間が空いてしまいました。記事のネタは貯まっているのですが、本業の仕事が忙しくて、なかなか記事を書けないまま時間が過ぎていました。いまやっている本業の仕事はもう少しで一区切りつきそうなので、そうしたら、研究テーマの方に少しは時間を割けるようになるんじゅないかと思っています。

3月の初旬は最低気温-8〜-5℃最高気温3〜5℃という日が続いて、まだまだ厳しい寒さが続くのかと覚悟していたのですが、今週に入って信州もやっと少し暖かくなってきました。平均気温が急に5度位上がった感じがします。天気予報によると、今日の最低気温は-5℃ですが最高気温は9℃まで上がるそうです。今日の中信地域は雲がほとんどない快晴で日差しが強いので、自然と気分も明るくなり、体感温度は10℃を超えている気がします。周りの山々に雪が多く残っている所為で空気は冷たいままなのですが、今日みたいに日差し強いと体感温度は高くなりますね。信州もやっと春の兆しを感じるようになってきました。しかし、少し暖かくなったからといって喜んでばかりはいられません。毎日の気温の変化がいきなり激しくなるので、信州ではこの時期風邪を引いたり体調を崩す人が急に増えるからです。朝から日中にかけて0℃前後から10〜15℃位まで温度が一気に上がり、夕方から深夜にかけて逆向きに温度が下がります。つまり、一日のうちに10度以上の気温変化が2回もあります。さらに厳しいのは、日によって最高気温が10度以上違うこともざらにあることです。晴天だと最高気温は15℃を超えることもあるのですが、曇ったり雨だったりすると5℃位までしか上がりません。標高の高い地域独特の気候です。信州の人口の多い地域の中で一番標高が高いのは松本を中心とした中信ですが、早春の中信の気温変化の激しさは体感した者にしか解らないでしょう。これほど激しい気温の変化を体験できる地域は全国でも稀だと思います。信州の寒さのピーク時期は1〜2月ですが、この時期よりも3〜4月に風邪を引く人が多くなります。さらに、中信地域では3〜4月はほぼ毎日強風が吹くことも悩ましい問題です。スギ花粉が蔓延している中で強い風が吹くので、花粉症の人は辛く苦しい日々を過ごす羽目になります。スギ花粉のピーク時期は、ゴーグルでも着けないと外出する気にならない程ひどい日があったりします。

さて、またしても新しいガジェットを手に入れたので、その紹介記事を書こうと思います。今回入手したのはASUS Xtion PRO LIVEです。2012/08/22にもXtionの紹介記事を書きましたが、Xtionの存在を知ったのはこのときです。それ以来ずっと欲しくて、ヤフオク!にはアラーム登録をし、Amazonや楽天市場でも頻繁に検索していしました。しかし、ヤフオク!に出品されることは滅多になく(2〜3回あったのですが、いずれも15,000〜20,000円で落札されていました)、Amazonや楽天市場での販売価格も23,000〜27,000円位でずっと安定しており、なかなか安価に入手できる機会に恵まれませんでした。どうもメーカーのASUSが発売当初に一定の数量しか出荷せず、その後販売出荷を続けていないじゃないかという気がします。たとえ販売を継続していたとしても、出荷量はかなり少ないようにに思えます。ASUSのページには製造中止とは書かれていませんが、ASUSはもうこのXtionの生産量を増やすつもりはないようです。いずれにしても、現在市場に出回っている数量はかなり少ないのは間違いないと思います。そうでなれば、この製品の販売価格がずっと高値で安定している説明がつかないからです(発売当初より現在の販売価格の方が高いくらいです)。

今回も入手手段はヤフオク!です。本体のみの中古品が安い開始価格で出品されていたのを見つけてウォッチリスト登録しましたが、私と同じようにXtionを欲しがっているマニアはいるだろうと予想していました。予想していたとおり、やはり最後は高値での競りになってしまいました。それでも、10,000円以下で完動品を落札できのはラッキーだったと思っています。たとえ中古品でも、Xtionをこんなに安い値段で入手できる機会はもうないかもしれないからです。

下が、やっと入手できたASUS Xtion PRO LIVEの写真です。実物のXtionを見たのは初めてですが、想像よりもサイズが小さいのには驚きました。Kinectより二回りくらい小さいです。大きさの比較として100円硬貨を並べて撮りましたが、Xtionのサイズが判ってもらえるでしょうか。デモとかでKinectやXtionを外へ持ち出すことはありそうな気がします。ハンドキャリーだとKinectの方はかさ張りそうですが、Xtionの方はそれほど苦にはならなさそうです。Xtionのこの小ささは結構嬉しいです。
IMG_4352_1-ASUS-Xtion_PRO_LIVE-640x480.jpg
IMG_4356_1-ASUS_Xtion_PRO_LIVE-640x480.jpg
Xtionは俗に「Kinectの互換機」とか呼ばれていますが、KinectとXtionの仕様は結構差があります。また、Xtionには次の2種類の製品が存在します。

 Xtion PRO LIVE
 Xtion PRO

Xtion PRO LIVEには深度センサーに加えてRGBカメラとマイクが搭載されていますが、Xtion PROの方には搭載されていません。Xtion PROに搭載されているのは深度センサーだけです。KinectにはRGBカメラもマイクも搭載されているので、Kinectと同等の機能を持つのはXtion PRO LIVEの方になります。さらに、KinectとXtionを比較すると、以下の2つの差があります。
  1. Kinectにはチルトモーターが搭載されており、本体の向きを制御できるが、Xtionには搭載されていない。
  2. Kinectには外部電源(ACアダプタ)が必要だが、Xtionには必要なく、USBバス・パワーで動作する。

1についてはKinectより劣りますが、2はXtionの方が優れています。デモなどでAC電源を確保するのは難しいことがありますが、XtionはノートPCのUSBポートに挿すだけで動作します。外出先ですぐに動かして人に見せたい場合があると思います。そういう場面では、Xtionのこの利点は結構大きいです。私がどうしてもXtionを欲しかった最大の理由がこれでした。

Kinectと同様に、Xtionに搭載されている深度センサーからデータを取得するにはソフトウェアが必要になります。MicrosoftからKinect for Windows SDKが配布されていますが、これはKinect専用のSDKなのでXtionでは使えません。Xtionを動かすには、OpenNIというオープンソースのSDKを使うことになります。OpenNIはKinectとXtionの両方に対応しており、LinuxやMac OS Xでも使えます。そのため、KinectやXtion用のNI(Natural Interaction)開発環境を構築するなら、Kinect for Windows SDKではなくOpenNIの方をメインの環境として使いたいと思っていました。本業の仕事ではまだWindows PCを使っていますが、プライベートや研究テーマのソフトウェア開発では私はもうMacとLinuxしか使っていません。2012/08/19の記事に書いたとおり、Xbox 360用Kinectもすでに入手済みですが、NIプログラミング(Kinect Hacks)はまったく始めていませんでした。Xtionを入手したのを機会に、本格的にNI開発に挑戦してやろうとモチベーションが上がっています。

KinectとXtioinに組み込まれている深度センサーを開発したのはイスラエルのPrimeSenseという非公開企業だそうです。このPrimeSense社は2013年11月25日に約3億6000万ドルでAppleに買収されています。この動きについては多くの観測記事が流れていますが、それらの中でも、Apple TVにモーションセンサーが組み込まれるんじゃないかという記事が多く出回っています。

 新型Apple TVにモーションセンサー搭載か?ゲーム機業界に激震も - ライブドアニュース
 新型「Apple TV」、4月に発表か - CNET Japan

新型Apple TVについてもたくさんの観測記事が流れていますが、今年中にApple TVの新製品が発売されることは確実視されています。Apple TVにモーションセンサーが搭載されれば、Apple TVはXbox 360に対向するゲーム機の役割も持つことになります。いずれにしても、買収したPrimeSense社の技術を使って、近いうちにAppleは自社製品のどれかにモーションセンサー機能を必ず組み込むでしょう。そして、それらの機能がiPhoneやiPadと連携するんじゃないかと予想している人が多いようです。確かにこれは考えられる動きであり、本当にそういう製品が出てくれば、さらに大きな展開になりそうな可能性を感じます。こういう動きを察知して、すでにゲーム業界ではモバイル機器と連携する新しいジャンルのゲーム開発に着手する動きが出ているようです。種を植えてモーションセンサーとNIの芽を咲かせたのはMicrosoftですが、これらを大きな花を育てるのはAppleになるかもしれません。NIは今年中に大きなブレーク期を迎えそうな予感がしていて、私のトレンド・アンテナもびんびん反応しています。手をこまねいて眺めていないで、いまからでも遅くないので、とにかくNI開発を始めないとこういう動きに追いつけなくなりそうです。

故Steve Jobs氏は「テレビを再定義したい」と言っていたそうです。遺言みたいな感じで、近いうちにAppleは必ず新世代の製品を出して、テレビの利用形態に革命を起こそうと動いてくると私は予想しています。Appleからどんな製品が出てくるかは難しい予測になりますが、従来のテレビにインターネット閲覧やゲーム機的な機能が融合しそうだというのは誰しも想像している事です。Appleなら、そういう大方の予想を超える何かを製品に搭載するような気もします。まだ実用化の段階に入っていないと観られていた技術を製品に組み込んで、その技術を一気にブレークさせるのが得意な会社です。いずれにしても、テレビは放送番組やビデオを視るためだけの家電ではなく、知人とビデオ会話したり、Webで情報を得たり、電子書籍を読んだり、写真を観たり、冷蔵庫の中身を表示でき、照明器具やエアコンの調整もできるような多彩な役割を持つ家庭内のハブ的な物に変わっていくと思います。いままでPCで使っていたプリンタみたいな機器も、テレビにつなぐのが当たり前になる時代が来るかもしれません。ノートPCをタブレットに置き換える流れが大きくなっていますが、これからPCの役割はさらに縮小していくでしょう。もし新型Apple TVにモーションセンサーが搭載されたら、それがテレビ革命の始まりになるんじゃないかと思えてなりません。

タグ:kinect Xtion OpenNI
posted by とみやん at 10:10| Comment(0) | TrackBack(0) | Gadget Hacks > Kinect

2014年02月15日

sanwa PM3というテスターを購入

またも全国的に大雪のようですね。中信でも昨日から雪が降り続いています。先週の雪が半分以上溶けないで残っているところに、またしてもドカ雪です。塩尻は市街地の積雪もとうとう1mを超えてしまいました。除雪をやっていない場所の積雪は2mを超えています。周りの家々は雪の合間をみながらの除雪作業で大わらわです。除雪をやらないと玄関が雪で埋まって出られなくなるので、嫌でもやらざるをえないのです。今日近くの西友へ行こうとしたら、アパート周辺の普段歩いている小道が完全に雪で埋まっており、膝ぐらいまである雪をかき分けながら歩く羽目になってしまいました。やっとの思いで、車道に出ると、車道の除雪もぜんぜん間に合っておらず、幅広の道だけ車が一台やっと通れる程度除雪されてるだけでした。両側の歩道の積雪は1mを超えておりとても歩けません。仕方なく、車道をてくてくと歩いて西友へ向かいしました。スパイクタイヤでも雪でスリップしまくりなので、車もあまり走っていません。交通網が完全に麻痺している所為で、スーパーにも食料品が入荷していないようで、パンなどは売り切れ状態でした。市街地でこんな状態なら、山の中の別荘地などは完全に雪に閉ざされた状態になっていることでしょう。1km圏内の近場の店に行くのさえままならなく、中信地域はもはや完全な雪国です。さすがに、この大雪にはまいってしまいます。いつまでこんな状況が続くんだろうと、ちょっと不安なってしまいました。

さて、前の2つの記事に書いたとおり、Arduinoを使って電子工作の勉強を始めました。モバイルデバイスを連携するスマート・ガジェットを開発することを最終的な目標に定めています。

電子工作を始めるにあたって、Arduinoみたいなプラットフォームとなるボードや電子部品は当然必要ですが、これら以外にもいくつか必須の物があります。それは工具と計測器です。工具の代表と言えばハンダごてですが、計測器の代表はテスターです(私が学校で電子工学を学んでいた頃は「テスター」という呼び方が一般的だったのですが、最近は「マルチメーター」とも呼ぶようです)。テスターは導通や電圧チェックに必要不可欠の計測器で、これがないと電子回路を組むのは困難です。という訳で、下のようなテスターをAmazonから購入しました。
IMG_4298_1-sanwa_PM3-Digital_Multimeter-640x480.jpg
IMG_4323_1-sanwa_PM3-Digital_Multimeter-640x4860.jpg
IMG_4319_1-sanwa_PM3-Digital_Multimeter-640x480.jpg
sanwa(三和電気計測器)のPM3という型番の携帯型テスターです。通常サイズと携帯サイズのどちらを買おうか迷ったのですが、外に持ち出す可能性もあるかもしれないので、今回は後者にしました。値段は3千円弱でかなり安かったのですが、sanwaは一応メジャーな計測器メーカーなので、安くても使い物にならないほど悪い性能ではないだろうと思って、これに決めました。Amazonのカスタマーレビューでもそこそこ評価が高かったことも、この機種を選択した理由です。

実物は結構安っぽくて、ちょっとおもちゃみたい造りです。一万円台の高性能なテスターと比べると、測定精度はかなり低いようです。値段が安いので、それは仕方ないことですが、実用上測定精度の低さが問題になることはあまりないんじゃないかと思っています。経済的に回復したら、もっと高性能なテスターを一台買うつもりなので、当面はこいつを使っていきます。

私が学校で電子工学を習ったのはトランジスタ全盛の時代です。ただし、すでにアメリカでは4ビットマイコンが登場していたので、アナログからデジタルへ移行は始まっており、学校の授業の中でデシタル回路についても習いました。NEC TK-80などのマイコンキットが日本で登場したのは、私が学校を卒業した後です。大昔の話になりますが、その頃のテスターはすべてアナログ式でデジタル式の物はまだ存在していませんでした。測定レンジの切り替えも当然マニュアル方式です。いまではデジタル式のテスターが全盛となっており、アナログ式の製品はほとんど売られていません。テスターの性能も格段に向上しています。このサイズのテスターでコンデンサ容量の測定までできるのは、私にとっては驚きです。デジタル式テスターが登場したばかりの頃は、コンデンサ容量の測定ができる製品はかなり高価だったと記憶しているからです。Arduinoみたいな新世代のボードだけでなく、こういう最近のデジタル・テスターを見ても、トランジスタ世代の私には隔世の感があります。本当に時代は変わってしまったんだなぁと思わずにはいられません。

posted by とみやん at 17:02| Comment(0) | TrackBack(0) | 日記

2014年02月09日

Arduinoで電子工作事始め

今朝起きたらやっと雪が止んでいました。私のアパートの部屋は塩尻駅の近くですが、市街地でも50cm以上の雪が積もっています。人がほとんど通らない空き地や吹き溜まりの積雪は1m近いです。今日は日が照って天気も良かったのですが、周りの家々は除雪作業で大わらわです。とても一日では片付かないので、これから毎日除雪を続けることになるんでしょう。これだけ積もると、2〜3週間は雪が残ったままです。その間にまた雪が降ると、2月一杯下手すると3月に入っても積雪が残ったままになるかもしれません。中信地域がこんな雪国みたいになるのは珍しいです。ずっとアパート住まいなので、私は除雪作業をやったことは一度もありません。今シーズンは数回しか積もる程の雪は降っていなかったのですが、ここにきてのドカ雪です。中信は2〜3月にこういう大雪になることが多く、4月の中頃に雪が降ったりすることもあります。厳しい寒さはまだまだ続きますが、これからの天気は晴れることが増えて、じわじわと春の兆しが感じられるようになってきます。ただし、一歩進んでは半歩下がるみたいな感じで、なかなか暖かくなりません。少しでも暖かくなってくると、風邪をひく人が増えるので油断は禁物です。

さて、昨日入手したArduino Unoをさっそく使ってみました。まずは、統合開発環境のArduino IDEをPCへインストールすることから始めました。Arduino IDEはArduino公式サイトの下のページからダウンロードできます。

 Arduino - Software

Windows, Mac OS X, Linux版が用意されていますが、今回使ったのは当然Mac OS X版です。Mac OS X版Arduino IDEのインストールは簡単で、ダウンロードしたDMGファイルをマウントして、その中に収納されているArduino.appを「アプリケーション」フォルダへコピーするだけです。下の公式サイトの「Getting Started with Arduino」というページに、Mac OS X版Arduino IDEのインストール手順と初歩的な使い方が掲載されています。

 Arduino - MacOSX

上のページに書かれている手順に従って、USBケーブルでArduino UnoとMacを接続した状態でArduino.appを起動しました。すると、下のようなウィンドウが開きました。
SCShot140209_0041-Arduino_IDE-Learning_Basic_Examples-Arduino_Uno-500x622.png
これはスケッチ・ウィンドウと呼ぶようです(Arduino IDEでは、プログラムのことを「Sketch(スケッチ)」と呼びます)。このウィンドウに入力したコードはファイルとして保存できますが、そのファイルはスケッチブックと呼ばれます。日本語環境で起動すると、Arduino IDEのメニューやメッセージはすべて日本語で表示されます。これらが英語表示だと英語圏以外のユーザーにとってハードルが高くなるので、自動的に日本語表示になるのは親切だと思いました。上のように、Arduino IDEのスケッチ・ウィンドウはとてもシンプルですが、このウィンドウ内にコードを入力してビルドするだけで、Arduinoで動くスケッチを作成できます。コンパイラのインストール、ブロジェクトの作成や設定、ターゲットハードウェア用スタートアップコードの作成、デバッガ用初期化スクリプトの作成など、いままでの組込みボードで必要だった面倒な準備は一切不要です。

ただし、初めてArduino IDEを起動したときにやらないといけないことが一つあります。それは、ターゲットボードの種類とシリアルポートを選択することです。まずは、[ツール]>[マイコンボード]メニューからターゲットボードの種類を選択しようとしました。しかし、デフォルト状態で[Arduino Uno]が選択済みだったので、これの設定を変える必要はありませんでした。
SCShot140209_0046-Arduino_IDE-Learning_Basic_Examples-Arduino_Uno-945x633
続いて、ターゲットボードが接続されているシリアルポートを選択しました。Arduino UnoにはUSB−シリアル変換チップが搭載されており、USBポートに接続したArduino UnoはUSBシリアルデバイスとして認識されるようです。Arduino公式サイトの「Getting Started with Arduino」ページに書かれているとおりに、[ツール]>[シリアルポート]メニューを開くと、下のようにメニュー項目が存在しました(Arduinoが接続されていないと、上のの2つのメニュー項目は表示されません)。
SCShot140209_0047-Arduino_IDE-Learning_Basic_Examples-Arduino_Uno-780x622
/dev/tty.usbmodemfd111」と「/dev/cu.usbmodemfd111」のどちらを選ぶべきなのか一瞬迷いましたが、取りあえず、前者のメニュー項目を選択してみました。ちなみに、後ほど後者の方にシリアルポートを変えてみましたが、結局どちらでも問題なくスケッチをArduinoへ書き込んで動かすことができました。この2つのメニュー項目はどちらを選択しても大丈夫みたいです。なお、シリアルポート名の数字部分はMacのハードウェア構成やUSBポートの位置によって変わるようです。ターゲットボードの種類とシリアルポートを選択すると、Arduino IDEのスケッチ・ウィンドウの最下部にそれらの情報が表示されました。
SCShot140209_0054-Arduino_IDE-Learning_Basic_Examples-Arduino_Uno-500x600.png
これでArduino IDEの初期設定は済んだので、さっそくスケッチ・ウィンドウにサンプルスケッチのコードを入力してみました。
SCShot140209_0055-Arduino_IDE-Learning_Basic_Examples-Arduino_Uno-500x600.png
最初に試したのは、CPUから出ているIOピンのHigh/Lowを周期的に切り替えることで、LEDを点滅させるだけの簡単なサンプルスケッチです(電子工作ユーザーはこれを「Lチカ」と呼びます)。公式サイトの「Arduino - Learn the basics」ページにたくさんのArduinoのサンプルスケッチが掲載されていますが、下のページの「Blink」という奴です。

 Arduino - Blink

実際に試したコードは上のページのものを少しアレンジしています。Arduino UnoにLEDを挿したら、いきなり1秒周期の点滅を始めたので、すでにこのスケッチがボードに書き込み済みの状態だったようです。そこで、LEDの点滅周期を300ミリ秒に変えてみました。これによって、本当に新しいスケッチが動いているかが判断できるはずです。

Arduino IDEのスケッチ・ウィンドウにコードを入力して、上側の[マイコンボードに書き込む]ボタンを押しました。
SCShot140209_0058-Arduino_IDE-Learning_Basic_Examples-Arduino_Uno-500x600.png
すると、スケッチがコンパイルされ、その実行イメージがArduinoへ書き込まれました(この程度の小さなスケッチだと、2〜3秒でコンパイルと書き込みが終わります)。Arduinoへ書き込まれたプログラムは自動的に実行されるようです。スケッチの実行イメージの転送、書き込み、そして再起動は、Arduino側のCPUの内蔵Flash Memoryに存在するブートローダがやってくれているのだと思います。
SCShot140209_0061-Arduino_IDE-Learning_Basic_Examples-Arduino_Uno-500x600.png
下の写真が、このBlinkスケッチが動いている様子です。
IMG_4221-Arduino_IDE-Learning_Basic_Examples-Arduino_Uno-640x480.JPG
LEDの短い方の足(カソード)をGNDピンに、長い方の足(アノード)をDigital IOヘッダの13ピンに挿しています。公式サイトのページにはアノード側に220Ωの抵抗を挟むように書いてありましたが、これは無くても大丈夫だろうと思って省略しました(この抵抗はLEDに流れる電流を制限するためのものなので、必ず抵抗を挟むべきだそうです。抵抗を挟さまないと、小さなLEDだと渦電流によって破損する可能性があります)。LEDの光が明るすぎて、上の写真を撮るのに苦労しました。Digital IOヘッダのピン位置とLEDの極性さえ間違えなければ、このサンプルスケッチは簡単です。

Blinkスケッチが上手くいったので、続いて、下のページに載っているDigitalReadSerialというサンプルスケッチも試してみました。

 Arduino - DigitalReadSerial

これはCPUのIOピンからスイッチの状態を読み取って、その情報をシリアルポートへ出力するスケッチです。上のページにブレッドボードと部品を組み合わせた回路例が載っています。Arduino Leonardo互換ボードのセット部品の中から、ブレットボード、ジャンパ線、4端子タクトスイッチ、10KΩ抵抗を使って回路を組んでみました。
IMG_4274-Arduino_IDE-Learning_Basic_Examples-Arduino_Uno-640x480.JPG
IMG_4293_1-Arduino_IDE-Learning_Basic_Examples-Arduino_Uno-640x480.jpg
こちらのスケッチのコードは、上のページに載っているオリジナルのままです。
SCShot140209_0083-Arduino_IDE-Learning_Basic_Examples-Arduino_Uno-500x600.png
スケッチをArduinoへ書き込んだ後、スケッチ・ウィンドウの右上の[シリアルモニタ]というボタンを押すと、下のようなウィンドウが開きました。
SCShot140209_0093-Arduino_IDE-Learning_Basic_Examples-Arduino_Uno-500x600.png
SCShot140209_0096-Arduino_IDE-Learning_Basic_Examples-Arduino_Uno-500x600.png
スイッチが押されていなれば、このウィンドウに連続的に「0」が出力され、スイッチを押すと、「1」が出力されます。スケッチコードの中でSerial.println()という関数を呼び出していますが、この関数によって送信した値がUSB経由でArduino IDEへ転送されて、上のシリアルモニタ・ウィンドウに表示される仕組みです。この関数はデバッグログの出力にも利用できそうです。

Arduino IDEのインストールから最初のBlinkスケッチを動かすまでに要した時間はたった10分程度でした。私がいままで使ってきた組込みボードとは別次元のガジェットであることに驚いてしまいました。一応Arduinoの情報はフォローしていたので、超楽にプログラム開発ができることは知っていましたが、ここまで楽にプログラムを作れて、すぐに動かしてみることができるのは感動モノです。こんなに簡単だと、やればやるほど楽しくなってくるは当然です。実際にArduinoを使ってみて、私もモチベーションが上がりまくりです。どんどん部品を挿し換えて回路を組みながら、電子工作の勉強を進めたくなってきました(本業の仕事が忙しくなければ、このままArduinoにハマりたかったのですが・・・)。Arduino以前のボードが旧世界なら、Arduinoはまさに新世界と呼ぶべきです。子供達にArduinoボード、電子部品のキット、それに電子工作の入門書的な参考書を与えて、電子回路の初歩的な組み方とArduino IDEの使い方を教えてあげれば、あとは自力で電子工作の学習をどんどん進めていくじゃないかと想像してしまいます(Arduinoを利用した子供向けの電子工作教習テキストを作ってみたくなりますね)。電子工作に興味を持っている中高生にもArduinoは超お勧めです。いままでの組込みボードなんかすぐに捨てて、デジタル系電子工学の教材はさっさとArduinoへ変えるべきです。その方が生徒たちの学習効果はずっと高くなるはずです。

Arduinoは本当に楽しくてすばらしいのですが、一度Arduinoの世界を経験してしまうと、Arduino以前の旧世代のボードは触るのが嫌になりそうで怖いです。ArduinoにはEthernet, Wi-Fi, Bluetooth, ZigBeeなどの通信系のシールドもたくさん存在しています。しかもこれらのシールドの値段はそれ程高くありません(Arduino本体が安価なので、あまり高い価格だとシールドが売れないからだと思います)。このようなシールドとArduinoを組み合わせれば、多種多様な組込みガジェットを作れます。モバイル系とオープンソース系の両方のプログラム開発に適しているMacと新世代ボードのArduinoを組み合わせれば、組込みガジェットのアイデアをどんどん試すことができそうです。もしかすると、最強の組み合わせを発見してしまったのかもしれません。

【2014/02/11 追記】

上では、公式サイトに掲載されているサンプルコードをスケッチ・ウィンドウへコピーすることでスケッチを作成しましたが、これらのスケッチはデフォルト状態で[ファイル]>[スケッチの例]メニューに登録されていることに気づきました。
SCShot140211_0022-Arduino_IDE-Learning_Basic_Examples-Arduino_Uno-764x622
このメニューから項目を選ぶだけで、公式サイトに掲載されているサンプルスケッチを作成できるようです。
SCShot140211_0023-Arduino_IDE-Learning_Basic_Examples-Arduino_Uno-500x600.png
また、[ファイル]>[スケッチの例]メニューの下段に存在する項目はArduinoに組み込まれている標準ライブラリです。標準ライブラリのリファレンス情報は下のページに載っています。

 Arduino - Libraries

これらのライブラリは、ライブラリ関数定義が記述されたヘッダファイルをスケッチ側でインクルードすればすぐに利用することができます。また、Arduino関連製品を開発している会社やユーザーが作成したライブラリを追加することも可能です。[スケッチ]>[スケッチを使用]>[Add Library]メニューを実行するとファイル選択ダイアログが開くので、このダイアログの中でライブラリが格納されているzipファイルかフォルダを選択すれば、そのライブラリがArduino IDEへ追加されます。
SCShot140211_0027-Arduino_IDE-Learning_Basic_Examples-Arduino_Uno-626x622.png
SCShot140211_0035-Arduino_IDE-Learning_Basic_Examples-Arduino_Uno-718x622
追加したライブラリは[スケッチ]>[スケッチを使用]メニューに項目として表示され、標準ライブラリと同様にスケッチで利用できます。
SCShot140211_0030-Arduino_IDE-Learning_Basic_Examples-Arduino_Uno-626x622.png
Arduino甩シールドを製造しているメーカーは大抵そのシールドを利用するためのライブラリを配布しています。製造メーカーからライブラリを入手すれば、シールドは使うスケッチをすぐに作成することができます。

タグ:Arduino
posted by とみやん at 15:10| Comment(0) | TrackBack(0) | 組込みガジェット > Arduino

2014年02月08日

Arduino Unoボードを入手した

ページ今日は全国的に大雪の天気みたいですね。信州も昨日の夕方から雪が降り続き、積雪量は50cmを超える勢いです。私が中信に来て7年経ちますが、ここまで大雪は初めてです。今日私は一日中部屋にこもっていました。近くの西友で食料品の買い足しをしたかったのですが、この雪ではとても出る気になりませんでした。

さて、Arduino Leonardo互換ボードを購入したこと前記事に書きましたが、こいつに続いて、Arduino Uno (R3)も入手しました。ヤフオフ!で落札した奴ですが、開始価格が通販サイトの販売価格の半額程度だったので思わずポチってしまいました。
IMG_4166-Arduino_Uno_R3-640x480.JPG
IMG_4188-Arduino_Uno_R3-640x480.JPG
IMG_4198-Arduino_Uno_R3-640x480.JPG
今回入手したのは互換品ではなく純正品です。ボード上の「WWW.ARDUINO.CC-MADE IN ITALY」というシルク印刷からその事が判ります。ボードの裏面が全面シルク印刷になっているのが、なかなかカッコ良いですね。前回入手したArduino Leonardo互換ボードの裏面はごく普通でした。

Arduino UnoはArduinoシリーズのリファレンス的な存在です。Arduino Unoに搭載されているCPUはAtmel ATmega328という奴で、これには32KBのFlash Memoryと2KB SRAMが内臓されています。書籍やWebページに掲載されているサンプルプログラムは大抵このArduino Unoで動かすことを前提に書かれています。Arduino Uno以外のボードだとコードを部分的に改造しないと、プログラムが動かなかったりします。改造と言っても、電子回路について基礎的な知識を持っていればできる程度の内容なので難易度はそれほど高くありませんが、初心者には高いハードルには感じられることもあるかと思います。そのため、電子工作の初心者はArduino Unoを選択しておいた方が無難です。チャレンジ精神が旺盛なら、あえて他の種類のArduinoボードを選択し、ぶつかった問題をクリアしていくことで逆に学習効果が高まるかもしれません。最初のボードとして私がArduino Leonardoを選択した理由は、これを狙ったからです。本業の関係で、久しぶりに通信係のマイコン制御ブログラムを開発しなけばならなくなったので、その試験環境をArduinoで手っ取り早く作ろうと考えています。急遽Arduino Unoも入手したのはこの理由からです。私がArduinoを利用して開発したマイコン制御ブログラムの事例は本ブログに掲載していきます。

Arduino Unoと一緒に7セグメントLEDやセンサーもいくつか入手しました。それと、Arduino用のLCDシールド(拡張基板)も入手しました。値段は1,180円でした。下の写真がそれで、キャラクタLCDとキースイッチ6個が搭載されているシールドです。
IMG_4206-DFROBOT-LCD Keypad Shield.JPG
Arduinoの拡張端子ヘッダに挿せば、そのまま使える奴です。ボード上に「DFROBOT」というのシルク印刷があったので、このキーワードでググってみると、下のページが見つかりました。

 LCD Keypad Shield For Arduino

これが製造メーカーの商品情報ページみたいです。どうやら中国のロボット関連部品メーカーのようですね。このメーカーのサイトには、XBee用ソケットやBluetoothを搭載したArduino互換ボードなんかも載っています。面白そうな物が揃っているので、そのうち、このメーカーから直接ボードや部品を買ってみようかと思っています。

いまでは多くの種類のArduino関連商品がAmazonや通販サイトで売られていますが、ヤフオフ!にも同様の商品がたくさん出品されています。1年程前のArduino関連品の入手性はここまで良くありませんでした。電子工作の書籍や雑誌も増えていますし、ググってみると電子工作の活用事例などが膨大な数ヒットします。やはりArduinoを利用して電子工作を始めるのが流行っているんだと思います。秋葉原にも電子工作やロボット製作の専門ショップがいくつか出現しています。このように部品や情報が格段に入手し易くなっているので、電子工作を始めるならいましかないという感じです。「Arduinoを使って電子工作にトライしてみたが、すごく解り易く、楽しみながら学習ができた」という内容のカスタマーレビューがAmazonにたくさん掲載されています。Arduinoは世界中で使われており情報量がものすごく多いので、たとえ問題にぶつかっても、根気よく調べれば大抵は解決できます。学習意欲さえ持続できれば、そこそこのレベルの電子工作の知識を取得するのは可能だと思います。Arduinoは草の根モノづくりの発展に多大な貢献をしているという評価は世界中で高まる一方です。このブームに乗らない手はありません。

電子工作に必要な工具や計測器もこれから少しずつ揃えていこうと思っています。ただし、テスターだけは早急に買うつもりです。電源ラインのショートや過電圧はすぐにボードや電子部品を破損してしまうので、テスターは電子工作には必須の計測器だからです。本格的にやり始めたら、デジタルマルチメーターと安定化電源も必要になるでしょう。ロジアナとオシロは3年半前に買った物を持っています。ずっと眠らせていましたが、やっとこれらの計測器を活用できそうです。

タグ:Arduino
posted by とみやん at 19:10| Comment(0) | TrackBack(0) | 組込みガジェット > Arduino

2014年02月06日

Arduino Leonardo互換ボードを購入

ページ全国的に今日の冷え込みは厳しかったみたいですが、信州もメチャクチャ寒かったです。午後3時頃に外出したら、塩尻駅前に設置してあるLED温度計パネルが「-3℃」を表示していました。今朝8時頃にも近くの西友へ買い物に行ったのですが、防寒服にマフラーと手袋をして出たにも係わらず、あまりの寒さに身体の震えが止まらず手足がジンジンとしびれるほどでした。台所に置いていたミネラルウォーターのペットボトルの中身が少しだけ氷っていたのには驚いてしまいました。体感的には最低気温は-10℃以下、最高気温0℃未満の真冬日の一日でした。多くの人は信州で一番寒い街(人口密集地域)は降雪の多い長野だと思っているようですが、松本の寒さも長野に負けていないです。本日の気象情報によると、実際に長野より松本の方が気温が低かったようです。一冬の最低気温は長野ではなく松本の方が記録することが良くあります。降雪の少ない松本がこんなに寒い理由は、松本平が四方を高い山に囲まれた狭い盆地だからです。松本平と似たような狭い盆地は全国の山間部にいくつもありますが、こういう地域では冬に冷気がこもって低気温が一日中続く気象現象が良く起きます。晴れて日差しがあれば多少なりとも気温が上がるのですが、曇っていると気温はずっと低いままです。長野平も盆地ですが、その面積は松本平よりずっと広く、高い山は北側と西側にしかないのでたとえ雪が降っても冷気は拡散します。今日みたいに一日中低い雲が垂れ込めていると、冷気の逃げ場がどこにもなく松本平は冷蔵庫状態になります。じつは、私は長野にも10ヶ月程滞在して一冬を過ごしたことがありますが、長野より松本や塩尻の方が寒いと感じることがあります。真冬に中信地域の街々を旅行する人は、こちらの寒さを甘く考えずに防寒対策を徹底してください。そうしないと、すぐに風邪をひいてしまいますよ。信州を旅行したり信州へ移住しようと思っている人は、信州は北海道の続いて全国で2番目に寒い地方であること知っておくべきです。2番目は東北だと思っている人が多いようですが、東北より信州の方が寒い地域が多いです。

さて、前記事から少し間が空いてしまいましたが、また新しい分野へのチャレンジしようと思って調べ事に時間を使ったりしていました。そして、2週間かけて調べた新しい分野への挑戦を始める決心をついに固めました。その分野とは「組込みガジェット」です。Arduinoやmbedを代表とするお手軽組込みボードを利用した電子工作やガジェット開発などを、私はこう呼んでいます。その「組込みガジェット」の中でもっとも有名なボードであるArduinoの互換ボードを購入しました。

もはや全世界的にメジャーな存在となったArduinoについての説明はあまり要らないかと思いますが、一応説明しておくと、Arduinoというのは2005年にイタリアで始まったオープンハードウェアをベースとしたプロジェクトです。このプロジェクトは、学生向けの安価なロボット開発用プロトタイピング・システムを製造することを目的にスタートしました。ArduinoボードはCPUにAtmel AVRシリーズを搭載しており、いくつかの種類があります。すべてのボードのハード設計データはEAGLEファイルとして公開されており、これらのデータを利用して製造された数多くの互換ボードも存在しています。

私が今回購入したのはArduino Leonardo(レオナルド)というボードの互換品です。このボードにはAtmel ATmega32U4というCPUが搭載されています。他のAVRシリーズと違った特徴として、このCPUにはUSB Peripheralコントローラが内蔵されいます。製造メーカーはSainSmartという会社ですが、多分中国の工場で製造されたものではないかと思います。現在は多くの販売代理店が扱っているので、Arduinoボードの純正品は容易に入手できるようになっていますが、純正品だけでなく多くの種類の互換品も国内で販売されています。最近はAmazonでもArduinoみたいなボードや電子部品が販売されており、こういう商品の通販サイトもかなり数が増えました。数年前はDigiKeyRSコンポーネンツくらいしか利用できるサイトはなかったのですが、電子工作をやっている人には本当に良い時代になったものです。やはりいまも電子工作ブームが続いているのが大きいのかもしれないですね。純正品と比較するとArduinoボードの互換品はかなり安価な値段で出回っていますが、その中から、Arduino Leonardo互換ボードにいくつかのベーシックな電子部品を組み合わせたセット品を選択しました。下が製造メーカーの商品情報ページです。

 SainSmart Leonardo R3 Starter Kit With 16 Basic Arduino Projects Specializing in Arduino compatible development boards and modules, oscilloscopes and other electronics.

この商品の購入先はAmazonで、価格は3,990円でした。電子部品の相場をあまり知らないので、この値段が適切なのかは良く判りません。少量の部品を通販サイトで買い集めると送料が高くついてしまいますし、東京へ行く機会もしばらくないので(秋葉原には電子工作専門ショップがいくつかできています)、手間や労力を考えると、妥当な値段なのかなぁという気はします。

セットに含まれる全部品を収納できるケースも付属していました。DIYショップでケースを買おうと思っていましたが、その必要はなくなりました。ただし、すぐに部品が増えていくでしょうから、やはりもっと大きい収納ケースを買うつもりでいます。
IMG_4075-SainSmart-Arduino_Leonardo-640x480.JPG
IMG_4112-SainSmart-Arduino_Leonardo-640x480.JPG
IMG_4118-SainSmart-Arduino_Leonardo-640x480.JPG
IMG_4151-SainSmart-Arduino_Leonardo-640x480.JPG
Arduinoボードの実物を見たのはこれが初めてですが、その小ささに驚きました。名刺の2/3程度のサイズです。Arduinoの利用事例を紹介しているページや、Amazonや通販サイトの商品情報ページには拡大写真が載っていたので、もう少し大きいサイズなのかと思っていました。

Arduinoを利用した電子工作の入門書も販売されていて、Amazonや書店ではこれらの書籍の売れ行きも良いようです。私はこういう書籍はまだ買っていません。一応電子回路や部品についての予備知識はある程度持っているので(学生時代に習ったトランジスタ世代の古い知識ですが)、当面はGoogle先生に教えてもらいながらやっていこうと思っています。どうしてもこういう本が必要だと感じたら買うつもりです。

本と言えば、じつは、数日前に下のようなサイトを見つけました。

 IT eBooks - Free Download - Big Library

このサイトにはIT関連書籍のPDFファイルが大量にアップされています。最初は海賊版ファイルを集めたサイトなのかと思いましたが、どうもそうではないようです。出版社がこのサイトへ自社書籍のPDFファイルを提供しているような気がします。半年〜1年以上前に出版された少し古めの書籍を出版社が販促のために提供しているのかもしれません。アメリカで出版されている書籍限定みたいですが、いくつかの主要な出版社の書籍は存在しておらず、最新の書籍も欠落しているようです。それでも、ものすごい数の書籍のPDFファイルがアップされており、Webブラウザでも本の内容が閲覧できるので、英語の読めるITエンジニアにとっては黄金の麦畑のようなサイトです。このサイトで検索したらArduino関連の書籍もあったので、すでにいくつかのPDFファイルを入手済みです。その中では、下のO'REILYの本が良い内容に思えました。

Arduino Cookbook
Arduino Cookbook
posted with amazlet at 14.02.07
Michael Margolis
Oreilly & Associates Inc

Arduino Cookbook
Arduino Cookbook
posted with amazlet at 14.02.07
Michael Margolis
Oreilly & Associates Inc
売り上げランキング: 69,735

上の方は、近日発売予定の第三版です。Kindle版だと1,951円(本記事投稿時点)と結構安いですね。新版が発売されるので、値引きしているのでしょう。

Arduinoボードを購入したのを機会に、以下の3つの記事カテゴリを新しく作りました。

 組込みガジェット > Arduino
 組込みガジェット > mbed
 組込みガジェット > Raspberry Pi

mbedとRaspberry Piの記事はまだありませんが、この2つのボードを使った電子工作やガジェット開発にもこれから挑戦していきます。mbedはまだ入手していませんが、じつは、Raspberry Piはすでに入手済みです。入手したのにまったく触っておらず、積みボードの一つになっています。Raspberry Piの記事は近いうちに書きたいと思っています。mbedの価格も6,000円前後なので、こちらも近いうちに買うつもりです。ちなみに、上の3種類のボードを選んだ理由はいずれも安価(1万円未満)だからです。もう一つの理由てして、MacまたはLinuxで開発環境を構築できることも考慮しました。開発環境がWindowsでしか構築できなかったら、迷わず候補から外していたでしょう。

Arduino, mbed, Raspberry Piを使って私がやりたい事は他の人とは少し違っています。電子工作やハード技術を習得したいのではなく、あくまでガジェット開発が最終目標です。ロボットやホームエレクトロニクス機器みたいなスタンドローンで動くものではなく、モバイルデバイスと連携するスマート・ガジェットを作りたいと思っています。すでにいくつかのアイデアを思いついているので、これらのアイデアを実現する方法について色々と調べていることろです。

いまも続いている電子工作ブームは2008年位から始まったようですが、このブームが大きな流れになったのは2010年位からです。2007〜2010年にかけて日米でいくつかの電子工作専門雑誌が発刊されています。このトレンドに乗ろうと思って、私も2010年5月にロジアナとオシロを買いました。以前のブログサイトの記事には趣味の電子工作をやりたいと書きましたが、本当は本業をハード技術者に転向したいという強い気持ちを持っていました。この意欲を完全に捨てたわけではありませんが、いまは電子工作はあくまでガジェット開発の手段だと割り切る方が良いんじゃないかと思っています。ガジェット開発にはハード技術も必要ですが、組込みLinux、Webサービス、モバイルアプリ開発などのソフトのウェイトがより大きいからです。

Arduino, mbed, Raspberry Piみたな新世代の組込みボードの活用事例を見ていると、ディープな組込みハード/ソフト技術を追いかけるのはもう時代遅れだという気がします。アマチュアの電子工作愛好家達はこれらのボードを利用してフットワークの軽いお手軽な組込み開発をどんどんやっています。ニコニコ動画で発表される作品を観ていると特にそう感じます。ハードの基礎試験をやって、インフラ・フームウェアを開発し、その上にLinuxやuITRONやミドルウェアを移植して、それからアプリを作り、最後に全機能とユースケース試験をやる(テレビのような多機能な家電品では、これらの工程を3〜4回廻してやっと製品が完成します)みたいな昔ながらのやり方はもう捨てるべき時期が来ているのだと思います。メーカーの中でこういう技術を持つエンジニアはまだ必要だとは思いますが、メーカーの大小を問わずで、コストダウンのために、こういう仕事は中国や韓国の試作専門工場へ投げてしまってしまうのがいまでは主流になっています(低予算アニメの下回りの仕事が韓国のスタジオへたくさん流れているのと良く似た構図です)。小さなベンチャー企業や個人事業者が組込み機器でビジネスを立ち上げるなら、左記のようなやり方はあまりに予算がかかり過ぎます。昔ながらのやり方で組込み機器を製造すると、どんなに小さな物でも最低1千万円の開発予算が必要です。既存の組込みガジェット・ボードを利用すれば、開発工程は大幅に短くなり予算も半分以下に圧縮することが可能です。私がArduino, mbed, Raspberry Piを使い始めるのは、こういうボードを利用した新世代のモノづくり(「モノづくり」いう言葉は日本ではまだ古いやり方を想起させるので、私はこの言葉を嫌っています)に活路が見つかるじゃないかという期待が持っているからです。ググっているうちに、こういうやり方でガジェット機器を開発しているベンチャー企業や個人事業者が日本でもいくつか登場していることを知りました。米国の有名雑誌『WIRED』の旧編集長だったクリス・アンダーソンが著した下の本もベストセラーになって、「ビットからアトムへ」というのがトレンドワードになっています。

MAKERS―21世紀の産業革命が始まる
クリス・アンダーソン
NHK出版
売り上げランキング: 2,321

日本ではいまだに多くの企業が古臭いモノづくりを未練たらしく続けていますが、欧米の先進国の企業はそんなやり方は2010年位までに捨ててしまい、いまでは新世代のモノづくりへ移行しています。そして、アマチュアが自分のアイデアを実現するためにプロジェクト・ページを開設したり、小規模投資を募ってITスタートアップを立ち上げるような草の根からのモノづくりムーブメントが大きな流れになりつつあります。ArduinoやRaspberry Piがアマチュアの電子工作愛好家を相手に大きく販売量を伸ばしたのが良い例です。こういうボードを利用して自分のアイデアを具現化しようと動き始めている人々が世界中で増えているのです。上の本を書いたクリス・アンダーソンも2012年11月に自ら3D Roboticsというベンチャー企業に設立して、DIYドローン(自動操縦航空機)製品を開発しています。日本の製造業が衰退したのは「モノづくり」の規模や技術力が縮小したからではなく、「モノづくり」の戦略と手段を革新できなかったことが最大の原因です。この「モノづくり」という言葉自体を再定義して、いままでのやり方を根本的に変えるための具体的な行動を起こすことが、いまの日本の製造業企業がやるべき最優先事項だと私は考えています。大手の製造業企業は経営者も一般社員も現状維持を続けることしか考えていないようなので、「ビットからアトムへ」がもたらす新産業革命時代がすでに始まっていることに気づいている人は少数派ではないかと思います。新興ベンチャー企業やアマチュア発の個人事業者などが新産業革命時代の主役になりつつあるのは必然なのかもしれません。

タグ:Arduino
posted by とみやん at 17:12| Comment(0) | TrackBack(0) | 組込みガジェット > Arduino

2014年01月22日

iPhone 4のファームウェアをiOS 6.1.3へ更新した

ページ01/01の記事で紹介した2台目のiPhone 4のファームウェアのアップデートを(ついでに脱獄処理も)行いました。このiPhone 4は入手時点ではiOS 5.1.1bでしたが、1台目のiPhone 4を同じバージョンのファームウェアに更新したので、こちらの方はiOS 6.1.3へ更新することにしました。

iPhone 3GSのファームウェアをiOS 5.0.1へアップデートしたときの作業記録を12/24の記事に書きましたが、このときはredsn0w(Mac OS X版)を使って作業をやりました。今回はredsn0wではなく、sn0wbreeze(2.9.14)というツールを使いました。sn0wbreezeはredsn0wと並ぶ有名な脱獄ツールですが、Mac OS X版は存在せずWindows版しか配布されていません。そのため、今回のiPhone 4のファームウェア更新作業はWindows 7 64bitを搭載したPCで行いました。

Windows PCでiPhoneファームウェアの更新を行う場合、そのPCにiTunesをインストールしておくことが必須条件になります。iPad/iPhone/iPod touch用のUSBドライバはiTunesに含まれており、iTunesと一緒にこれらのUSBドライバがインストールされていないと、脱獄ツールはiOSデバイスがPCに接続されていることを認識できません。Windows版のiTunesはAppleから配布されています。今回使用したPCにはすでにiTunes 11.1.3(本記事投稿時点の最新版)をインストール済みでしたが、このバージョンを一旦アンインストールして、少し古いバージョンのiTunes 11.0.5をインストールし直しました。iTunes 11.1.xではカスタムファームウェアを用いた復元時にエラーが発生する問題に遭遇すると、参考ページBに書かれていたからです。iTunesのアンインストールは、下のページから入手できるCopyTrans Drivers Installerというソフトを利用して行いました。

 iTunesと関連するAppleのソフトを完全にアンインストールする方法

以前Windows版iTunesをアンインストールしようとしたときに、「Apple Mobile Device Support」というコンポーネントを削除できずに大変困った経験を持っています。コントロールパネルの[プログラムと機能]から一つずつ手動でiTunesのコンポーネントを削除していくと、必ずこの状態になってしまいます。上のページから入手できるCopyTrans Drivers Installerを使うと、WindowsからiTunes本体と全コンポーネントをきれいさっばりとアンインストールしてくれます。

以降に、sn0wbreezeを用いたiPhoneファームウェアの更新方法について書いていきます。なお、以下の説明は次の条件を満たしていることを前提としています。
  • TinyUmbrella、redsn0w、iFaith等のツールを使って、更新対象iOSバージョンのSHSHを取得済みであること。

【注意事項】

脱獄ツールを用いたiPhoneのファームウェア更新は、製品および携帯キャリア・メーカー(Apple,ソフトバンク,au)の保証対象外となります。ご自分の責任の範囲において実施してください。いかなる結果を招いても、本サイトは一切の責任を負いかねます。

■sn0wbreezeによる脱獄版iOSファームウェア更新


  1. USBケーブルでiPhoneをPCに接続した状態で、sn0wbreezeを起動します。下がsn0wbreeze直後のウィンドウです。
    PrtSc140122_0007-sn0wbreeze-iPhone4_GSM-Upgrading_iOS6.1.3-796x574
    このウィンドウには、sn0wbreezeの目的と性質に関する注意事項が表示されているだけです。[OK]ボタンを押すると、下のようなウィンドウに変わります。
    PrtSc140122_0008-sn0wbreeze-iPhone4_GSM-Upgrading_iOS6.1.3-796x574
    sn0wbreezeのすべての処理はこのウィンドウから始まります。右下の[]ボタンを押すと、最初の処理ウィンドウへ移ります。

  2. このウィンドウでは、iPad/iPhone/iPod touchのファームウェアが格納されているファイル(拡張子がipswのファイル)を選択します。
    PrtSc140122_0009-sn0wbreeze-iPhone4_GSM-Upgrading_iOS6.1.3-796x574
    左側の[Browse for an IPSW]ボタンは、すでにファームウェア・ファイルを取得済みの場合に使用します。右側の[Download iOS Firmwares]ボタンを押すと、sn0wbreezeによってiPhoneのファームウェア・ファイルをダウンロードすることもできます。

    左側の[Browse for an IPSW]ボタンを押すと、ファイル選択ダイアログが開くので、対象のファームウェア・ファイルを選択します(今回はiPhone 4をiOS 6.1.3へ更新するので、iPhone3,1_6.1.3_10B329_Restore.ipswというファイルを選択しました)。
    PrtSc140122_0010-sn0wbreeze-iPhone4_GSM-Upgrading_iOS6.1.3-840x5254
    ファームウェア・ファイルを選択すると、sn0wbreezeはその内容を検証します。ファームウェアに問題がなければ、下のようなウィンドウが表示されます。
    PrtSc140122_0011-sn0wbreeze-iPhone4_GSM-Upgrading_iOS6.1.3-796x574
    右下の[]ボタンを押すと、次の処理ウィンドウへ移ります。

  3. このウィンドウでは、カスタムファームウェア作成処理の実行モードを選択します。
    PrtSc140122_0013-sn0wbreeze-iPhone4_GSM-Upgrading_iOS6.1.3-796x574
    sn0wbreezeは以下の4つのカスタムファームウェア作成モードを持っています。

     iFaith Mode SHSHを組み込んだ脱獄版ファームウェアを作成する
     Simple Mode SHSHを組み込まない脱獄版ファームウェアを作成する
     Expert Mode オプションを指定して、脱獄版ファームウェアを作成する
     Baseband Preservation Mode ベースバンド情報を削除した非脱獄版ファームウェアを作成する

    iFaith Modeで作成したファームウェアのみ、iPhoneへ書き込む際にSHSHは不要となります。それ以外のモードで作成したファームウェアは、AppleまたはCydiaサーバーからSHSHを取得できないとiPhoneへ書き込むことはできません。また、いずれのモードで作成したファームウェアもiPhoneに搭載されている現状のベースバンドは維持されます。

    今回はiOS 6.1.3 SHSHを組み込んだ脱獄版カスタムファームウェアを作成するので、一番上の[iFaith Mode]を選びました。すると、手順2で選択済みのファームウェアとバージョンおよびデバイス種別が一致するSHSHを指定するように指示するウィンドウが表示されます。
    PrtSc140122_0017-sn0wbreeze-iPhone4_GSM-Upgrading_iOS6.1.3-359x146.png
    このウィンドウの[OK]ボタンを押すと、ファイル選択ダイアログが開くので、対象のSHSHファイルを選択します。
    PrtSc140122_9018-sn0wbreeze-iPhone4_GSM-Upgrading_iOS6.1.3-840x525
    SHSHファイルを選択すると、sn0wbreezeはその内容を検証します。SHSHに問題がなければ、下のようなウィンドウが表示されます。
    PrtSc140122_9019-sn0wbreeze-iPhone4_GSM-Upgrading_iOS6.1.3-272x146.png
    [OK]ボタンを押すと、次の処理ウィンドウへ移ります。

  4. このウィンドウでは、カスタムファームウェアに適用するいくつかのオプションを指定できます。
    PrtSc140122_0021-sn0wbreeze-iPhone4_GSM-Upgrading_iOS6.1.3-796x574
    いずれも脱獄版ファームウェアに対する特殊なオプションなので、すべてデフォルト設定のままで問題ありません。このウィンドウの[Build IPSW]を選択状態にして、右下の[]ボタンを押します。

  5. すると、カスタムファームウェアの作成処理が開始されます。
    PrtSc140122_0027-sn0wbreeze-iPhone4_GSM-Upgrading_iOS6.1.3-796x574
    なぜか処理中にPacManをやらないかと誘われますが、ここでは丁重にお断りしましょう。カスタムファームウェアの作成処理は3〜5分程かかります。
    PrtSc140122_0038-sn0wbreeze-iPhone4_GSM-Upgrading_iOS6.1.3-796x574
    PrtSc140122_0040-sn0wbreeze-iPhone4_GSM-Upgrading_iOS6.1.3-796x574
    カスタムファームウェアの作成が完了すると、下のようにウィンドウが表示されます。
    PrtSc140122_0041-sn0wbreeze-iPhone4_GSM-Upgrading_iOS6.1.3-796x574
    カスタムファームウェアが格納されているファイルは、PCのデスクトップに作成されます(iFaith Modeで作成したカスタムファームウェアは、下のように00000<ECID Hexdecimal>_sn0wbreeze-<Device Type>-<Product Version>-<Build Version>_signed.ipswというファイル名になります)。
    PrtSc140122_9003-sn0wbreeze-iPhone4_GSM-Upgrading_iOS6.1.3-168x168.png
    ここでカスタムファームウェアのファイルが作成されたか確認して、そのファイル名を憶えておきましょう。手順8でこのファイルを指定する必要があるからです。上のウィンドウの[OK]ボタンを押すと、次の処理ウィンドウへ移ります。

  6. カスタムファームウェアを書き込むには、iPhoneをDFU(Device Firmware Upgrade)モードにする必要があります。下のウィンドウで指示されているとおり、一旦iPhoneの電源をOFFにします。
    PrtSc140122_0043-sn0wbreeze-iPhone4_GSM-Upgrading_iOS6.1.3-796x574
    上のウィンドウの[Start]ボタンを押すと、iPhoneをDFUモードににするための手順が順次表示されます。
    PrtSc140122_0044-sn0wbreeze-iPhone4_GSM-Upgrading_iOS6.1.3-796x574
    上の手順ウィンドウが表示されている間に、以下の操作を実行して、iPhoneをDFUモードします(上のウィンドウに表示される手順と若干異なっていますが、以下のとおりに操作すれば、経験的にiPhoneは確実にDFUモードになります)。

    1. パワーボタンを1秒程度押します(iPhoneの電源が入り、画面にAppleロゴが表示される)。
    2. パワーボタンを押したまま、同時にホームボタンを10秒間押します(iPhoneの画面が暗くなる)。
    3. パワーボタンを離して、そのままホームボタンを10秒間押し続けます。

    iPhoneがDFUモードになったことを検出すると、sn0wbreezeは下のようなウィンドウに変わり(このウィンドウに変わったら、iPhoneのホームボタンを離しても構いません)、いくつかのファイルをiPhoneへ転送します。
    PrtSc140126_0001-sn0wbreeze-iPhone4_GSM-Upgrading_iOS6.1.3-796x574
    上の処理が終わった後、下のようなウィンドウが表示されます。
    PrtSc140126_0002-sn0wbreeze-iPhone4_GSM-Upgrading_iOS6.1.3-390x205.png

  7. 上のウィンドウで指示されているとおり、ここでiTunesを起動します。DFUモードのiPhoneを検出して、起動後のiTunesは下のような表示になります。
    PrtSc140122_0056-iTunes-iPhone4_GSM-Upgrading_iOS6.1.3-1100x725

  8. <Shift>キーを押しながら[iPhone を復元]ボタンをクリックします(<Shift>キーを押さずに[iPhone を復元]ボタンをクリックすると、最新バージョンのiOSに更新されてしまいます)。
    PrtSc140122_0070-iTunes-iPhone4_GSM-Upgrading_iOS6.1.3-1100x725
    すると、ファイル選択ダイヤログが開くので、手順5でデスクトップに作成されたカスタムファームウェアのファイルを選択します。PrtSc140122_9057-iTunes-iPhone4_GSM-Upgrading_iOS6.1.3-840x525

  9. iTunesによって、iPhoneファームウェアの復元(更新)処理が実行されます。
    PrtSc140122_0060-iTunes-iPhone4_GSM-Upgrading_iOS6.1.3-1100x725
    iPhone 4の場合、ファームウェア更新処理は7〜10分程度かかります。この処理が実行されている間、iPhoneの画面にsn0wbreezeの雪マーク・ロゴとプログレスバーが表示されます。
    IMG_4033-20140126-iTunes-iPhone4_GSM-Upgrading_iOS6.1.3-320x427.jpg

  10. ファームウェア更新処理が終了すると、iPhoneは新しいファームウェアで再起動します。
    PrtSc140124_0013-iTunes-iPhone4_GSM-Upgrading_iOS6.1.3-1100x725

  11. ファームウェアの更新後、iPhoneは未アクティベート状態になっています。
    IMG_0001-20140122_180248-iPhone4_GSM-Activating_iOS6.1.3-320x480.png
    PrtSc140122_0061-iTunes-iPhone4_GSM-Upgrading_iOS6.1.3-1100x725
    携帯キャリアのSIM(アクティベート専用SIMでも可)をiPhoneに挿入し、iPhoneの初期設定を行います。
    IMG_0006-20140122_180812-iPhone4_GSM-Activating_iOS6.1.3-320x480.pngIMG_0009-20140122_181447-iPhone4_GSM-Activating_iOS6.1.3-320x480.png

    iPhoneの初期設定中に下のような画面が存在しますが、この画面でWi-Fiの設定と選択を行えば、iPhoneのアクティベート処理はWi-Fiネットワーク経由で実行されます。
    IMG_0001-20140124_134511-iPhone4_GSM-Activating_iOS6.1.3-320x480.pngIMG_0002-20140124_134525-iPhone4_GSM-Activating_iOS6.1.3-320x480.png

    上の画面で[iTunesに接続]を選択した場合は、確認の画面に続いて下のような画面になり、PC側でiTunesが起動していると、iTunes経由でiPhoneのアクティベート処理が実行されます(PC側ですでにiTunesが起動しており、アクティベート中のiPhoneを認識しない場合は、iTunesを再起動すると認識するようです)。
    IMG_0004-20140124_134618-iPhone4_GSM-Activating_iOS6.1.3-320x480.pngIMG_0003-20140124_134534-iPhone4_GSM-Activating_iOS6.1.3-320x480.png

    iPhoneの初期設定とアクティベートが終わると、iTunes側は下のようなウィンドウに変わります。
    PrtSc140122_0062-iTunes-iPhone4_GSM-Upgrading_iOS6.1.3-1100x725

  12. 初期設定が終わり、iPhoneにホーム画面が表示されたら、[設定]>[一般]>[情報]画面を開いて、iOSとベースバンドのバージョンを確認しておきましょう。
    IMG_0022-20140122_182446-iPhone4_GSM-Activating_iOS6.1.3-320x480.pngIMG_0025_1-20140122_182517-iPhone4_GSM-Activating_iOS6.1.3-320x480.png


■iBootyによる脱獄再起動


sn0wbreezeを使ってiPhone 4のファームウェアをiOS 6.1.3へ更新した場合、そのiPhone 4は仮脱獄状態になります。仮脱獄は「紐つき脱獄」(英語では「Tethered Jailbreak」)とも呼ばれ、USBケーブルでiPhoneとPCを接続した状態で、ツールを使って特殊な操作を行わないと脱獄状態になりません。この操作を行った後はiPhoneの脱獄状態は維持されますが、一旦iPhoneの電源を切って再起動すると、再度ツールを使って同じ操作を行う必要があります。

sn0wbreezeでカスタムファームウェアを作成した際に、PCのデスクトップに下のようなフォルダが作成されているはずです。このフォルダの中に格納されているiBooty.exeというプログラムが、iPhoneを脱獄状態に設定するためのツールです。
PrtSc140122_0004-iBooty-iPhone4_GSM-Booting_Tethered_iOS6.1.3-168x168.pngPrtSc140125_0002-iBooty-iPhone4_GSM-Booting_Tethered_iOS6.1.3-452x392.png

以下に、iBootyの使い方について説明します。
  1. USBケーブルでiPhoneとPCを接続した状態で、iBootyを起動します。iBootyが起動すると、下のようなウィンドウが開きます。
    PrtSc140122_0064-iBooty-iPhone4_GSM-Booting_Tethered_iOS6.1.3-468x188.png
    右下の[Select your iDevice: ]プルダウンメニューから[iPhone 4-GSM](「iPhone 4 GSM」とは、SoftBank版のiPhone 4のことです)を選択します。

  2. すると、iBootyのウィンドウは下のような表示になります。
    PrtSc140122_0065-iBooty-iPhone4_GSM-Booting_Tethered_iOS6.1.3-468x165.png
    ここで、iPhoneをDFUモードにする必要があります。iPhoneの電源を一旦OFFにした後、左側の[Start]ボタンを押します。すると、iBootyにはiPhoneをDFUモードにするための手順が表示されます。
    PrtSc140122_0068-iBooty-iPhone4_GSM-Booting_Tethered_iOS6.1.3-468x165.png
    上の手順ウィンドウが表示されている間に、以下の操作を実行して、iPhoneをDFUモードにします。

    1. パワーボタンを1秒程度押します(iPhoneの電源が入り、画面にAppleロゴが表示される)。
    2. パワーボタンを押したまま、同時にホームボタンを10秒間押します(iPhoneの画面が暗くなる)。
    3. パワーボタンを離して、そのままホームボタンを10秒間押し続けます。

  3. iPhoneがDFUモードになったことを検出すると、iBootyは下のようなウィンドウに変わり(このウィンドウに変わったら、iPhoneのホームボタンを離しても構いません)、いくつかのファイルをiPhoneへ転送します。
    PrtSc140124_0001-iBooty-iPhone4_GSM-Booting_Tethered_iOS6.1.3-468x165.png
    PrtSc140124_0004-iBooty-iPhone4_GSM-Booting_Tethered_iOS6.1.3-468x165.png
    上の処理が終わった後、iBootyはiPhoneを再起動します。

  4. 再起動後のiPhoneは脱獄状態に設定されており、電源をOFFにしないかぎり、脱獄状態は維持されます。


■p0sixspwnによる完全脱獄化


仮脱獄状態のiPhoneでは脱獄アプリを実行することができません。脱獄アプリの配布センターであるCydia Storeも脱獄アプリなので、仮脱獄状態のiPhoneでCydiaアプリを起動すると、強制終了してしまいます。iBootyを使って再起動したiPhoneは脱獄状態になっているので、Cydiaアプリを開くことができます。
IMG_0026-20140122_183705-iPhone4_GSM-Cydia-Installing_p0sixspwn-320x480.pngIMG_0037-20140122_192115-iPhone4_GSM-Cydia-Installing_p0sixspwn-320x480.png

iOS 6.1.3〜6.1.5を搭載したiPhoneを完全脱獄状態にするp0sixspwnというプログラムがCydia Storeで配布されているので、このプログラムをインストールしておくと良いでしょう。Cydia StoreのSearchページ内の検索対象エディットボックスに「P0」と入力すれば、アプリの候補として「p0sixspwn」が表示されます。この画面で「p0sixspwn」を選択すると、下のような画面が開きます。
IMG_0041-20140122_192207-iPhone4_GSM-Cydia-Installing_p0sixspwn-320x480.pngIMG_0042-20140122_192216-iPhone4_GSM-Cydia-Installing_p0sixspwn-320x480.png

上の画面の右上の[Install]ボタンを押すと、アプリをインストールする直前の確認画面が表示されます。この画面の[Confirm]ボタンを押せば、p0sixspwnのインストールが実行されます。
IMG_0043-20140122_192222-iPhone4_GSM-Cydia-Installing_p0sixspwn-320x480.pngIMG_0044-20140122_192237-iPhone4_GSM-Cydia-Installing_p0sixspwn-320x480.png

p0sixspwnをインストールした後は、普通に再起動しても、iPhoneは脱獄状態を維持するようになります。そのため、iBootyは不要となります。

【2014/01/30 追記】

約一年ぶりにWindowsを数日間使いましたが、そのあまりの使い難くさに呆れてしまいました。グラフィックは荒くて配色が悪いし、フォントはバランスが悪くて視認性が低いし、Windowsの画面を観ていると頭が痛くなってきます。人間の自然な感覚に合っていない画面ばかりで、UIの操作性も憶え難くいこと極まりないです。毎日Macを使っていて久しぶりにWindowsを使うと、Windowsはつくづく不自然な作りのOSだと感じます。Macと比べてWindowsが優れている点など一つもないことを改めて実感しました。アプリやドライバを追加したり設定を変えるだけで動作が不安定になるし、普通にWebページを閲覧しているだけでウィルス感染の危険にさらされます。こんな使い難くくかつ低セキュリティなOSがいまだに広く使われていることが不思議でなりません。Macではこういう問題に遭遇することは皆無です。Windowsユーザーの本来の目的から外れた作業(左記のような問題を解決したり、アプリやドライバをインストールしたり、システムやアプリの設定を調べたり、Windows Updateやウィルス定義更新を実行するなどの諸々の作業)に消費する時間をすべて累計すると、全PC使用時間のなんと80%に達しているという統計データがあるそうです。WindowsからMacへ乗り換えたユーザーに聞いてみると良いでしょう。誰しも格段に作業効率が上がったと答えるはずです。Windowsを使うことは多大な時間の浪費であると、私は確信を持って断言できます。

【参考ページ】

  1. [iOS] iOS 6.1.3 / 6.1.5 〜A4デバイスを完全脱獄する方法 『p0sixspwn』 | Tools 4 Hack
  2. iTunes 11.1 ではCFWを使った復元でエラーが発生… & iTunes 11.0.5 に戻す方法 | Tools 4 Hack
  3. [〜A4] CFWで復元するときは、iREBを使ってPwnedDFUモードにするのが良い [iOS] | Tools 4 Hack
  4. [〜A4] iOS 6.1.3 を 仮脱獄する方法 「Sn0wbreeze 2.9.14」 | Tools 4 Hack


タグ:iphone iOS 脱獄
posted by とみやん at 20:06| Comment(0) | TrackBack(0) | モバイルデバイス > iOS

2014年01月20日

Xcode 5.0.2でのiOS実機開発環境の構築

Mac mini(OS X Mountain Lion)上のXcode 4.6.3にiOS実機開発環境を構築しましたが、同じMac上に共存させているXcode 5.0.2でも実機デバイスを利用できるように環境設定を行いました。

01/14の記事で行った作業で、すでにキーチェーンへの証明書の登録は済んでいるので、あとはXcode 5.0.2側でProvisioning Profileを取得すれば良いだけです。まずは、Xcode 5.0.2を起動して、Organizerを開きました。すると、Xcode 4.6.3まで存在していた[Provisioning Profiles]カテゴリがOrganizerウィンドウから消えていることに気がつきました。Xcode 4のOrganizerと比較すると、ずいぶん寂しいウィンドウになってしまっていますね。
SCShot140120_0031-Xcode5.0.2_Organizer-Obtaihing_Provisioning_Profiles-991x694
メジャー・バージョンアップで仕様が変わったのかなぁと思いながら、ググって調べてみると、やっぱりXcode 5から[Preferences]ウィンドウに[Accounts]というタブが新設されて、Provisioning Profileの取得と確認はこの[Accounts]タブ画面から行うようになったらしいです。さっそく[Xcode]>[Preferences]メニューを開いてみると、確かに[Accounts]タブが存在していました。
SCShot140120_0004-Xcode5.0.2_Accounts-Obtaihing_Provisioning_Profiles-750x592
左下の[]をクリックすると[Add Apple ID]というメニュー項目が存在したので、これを選択してみました。すると、ADCアカウントのApple IDとパスワードを入力するように要求されたので、それらを入力すると、下のようにウィンドウが表示されました。
SCShot140120_9015-Xcode5.0.2_Accounts-Obtaihing_Provisioning_Profiles-750x550
これでXcodeにADCのアカウント情報が登録されたようです。上のウィンドウの右下に[View Details]というボタンが存在することに気づいたので、このボタンを押してみました。すると、証明書とプロファイルの一覧情報が表示された下のようなウィンドウが現れました。
SCShot140120_9041-Xcode5.0.2_Accounts-Obtaihing_Provisioning_Profiles-750x564
この状態で、すでに全プロファイルを取得できているようです(何だか、また新しいプロファイルが追加されていますね。これもXcode 5が追加しているのかなぁ?)。アカウント情報を登録した時点で、Xcodeは自動的にiOS Provisioning Portalからプロファイルを取得しているみたいです。iOS Provisioning Portalで新しいプロファイルを作成した場合は、左下のRefresh(丸い矢印の)ボタンを押せば、Xcodeがローカルなプロファイル情報を更新してくれるんだと思います。

上記の操作を行った後、iOS Provisioning Portalに登録済みのデバイスをMacに接続すると、Organizerは下のような表示になりました。
SCShot140120_9054-Xcode5.0.2_Organizer-Obtaihing_Provisioning_Profiles-991x694
Organizerが自動的にデバイスに適合するプロファイルを設定してくれました。

これで、Xcode 5.0.2でも実機デバイスが使えるようになりました。既存のプロジェクトを実機デバイス用にビルドして、ちゃんとアプリが動くこもと確認できました。

【参考ページ】

 【開発者向け】iOS7で変わったXcode5の気になる変更点まとめ|iPhoneアプリのアプリ学園
 [iOS]Xcode5でのProvisioning Profileの管理: Seesaa京都アプリエンジニアブログ

タグ:iOS Xcode
posted by とみやん at 10:57| Comment(0) | TrackBack(0) | モバイルアプリ開発 > iOS

2014年01月17日

Xcode 3.2.6をインストールせずにiOS 4.3 SDKを取得する方法

前記事に書いたとおり、デスクトップ機のMac miniにもiOS実機開発環境を構築しました。これによって、iPhone 3GS(iOS 5.0.1搭載)でアプリのデバッグや動作テストができるようになりました。私はもう一台のiPhone 3GSを持っていますが、こちらのファームウェアは現状iOS 4.3.3になっています。やはりiOS 4.3を搭載したデバイスを一台は残しておきたいので、こちらのiPhone 3GSは当面このまま使っていくつもりです。MBA11上のXcode 4.3.3にはiOS 4.3 SDKを追加済みでしたが、Mac mini上のXcode 4.6.3へは追加していませんでした。

Mac mini(OS X 10.8 Mountain Lion搭載)にはXcode 4.6.3とXcode 5.0.2を共存させています。今回iOS 4.3 SDKを追加したのはXcode 4.6.3の方です。問題はiOS 4.3 SDKをどこから取得するかですが、iOS 4.3 SDKが収納されているのはXcode 3.2.6〜4.1だけです。この中のどれかを一旦Macへインストールして、iOS 4.3 SDKだけをコピーすれば良いのですが、いずれのバージョンもMountain Lionには対応していません。Xcode 3.2.6を無理やりMountain Lionへインストールするという手(2012/07/06の記事を参照)もありますが、手間がかかるので、この方法はあまりやりたくありませんでした。以前Mountain LionとiOS 4.3 Simulatorの組み合わせについて色々と調べたことがあります。このときに、Xcode 3.2.6のDMGイメージからパッケージを抜き出して利用しているシェルスクリプト(参考ページAにこのシェルスクリプトが掲載されています)を見つけました。このシェルスクリプトを読んでいるうちに、同様の方法によって、Xcode 3.2.6のDMGイメージからiOS SDK 4.3を抽出できるのではないかというアイデアを思いつきました。このアイデアを実際に試してみたら成功したので、以下にその方法を紹介します。

  1. Xcode 3.2.6(Xcode 3.2.6 and iOS SDK 4.3 for Snow Leopard)のDMGファイルをダブルクリックして、マウントします。ターミナルから以下のコマンドを実行しても、同じ操作を行えます。
    % hdiutil attach ~/Downloads/xcode_3.2.6_and_ios_sdk_4.3.dmg

  2. マウントされたDMGボリューム上にPacakgesというディレクトリが存在しています(Finderからはこのディレクトリは見えません)。この中に、Xcode 3.2.6を構成する全パッケージが格納されています。iPhoneSDK4_3.pkgというファイルがiOS 4.3 SDKが収納されているパッケージです。以下のコマンドを実行して、このパッケージを展開します。
    % pkgutil --expand /Volumes/Xcode\ and\ iOS\ SDK/Packages/iPhoneSDK4_3.pkg /tmp/XC326
    % cd /tmp/XC326
    % gzip -dc Payload | sudo cpio -i

    上のコマンドを実行すると、/tmp/XC326の下にPlatformsusrの2つのディレクリトが作成されます。

  3. iOS 4.3 SDK一式はPlatforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.3.sdk以下に格納されているので、このディレクトリをXcode 4.6.3へコピーします。
    % sudo cp -Rp Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.3.sdk /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs

  4. iPhoneSDK4_3.pkgの展開先として使った作業ディレクリトを削除します。
    % cd
    % sudo rm -rf /tmp/XC326

  5. Xcode 3.2.6のDMGボリュームをアンマウントします。以下のコマンドでも同じ操作が行えます。
    % hdiutil detach /Volumes/Xcode\ and\ iOS\ SDK

今回の作業対象はXcode 4.6.3でしたが、上記の方法によって、Xcode 4.2以降のすべてのバージョンへiOS 4.3 SDKを追加できるはずです。

上の操作を行った後、[ユーティリティ]>[システム情報]を開いて、Xcode 4.6.3のDeveloper Informationを確認すると、下のようになっていました。
SCShot140118_0010-Xcode4.6.3-Adding_iOS_4.3_SDK-OSX_MLion-750x761
xcodebuild -showsdks」コマンドでも同種の情報を確認できます。
% xcodebuild -showsdks
OS X SDKs:
Mac OS X 10.6 -sdk macosx10.6
Mac OS X 10.7 -sdk macosx10.7
OS X 10.8 -sdk macosx10.8

iOS SDKs:
iOS 4.3 -sdk iphoneos4.3
iOS 5.0 -sdk iphoneos5.0
iOS 5.1 -sdk iphoneos5.1
iOS 6.0 -sdk iphoneos6.0
iOS 6.1 -sdk iphoneos6.1

iOS Simulator SDKs:
Simulator - iOS 5.0 -sdk iphonesimulator5.0
Simulator - iOS 5.1 -sdk iphonesimulator5.1
Simulator - iOS 6.0 -sdk iphonesimulator6.0
Simulator - iOS 6.1 -sdk iphonesimulator6.1


この状態のXcode 4.6.3を使って、iOS 4.3実機デバイス用にアプリをビルドすることができるか試してみました。その結果は以下のようになりました。
 Apple LLVM compiler (Clang) 4.2 ARC関連のリンクエラーが発生(ビルド失敗)
 LLVM GCC 4.2  ビルド成功
 GCC 4.2  ビルド成功

コンパイラがClangの場合に発生するのは、下のようなエラーです。
SCShot140117_0020-Xcode_4.6.3-Adding_iOS_4.3_SDK-OSX_MLion-1140x619
上のエラーメッセージの中に存在する「arclite.o」というのは、多分iOS 5.0から導入されたメモリ管理機構ARC(Automatic Reference Counting)に関連するオブジェクトファイルではないかと想像しています。iOS 4.3ではARCは利用できないので、これを無効にする必要があるのではないかと思いますが、その方法が判りません(なぜClangのときだけ、arclite.oをリンクしようとするのか?)。このエラーはまだ解決できておらず、現在原因について調査中です。

コンパイラをLLVM GCCにすると、プロジェクトのビルドは問題なく通りました。ただし、[Build Settings]−[Architectures]の以下のどちらかの値を変えないとダメでした。
 [Build Active Architecture Only] No → Yes
 [Valid Architectures]  armv7 armv7s → armv7

この設定変更をやらないと、下のようなエラーが発生します(このエラーの解決方法は参考ページBに載っていました)。
SCShot140117_0026-Xcode_4.6.3-Adding_iOS_4.3_SDK-OSX_MLion-1140x428

最後のGCCは、2013/07/20の記事で紹介した方法によってXcode 4.6.3のCommand Line Tools(CLT)へ追加したコンパイラです(デフォルトのXcode 4.6.3ではGCCは利用できません)。こちらも一応プロジェクトのビルドは通りました。ただし、CLTにGCC 4.2を追加しただけではコマンドの参照関係でエラーが発生するので、Xcode側のファイル構成に特殊な工夫を施してこれを回避するようにしています。

プロジェクトのビルドが通ったLLVM GCCとGCCでは、アプリの実行イメージをiPhone 3GS(iOS 4.3.3搭載)へ転送して動作確認を行いましたが、いずれもOKでした。

Clangでビルドが通らないという問題は残っていますが、一応これでXcode 4.6.3でのiOS 4.3用実機開発環境は整いました。Mountain LionではiPad/iPhone 4.3 Simulatorは利用できませんが、実機デバイスが使えるので、iOS 4.3向けのアプリ開発はできるようになりました。

【2014/01/18 追記】

上の作業を行った後、Xcode 4.1(Xcode 4.1 for Lion)のDMGファイルに格納されているパッケージの内容を調べてみました。その結果、Xcode 4.1に収納されているiOS 4.3 SDKはXcode 3.2.6のものより若干バージョンが新しいことが判りました。そこで、Xcode 4.6.3に追加したiOS 4.3 SDKをXcode 4.1から抽出したものに置き換えました。以下に、その際の作業手順を記します。

  1. Xcode 4.1(Xcode 4.1 for Lion)のDMGファイルをダブルクリックして、マウントします。ターミナルから以下のコマンドを実行しても、同じ操作を行えます。
    % hdiutil attach ~/Downloads/installxcode_41_lion.dmg

  2. マウントされたDMGボリューム上のInstallXcodeLion.pkgというファイルにXcode 4.1の全パッケージが格納されています。ただし、このファイル自体もパッケージなので、以下のコマンドにより展開してやる必要があります。
    % pkgutil --expand /Volumes/Install\ Xcode/InstallXcodeLion.pkg /tmp/XC41
    % cd /tmp/XC41/InstallXcodeLion.pkg
    % gzip -dc Payload | cpio -i

    上のコマンドを実行すると、/tmp/XC41/InstallXcodeLion.pkgの下にApplicationsというディレクリトが作成されます。Xcode 4.1を構成するパッケージはApplications/Install\ Xcode.app/Contents/Resources/Packagesに格納されており、この中のiPhoneSDK4_3.pkgというファイルがiOS 4.3 SDKが収納されているパッケージです。以下のコマンドを実行して、このパッケージを展開します。
    % pkgutil --expand Applications/Install\ Xcode.app/Contents/Resources/Packages/iPhoneSDK4_3.pkg /tmp/XC41/pkg
    % cd /tmp/XC41/pkg
    % gzip -dc Payload | sudo cpio -i

    上のコマンドを実行すると、/tmp/XC41/pkgの下にPlatformsusrの2つのディレクリトが作成されます。

  3. iOS 4.3 SDK一式はPlatforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.3.sdk以下に格納されているので、このディレクトリをXcode 4.6.3へコピーします。
    % sudo cp -Rp Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.3.sdk /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs

  4. InstallXcodeLion.pkgiPhoneSDK4_3.pkgの展開先として使った作業ディレクリトを削除します。
    % cd
    % sudo rm -rf /tmp/XC41

  5. Xcode 4.1のDMGボリュームをアンマウントします。以下のコマンドでも同じ操作が行えます。
    % hdiutil detach /Volumes/Install\ Xcode

下のスクリーンショットが、Xcode 4.1から抽出したiOS 4.3 SDKに置き換えた後のXcode 4.6.3のDeveloper Information([ユーティリティ]>[システム情報]の[Developer]カテゴリの表示情報)です。
SCShot140118_0012-Xcode4.6.3-Adding_iOS_4.3_SDK-OSX_MLion-750x761
Xcode 3.2.6のiOS 4.3 SDKを入れていたときのDeveloper Informationと比較すると、下のように変化していることが判るかと思います。
 Xcode 3.2.6 → iOS SDK 4.3: (8F191m)
 Xcode 4.1 → iOS SDK 4.3: (8H7)


【参考ページ】

  1. xcodelegacy/XcodeLegacy.sh at master ・ devernay/xcodelegacy ・ GitHub
  2. objective c - File is universal (three slices), but it does not contain a(n) ARMv7-s slice error for static libraries on iOS, anyway to bypass? - Stack Overflow


タグ:iOS Xcode
posted by とみやん at 11:13| Comment(0) | TrackBack(0) | モバイルアプリ開発 > iOS