Projectへの取り組みを始めました。Projectが組込み分野において将来性の高いテーマであることが判ってきたことも大きな理由です。Trail-Iを搭載した製品はまだ数が少ないようです。海外ではすでに多くの種類の製品が登場しています。ARMも本来は省電力性能に優れたコアですが、SoCやSoM上に高性能なGPUを一緒に搭載するケースが増えるに伴い、ここ数年で消費電力が一気に高くなってきました。モバイル機器の場合搭載できるバッテリーの容量に限界があるため、プロセッサの省電力性能は製品設計上の大きな要件となります。Tralシリーズを搭載した製品が増えている理由は、これらのプロセッサの処理能力対省電力の性能バランスが非常に優れているからです。Trailは64ビット・コアです。Trailを搭載した製品がさらに増えていくでしょうし、タブレットなどのコンシューマ製品だけでなく組込み機器でも採用例が急増していくでしょう。x86アーキテクチャはARMより歴史が長いため、Linuxを代表とするオープンソース・ソフトウェア資産の量と質でも優位性があります。Trailとその動向を追いかけていくことは大きな可能性があると思っています。E38xxシリーズ製品のトップページと同プロセッサのデータシートのリンクを下に掲載しておきます。x86ターゲット用にビルドして動作確認を行うまでの手順について解説しました。QEMUは実機ターゲット無しで始められるので手っ取り早くて良いのですが、やはり実機ターゲットを使わないと組込み開発の醍醐味は味わえない気がします。Linuxを動かすことに挑戦します。Trailプロセッサを搭載したボードはまだ手に入れていないので、取りあえず、本記事にはBSPのビルド手順についてのみ記載します。Centerから入手できます(同サイトの一部のドキュメントやソフトウェアは、ユーザー登録をしないと入手できせん)。それらのリンクを掲載しておきます。Guide以降の作業は、上記のドキュメントを参照しながら進めていきました。BSPをビルドする過程で一つの問題に遭遇したので、それを解決した際のTips情報も記します。E38xxのBSPパッケージをダウンロードしました。1.6.1リリースのパッケージファイルyocto-1.6.1/poky-daisy-11.0.1.tar.bz2を展開すると、作成されるディレクトリ)の中へ展開しました。poky-daisy-11.0.1このパッケージを展開すると、ディレクトリpoky-daisy-11.0.1の中にmeta-intelというディレクトリが作成されます。Linuxでは、BSPもレシピの集合体です)。Kit」という旧称だったらしいです。Controllerなどの外付けデバイスを除いて、市販のE38xx搭載ボードはIntel製ボードと同じ回路構成になっているものが多いようです。そのため、このBSPから生成したイメージは大抵のE38xxターゲットでそのまま動作します。Linuxのビルドを進めていくので、その作業ディレクトリを作成しました。valleyislandスクリプトoe-init-build-envを実行すると、パラメータで指定したディレクトリが作成され、自動的にそのディレクトリへ移動します。同ディレクトリの中に以下の3つのファイルが作成されます。conf/bblayers.confconf/local.confconf/templateconf.cfg参照ドキュメントBに記載されている手順に従って、ここで、conf/bblayers.confに以下のような変更を加えました。\このbblayers.confというファイルには、レシピが格納されてる最上位ディレクトリ(これを「Layer(レイヤ)と呼びます」)の一覧が定義されています。bitbakeコマンドの実行時に、これらのディレクトリがレシピ検索の対象となります。上では、既存のレイヤにmeta-intelディレクトリに格納されている3つのレイヤを追加しています。BSPを構成する全レシピがbitbakeコマンドから参照できるようになります。conf/local.confにも以下の変更を加えました。"valleyisland-64"」という設定項目がビルド対象ターゲットの定義です(local.confが作成された段階では、本項目は常に「qemux86」に設定されています)。LinuxのBSPには必ずターゲット定義ファイルというものが格納されています。BSPのターゲット定義ファイルは以下の2つです。meta-intel/meta-isg/meta-valleyisland/conf/machine/valleyisland-32.confmeta-intel/meta-isg/meta-valleyisland/conf/machine/valleyisland-64.confファイル名から判るように、上記はそれぞれ32ビットと64ビット版Linuxのシステム構成です。これらのファイルの中から選択して、そのファイル名(「.conf」を除いた)を「MACHINE」に設定すると、bitbakeコマンドはターゲットを確定できるようになります。PARALLEL_MAKEの値をいずれも「8」に変更していますが、その理由は、開発ホストのUbunutを動かしているVMware仮想マシンのプロセッサコア数を4に変更したからです。BSPのビルド環境が整ったので、ビルド対象イメージとしてcore-image-satoを指定して、その全ソースをダウンロードしました。core-image-satoしかし、下のようなエラーメッセージが出力されて、この処理は途中で停止してしまいました(エラー停止したのは、10分以上処理が進んだ後でした)。code.上のエラーメッセージの一部の文字列を指定してgrep検索すると、meta-intel/meta-isg/meta-valleyisland/recipes-kernel/linux/linux-yocto_3.10.bbappendというファイルがヒットしました。そこで、このファイルの内容を眺めていると、その中に以下のような記述の誤りが存在することに気づきました。"i2c-dev"SRCREV_meta_valleyisland-64とSRC_URI_valleyisland-64はGit経由で取得するソースのリビジョンとURIの定義のようですが、オリジナルのlinux-yocto_3.10.bbappendでは、これらの値が前方に存在するSRCREV_meta_valleyisland-32とSRC_URI_valleyisland-32と異なっています。32ビットと64ビット版BSPのソースは一括してGitリポジトリ上で管理されているはずなので、これらは同じ値でなければならないはずです。修正前のSRC_URI_valleyisland-64の設定値は、ローカルなディレクトリからソースを取得するための定義のように見えます(本BSPのメンテナーが開発中の暫定的な記述を残したまま、このファイルをGitリポジトリへCommitしてしまったのでしょう)。BSPの64ビット版ソースの一部を取得する処理で停止してしまったようです。core-image-sato」コマンドを実行すると、ソースのダウンロード処理は最後まで通って正常に終了しました(全ソースをダウンロードするのに、エラー前後の時間を合計して25分かかりました)。ソースのダウンロードが完了したので、core-image-satoイメージのビルドを実行しました。shown.real199m7.092suser556m26.375ssys121m47.961sいくつかの警告メッセージが出力されましたが、ビルド処理は正常に終了しているようです(ビルドにかかった時間は3時間19分でした)。下のとおり、ブートやrootfsのイメージはちゃんと生成されているようでした。Linuxのビルド作業は一旦終了です。近いうちにターゲットを入手する予定なので、実機環境が整ったら、今回の作業で生成したイメージを使ってターゲットによる動作確認をやるつもりです。Projectの研究を始めました9月も後半に入って東京はさらに涼しくなってきました。残暑はほとんど感じられず本当に涼しい夏でした。私はまだ一日中半袖の服装で過ごしていますが、常駐先の会社に通うために朝部屋を出ると肌寒く、ここ数日は長袖の服がほしくなってきました。東京へ来たのは8月初旬だったので半袖の衣服をまったく持ってきません。一度塩尻に戻って秋冬用の服を持ってくるか、こちらで長袖の服を買うかしなければなりません。東京がこの涼しさなら信州はさらに涼しいはずで、もはや完全に秋の気候になっているのでないかと思います。しても新しい研究テーマに遭遇して、仕事の関係でどうしても他より優先してこれに取り組まざるをえなくなりました。Projectがそれです。Projectは組込みLinuxベースのシステム開発の容易化と様々なアーキテクチャー間で移植できるようにすることを目標に発足したオープンソース・プロジェクトです。X1000を搭載したArduino互換開発ボード)へも移植されています。いままで半導体ベンダーやシステムベンダー、オープンソースコミュニティなどがそれぞれ独自に組込みLinuxディストリビューションを開発しており、これら間の連携はほとんどありませんでした。Projectが発足したのは2010年ですが、私が本格的に組込みLinuxに取り組み始めたのも丁度同じ時期です。Linuxでも使われています。Projectについて知った最初です。Linuxの研究開発をやっています。Trail-I)シリーズが組み込み用途で有望なプロセッサであることが判ってきました。Trail-T)と合わせて、Intelはいまこの2種類のプロセッサを組み込み分野向けに強力にアピールしています。Trailは64ビッド・プロセッサで、その省電力性能は他社のARMコア・プロセッサを凌駕しています(あの超省電力Haswellコアを製造している半導体メーカー・トップのIntel製のプロセッサですから)。Lenovo、ASUS、AcerなどがZ37xxを搭載した多様なタブレット製品を販売しています。MAX(BeagleBoardやPandaBoardを企画・製造したCircuitCoによる最新ボード、価格はUS$99)も登場して話題を集めています。Trailへ移植し、同OSを搭載したタブレットもすでに登場しています。PadとFonepadがそれで、ユーザーの評価も高いようです。WatchIntelのアナウンス情報によると、64ビット版Androidの移植も順調に進んでいるようです。64ビット版AndroidはARMとx86版がほぼ同時にリリースされそうです。Tailを周る動きが非常に活発なため、いま組込み業界の企業やエンジニアもこのプロセッサに注目しています。余談になりますが、Intelはここ数年組込み分野向けのプロセッサやソフトウェア開発に非常に力をいれているようです。Atomシリーズを代表として、モバイル機器向けのプロセッサを次々に発売したり、組込みLInuxやAndroidの開発にも大きなエンジニアリング・リソースを投入したりしています。上の3番目の記事には、GoogleよりIntelの方が主導権を持ってx86版Androidの開発を進めている状況がうかがえる内容が書かれていて、なかなか興味深いです。PCの出荷台数が減少の一途を辿っているのに対してモバイル機器の出荷台数は増大しています。いいまでIntelはPC向けのプロセッサを主力製品として展開しており、モバイル分野ではARMコア・プロセッサを製造している半導体メーカーにシェア拡大を許してきましたが、ここに来て、モバイル分野でのシェアを獲得するためIntelは大攻勢に出ているようです。組込み業界の企業やエンジニアは、ARMコア・プロセッサを主力製品に持つ半導体メーカーとその周辺の動きをウォッチしていれば済んでいましたが、いまやIntelも組込み分野のメインプレーヤの一人になっています。これからはIntelの動向もウッチしていかないと、組込み分野の最新トレンドをフォローすることは難しくなるのではないでしょうか(すでに、そうなっているようですが・・・)。マイコン創世記からIT業界で仕事をしている私にとってはx86アーキテクチャの方が馴染みが深いですし、同じように感じているベテランのエンジニアは多いじゃないかと思います。「ARMからx86への回帰」が大きな潮流になりつつあるような気がしてなりません。Projectが配布している組込みLinuxディストリビューションのビルドに挑戦してみました。Projectはオープンソースプロジェクトなので、その成果は公式サイトですべて公開されています。Package)が収納されているそうです。下調べで得た情報から、このQEMUターゲット向けのビルドはすぐに始めることができ、Linuxホスト上で簡単に動作確認ができるらしいです。Linuxのビルドと動作テストを実際にやってみたので、以降にその作業記録を書いていきます。1.6.1」というページの内容を参照にしながら、以下の作業を進めていきました。Linuxが対応しているホスト・ディストリビューションの一覧はこちらに掲載されています。64ビット版Ubuntuを使わなかった理由については後日別の記事で説明します)。Linuxをビルドするのに必要となるUbuntuホスト側のパッケージをインストールしました。1.6.1のパッケージファイルをダウンロードして、それを展開しました。poky-daisy-11.0.1上のパッケージを展開すると、「poky-daisy-11.0.1」というディレクトリが作成されます。Linuxの全ソースはこの中に格納されています(正確には、このディレクトリに格納されているのはソースではなくレシピです)。Linuxをビルドしていきますが、その前に、ビルド用の作業ディレクトリを作成しました。この処理のためのoe-init-build-envという専用シェルスクリプトが用意されているので、これを利用してQEMUターゲット用ビルド作業ディレクトリを作成しました。Linuxのビルド時に参照される環境変数の設定も行っています。このスクリプトを実行すると、パラメータで指定したディレクトリが作成された後、自動的にそのディレクトリへ移動します。ディレクトリを指定しないで実行した場合は、デフォルトで「build」という名前のディレクトリが作成されるようになっています。Linuxをビルドするので、上では、明示的に作業ディレクトリの名前を指定しました。oe-init-build-envスクリプトで作成されたディレクトリの中身を確認すると、以下の3つのファイルが格納されていました。これらのファイルも同スクリプトによって自動的に作成されるようです。conf/bblayers.confconf/local.confconf/templateconf.cfg上のうちlocal.confの中に、ターゲットのビルド時に適用される全般的な共通設定項目が定義されています。このファイルの中を覗くと、下のような定義が存在することに気づくでしょう。"qemux86"この「MACHINE」という設定項目がビルド対象ターゲットの定義です。x86用イメージを生成することができますが、その前にlocal.confに以下のような変更を加えました。PARALLEL_MAKE」はbitbakeコマンドの並列スレッド数とmakeコマンドの並列ジョブ数を決める設定項目です(makeはbitbakeから呼び出されます)。これらを適切な値に設定すると、ターゲットイメージのビルド時間を大きく短縮することができます。調べると、makeの並列ジョブ数の適切値については以下の2つの説が存在するようです。論理プロセッサコア数と同じ値にする論理プロセッサコア数の2〜3倍の値にする上の変更前のlocal.confの内容は前者の説に従った設定になっています。Fusionの仮想マシン上で開発ホストOSのUbuntuを動かしています。私の経験によると、論理プロセッサのコア数が2の場合はmake並列ジョブ数を4に設定するのが最適であるという結果を得ています。PARALLEL_MAKE」の値をいずれも「4」に変更したのは、この理由からです。Linuxをビルドするための準備が整いました。Linuxの配布パッケージの中にはいくつかの定義済みイメージ・レシピが収納されています。Desktop)というイメージをビルドしてみました。core-image-sato」というコマンドによってターゲットイメージを生成できると書いてありますが、ここでは、先に次のコマンドを実行しました。core-image-satoビルド対象イメージのcore-image-satoには、Linuxカーネル、X11、Qtなどサイズの大きいコンポーネントが構成要素として含まれています。core-image-sato」というコマンドは、これらのソースを自動的にダウンロードしながらコンパイルとリンクを行い、最終的なターゲットイメージを生成します。core-image-satoの全構成要素のソースをまとめると相当なボリュームになるので、ソースのダウンロードとビルドの工程は分離した方が賢明です。上のコマンドによって、ターゲットイメージのビルドに必要なソースの取得だけを行うことができます。2+モバイルルータ経由の回線でこの処理を行いましたが、約40分かかりました。Linuxのターゲットイメージをビルドできます。以下のコマンドを実行して、ターゲットイメージcore-image-satoをビルドしました。core-image-satoターゲットイメージのビルドに要する時間は、その中に含まれるコンポーネントの数とボリュームによって大きく変化します。開発ホストPCの性能にも依存します。SSDという構成のVMware仮想マシンの場合)。Linuxのビルドは時間がかかると書かれているページが結構ヒットしたので覚悟はしていたのですが、ビルド時間に18時間にもなるとは予想をはるかに超えていました(さすがに18時間はかかりすぎではないかという気がので、これは計測結果では正確ではないかもしれません。夕方からビルドをスタートして、外部モニタの電源を切った状態で就寝してしまったので、もしかすると途中でMacがスリープ状態に入っていた可能性があります)。Retinaが欲しくなってきました。Airのそれよりずっと高速だからです)。x86用ターゲットイメージの動作確認ターゲットイメージcore-image-satoのビルドが終わったので、さっそくその動作確認をやってみしました。以下のコマンドによって、QEMUでターゲットイメージを起動することができます。qemux86QEMUが起動すると新しいウインドウが開き、その中にお馴染みのLinuxのブートシーケンスが表示されました。数秒後にQEMUウインドウの画面は下のような表示に変わりました。Linuxと三重の画面の入れ子になっているので面白いです)。QEMU内のDesktopウィンドウの左上の三角をクリックすると、その画面は下のように変わりました。Desktopの全アイテムのようです。ゲームまで在るのは面白いですが、かなりシンプルな構成ですね。Server」というアイコンが存在していますが、これはVNCサーバーみたいです。こいつがちゃんと動くのか興味があったので試してみました。Server」アイコンをクリックして実行状態にしました。Ubuntu側で別のターミナル・ウィンドウを開き、そこ中から以下のコマンドを入力しました。192.168.7.2最初のコマンドで、TightVNCというVNCクライアントのパッケージ(「vncviewer」はxtightvncviewerのエイリアス・パッケージ名です)をUbuntuへインストールしています。qemux86」でQEMUを起動した際に表示されるIPアドレスが、VNCサーバーのIPアドレスに相当します)。DesktopのVNCサーバーに接続できることを確認できました。Linuxのビルドと動作確認は終わりです。core-image-satoイメージのビルドにやたらと時間がかかることを除いて、特に問題に遭遇することはありませんでした。組込みLinuxのビルドと動作確認では大抵何かしらの問題に遭遇して、その解決方法をGoogle先生に教えてもらたりするのですが、今回の作業ではそれはなくスムーズにゴールまで到達できました(こういう問題にぶつかりながらゴールに辿り着いた瞬間に味わえる感激が組込みLinux開発の醍醐味なので、スムーズすぎると何だか物足りないですね)。Linuxのリファレンスターゲットらしいので、そのBSPはしっかりメンテナンスされているのでしょう。他の実機ターゲットでは、こういう風にスムーズにいくことはないんじゃないかと想像します。Linuxのビルドに挑戦します。BeagleBoardやPandaBoardへも移植されているようです。Linuxを動かしてみるつもりです。Linuxの研究開発をやっているので、こちらで得られた情報もこれから公開していくつもりです(守秘義務に触れるものは公開できないので、パブリックな情報やTipsなどになりますが・・・)。Linuxを使って特定用途向けのシステムを構築するにはレシピのカスタマイズや作成が必須の作業になりますが、これらの情報もぜひ提供したいと思っています。Linuxの記事が続くことになるでしょう。Linuxの配布パッケージにはこれ外にもいくつかイメージ・レシピが収納されています。利用可能なイメージ・レシピの一覧は次のコマンドで確認することができます。DesktopはQt/X11ベースGUI環境なので、いじくり回して楽しめます。動かすならこういうの面白味のある奴が良いのですが、core-image-satoはビルドにとても時間がかかるのがネックです。Linuxの動作確認までやりたい場合は、core-image-minimalというイメージを使うことをお勧めします。これはコンソール・ベースのCLI環境で最小構成のイメージなので、ビルド時間を短縮できます。実際に、このcore-image-minimalのビルドと動作確認をやってました。以下のコマンドによって、core-image-minimalのビルドに必要な全ソースをダウンロードしました。succeeded.real0m8.740suser0m3.984ssys0m4.008s「time」コマンドを付加して時間を計測してみましたが、core-image-minimalのソース取得は一瞬で終了しました。上のメッセージを読むと、実際には2つの処理タスクしか実行されていないことが判ります。core-image-minimalを構成する全ソースはcore-image-satoの取得済みソースに含まれているからじゃないかと思います。続いて、core-image-minimalイメージのビルドを行いました。succeeded.real1m19.636suser0m34.502ssys0m28.878sこちらもたった1分で終わってしまいました。core-image-satoで全レシピがすでにビルド済みなので、レシピから生成済みのパッケージを組み合わせてcore-image-minimalのrootfsを構築する処理だけが実行されたようです。ちなみに、bitbakeコマンドによって生成されるカーネルやrootfsのイメージは<build_dir>/tmp/deploy/images/qemux86というディレクトリに格納されます。tmp/deploy/images/qemux86bzImagebzImage--3.14+git0+09424cee64_f9048769cc-r0-qemux86-20140918062211.binbzImage-qemux86.bincore-image-minimal-qemux86-20140922002131.rootfs.ext3core-image-minimal-qemux86-20140922002131.rootfs.manifestcore-image-minimal-qemux86-20140922002131.rootfs.tar.bz2core-image-minimal-qemux86.ext3core-image-minimal-qemux86.manifestcore-image-minimal-qemux86.tar.bz2core-image-sato-qemux86-20140918062211.rootfs.ext3core-image-sato-qemux86-20140918062211.rootfs.manifestcore-image-sato-qemux86-20140918062211.rootfs.tar.bz2core-image-sato-qemux86.ext3core-image-sato-qemux86.manifestcore-image-sato-qemux86.tar.bz2modules--3.14+git0+09424cee64_f9048769cc-r0-qemux86-20140918062211.tgzmodules-qemux86.tgzREADME_-_DO_NOT_DELETE_FILES_IN_THIS_DIRECTORY.txtcore-image-minimalのイメージがビルドができたので、それをQEMUで起動してみました。qemux86」というコマンドでQEMUを起動できます。QEMUを使って動作確認までできるのはすごく便利そうです。実機ターゲットがなくても、大抵のアプリはデバッグができてしまうからです。実機固有のハードウェアに依存するアプリは無理ですが、QEMU仮想マシンはEthernetもエミュレートしてくれるので、ネットワーク・アプリまでQEMU上で動かすことが可能です。VMwareほど完成度の高い仮想環境ではないみたいですが、結構広く使われているので、十分に実用に耐えられる環境なのではないかと思います。QEMUはx86だけでなくARMやPowerPCにも対応しているので、組込みLinuxでこそ真価を発揮するエミュレータです。Projectによる大きな成果の一つだと言えます。Lionへのインストール東京も曇ってすっきりしない日々が続いてましたが、先週末の連休からやっと晴れて良い天気になりました。例年ならこの時期は残暑が厳しく蒸し暑いのですが、今年はそれほど暑さが辛くありません。湿度が低いようで、晴れても爽やかさを感じられます。本当に夏らしい気候だったのは、東京では7月中旬〜8月中旬の一ヶ月だけでした。9月も残り2週間ですが、秋の兆しは早く訪れそうです。11-inchを手に入れたので、いまこれにiOS開発環境を構築中です。Lionに対応していたことも判断基準になりました。Lionで使うことができます。5.1.1をMBA11へインストールしたので、自分の備忘録を兼ねて、その作業記録を書いておきます。4.6.3をインストールしました。この2つのバージョンを共存させて併用したかったからです。5.0〜6.1開発用として使い分けていくつもりです。4.6.3を入れましたが、このときと完全に同じ手順でインストールを行いました。SDKをコピーしました(2014/07/08の記事を参照)。Information([ユーティリティ]>[システム情報]の「Developer」カテゴリ)表示です。5.1.1のインストールを始めました。5.1.1のアプリファイルを「アプリケーション」フォルダへコピーしました。5.1.1を初めて起動すると、ライセンス同意要求のウィンドウに続いて、下のようなウィンドウが表示されました。このウィンドウの「Install」ボタンを押すと、追加コンポーネントのインストールが始まりました。この処理が終了すると、XcodeのWelcomeウィンドウが表示されました。5.1.1が起動することを確認したら、すぐに[Xcode]>[Preferences]メニューの[Downloads]タブ画面を開き、コンポーネントとドキュメントの追加インストールを行いました。Informationは下のような表示になりました。SDKしか同梱されていないことが判ります。SDKを追加しました。SDKを追加できます。Information表示です。5.0.2をインストールしたときと同じ手順ですが、再掲載しておきます)。SDKが格納されているディレクトリのリンクを作成しました。SDKが格納されているディレクトリのリンクを作成しました。10.7のSDKが追加されます。Information表示を確認すると、下のようになっていました。5.1.1を共存インストールしてiOS開発環境を構築しましたが、その前に基本的なソフトを入れる作業もやりました。Windowsと比較すると、Macはこの作業がすごく楽です。基本的なソフトを一通り入れて使える状態にするのに、Windowsだと2〜3日かかったりしますが、Macだと半日〜1日で終わります。Windowsではソフト毎にインストーラを起動して入れていきますが、インストーラが起動するまで数分待たされたりしますし、インストール手順も統一性がなくまちまちです。インストーラによって表示されるガイド画面を確認しながら慎重に作業を進めていかないと、不要なものまでインストールされたりします。これに対して、Macではアプリのアイコンを「アプリケーション」フォルダへコピーするだけでインストールできます。すべてのアプリがこの手順に統一されているので、dmgファイルを開いたりzip/bz2ファイルを解凍した後にこの操作を行うだけです。ドライバやカーネルモジュールを内包しているソフトではインストーラが用意されていますが(インストーラはpkg/mpkgファイル内に収納されているので、同ファイルを開くと自動的に起動します)、インストーラのガイド画面もほぼ統一されているので、インストール操作を誤ったり迷ったりすることはまずありません。Windowsでは新しいソフトを入れるだけでシステムが不安定になったりすることがあり、こういう現象を解決するのに時間を取られたりしますが、Macではこんなことは皆無です。私は数台のMacを4年間ほぼ毎日を使い続けていますが、いままでこういう経験をしたことが一度もありません。PCはすぐにマルウェアに感染してしまいます。OSの安定性と安全性では、WindowsよりMacの方が圧倒的に優れています。本業の仕事でWindowsに使っていると、画面のあまりの見難さ(Macと比較すると、Windowsは特にフォントがすごく醜いです)とあまりの使い難さに嫌気が差してきます。毎日Macだけ使って仕事ができたら、どんなに幸せだろうと思ってしまいます。2014)を入手した久しぶりに大物の買い物をしてしまいました。新しいPCを手に入れたのです。私にとってPCとはMacのことです。PCを買うことなど、もはや頭の隅に浮かぶことさえありません。2011)を入手したのが2012年10月なので、PCを買ったのは約2年ぶりです。WindowsからMacに乗り換える前は年に2〜3台のPCを買っていましたが、いまはせいぜい年に1台位です。使用目的が変化する度に、PCを買い換えたり、CPUやメモリなどのパーツを集めてPCを組んだりしていました。いまはMacにしか興味がないので、WindowsやPCパーツの最新動向を追いかけることはまったくなくなりました。いう情報を知らなければ、PCやパーツを買うためにお金を消費することもなくなります。おかげで、トータルでは以前よりもPC機材に使うお金が大分減りました。PCを組むより、Macを一台買った方がよっぽど経済的です。Airが発売されて以来、ずっとこの新型MBAが欲しくてたまりませんでした。モデルチェンジによってプロセッサ性能はそれほど大きく向上していませんが、バッテリー駆動時間が大幅に伸びたことが羨ましくてたまらなかったからです。2013/2014を比較すると、バッテリー駆動時間は5時間から9時間に伸びています。MBAは持ち歩いて使うことが多いモバイルPCなので、この改良点は他の何よりもすばらしい事だと思っていました。MD712J/BをベースにカスタマイズされたCTO版です。256GBで、キーボードはUS配列になっています。スペックの中で特に搭載メモリの容量にこだわりを持っていました。標準仕様のMBAの搭載メモリは4GBですが、これを8GBに拡張した奴がどうしても欲しかったのです。Fusionの仮想マシンにLinuxを入れて使うことが多いからです。2014に換えました。一緒にHyperJuiceを持ち歩いたりしていましたが、これで予備バッテリーを持ち歩く必要はなくなります。それより、メモリ容量が4GBから8GBに倍増したことが大きいです。内蔵SSDの読み書き性能も大きく向上しているらしいので、使っていくうちにこれらの恩恵も実感できるじゃないかと期待しています。手段はまたしてもオークション落札で、入手したのはワンオーナーの中古品です。発売されてまだ間もない最新モデルなので、ほぽ新品に近い状態でした。Airを入手するにあたって、11-inchと13-inchのどちらにするかずいぶん悩みましたが、ほぼ毎日持ち歩くPCなので、やはり軽さを重視して11-inchの方を選択しました。じつは、当初は13-inchの方を選択するつもりでした。ディスプレイ表示領域の広さを重視していたからです。11-inchが1399x768で13-inchは1440x900ですが、この差は大きいと考えていました。この考えはいまも変わっていませんが、重量とディスプレイ表示領域を天秤にかけて悩みに悩んだ末、結局11-inchの方を選択した訳です。2010)も所有しており、こちらも何度も持ち歩いたことがありますが、13-inchの重さは結構ずっしりときます。バックパックに入れるとそれほど苦ではないのですが、手提げカバンではその重さを実感します。移動距離の長さや持ち歩く頻度も大きく影響して、やはり13-inchのハンドキャリーは辛さを感じることが多かったです。11-inchは1.08kgなのに対して13-inchは1.35kgで270gしか差はありませんが、この差は意外に大きいというのが私の感想です。11-inchを選んだ理由はもう一つあります。Airが今年中に発売されるのではないかという観測情報がたくさん流れていることです。12-inchが登場すれば、それは軽さとディスプレイ表示領域の広さを兼ね備えた究極のノートPCになるはずです。13-inchを比較すると、後者は見劣りします。Retinaが発売されるのを待った方が賢明だと思いました。Lionにダウングレードしてしまいました。調べると、Marvericksに対する評判があまり良くないようだったからです。メジャーなアプリを使うだけの実用機ならMarvericksでまったく問題ないと思いますが、開発機用に使うのはかなり不安を感じます。Marvericksも10.9.4までバージョンが進んでいますが、いまだにその評判は良くないみたいです。私は他のMacもMarvericksにアップグレードしていません。Yosemiteがリリースされるようですが、Yosemiteへのアップグレードも当面やるつもりはありません。Xというソフトによって作成したUSBメモリを使って行いました。Xを使って簡単にクリーン・インストール用メディアを作成することができます。Lionのインストールメディアを作成しました。前の記事からまた一ヶ月以上間が開いてしまいました。公私共に色々な変化があり、毎日忙しい日々をおくっていて、なかなか記事を書く気になれないでいました。言えば、先週から急に涼しくなり、もう夏も終わりかと思えるような天候が続いていますね。地方によっては、ずっと雨ばかりの夏だった所もあるみたいですが、こちらは曇の日は多いですが、それほど雨は降っていません。言っても、これは信州の話ではありません。じつは、私はいま東京に滞在しています。先月末に一旦塩尻に戻ったのですが、本業の仕事の関係で、東京へ舞い戻る羽目になってしまいました。こちらには来たのは8/7です。夏の間は涼しい信州で過ごしたかったのですが、信州にはIT関連の仕事はほとんどないので、仕方なくまた東京に来ています。いまは戸越という所に滞在しながら、平日は常駐勤務先の会社が在る品川に通っています。いまの滞在場所は五反田駅から徒歩で15分位、大崎駅へも15分位で行けます。電車やバスを利用すればどちらの駅にも5分位で行けるので、都心へのアクセスが良く便利です。近くに戸越銀座という商店街があります。誰かに戸越に滞在していると話すと、必ず「あの戸越銀座が在る所ですね」と言われます。それくらいこの商店街は有名らしいです。戸越銀座は全長約1.3kmに渡る関東有数の長さの商店街で、その中に東急池上線の戸越銀座駅と都営浅草線の戸越駅が存在します。周辺の住民が主な客ですが、遠くから訪れている人もいるようで休日はにぎやかです(ごった返すという程ではありません)。小奇麗で活気がある商店街ですが、気取った感じはまったくなく、店の人同士や買い物客が立ち話をしている光景をあちらこちらで見かけます。印象的なのは、練物などの素材店だけでなく飲食店までもが軒先で調理済みのお惣菜を売っている事です。それらを買い物客がその場で食べている光景を良く見かけます。いくつかの店は軒先にテーブルと椅子を置いてあり、近所の人や買い物客がワイワイと一杯やりながら食べたりしています。いう光景が商店街の中に溶け込みながら、とても穏やかな空気が流れています。戸越銀座を訪れたのは今回が始めてですが、それ以来私も此処の雰囲気が気に入ってしまい、休日は渋谷や新宿などへ出ることもなく、戸越銀座商店街の中をブラブラと散策して過ごしたりしています。都内の庶民的な商店街と言えば、戸越銀座から距離が近い武蔵小山も有名です。じつは、私は武蔵小山に2年間住んでいたことがあります。35年も前なので大昔です。3年前目黒に6ヶ月滞在したことがありますが、このときにどんな風に変わっているのか観てみたくなって武蔵小山へ数回行きました。武蔵小山のアーケード商店街も小奇麗に様変わりしており昔以上ににぎやかでしたが、戸越銀座の方がより活気があるような気がします。それに戸越銀座の方が少し上品な感じがします。住民は裕福層が多いからかもしれません。いまの滞在場所の近くには、もう一つ五反田TOCビルという名所があります。商業店舗とコンベンションセンター等の複合施設ですが、このビルには様々な種類の卸売店が入っています。ユニクロやABCマートなども在って、どちらも店舗面積が広く品揃えが豊富な上、商品の価格が他店より安いです。他にも鉱石、アロマ、外国お土産風アクセサリーなどやちょっと怪し気な商品を置いている店も在って、これらの店内を眺めながら歩き廻ると面白いです。売っている店もあります。どの店も商品の値段が安い(西友やイトーヨーカドーなどの特売セールと同程度かそれ以下の価格)のが特徴です。ちなみに、TOCとは「東京卸売センター」の略称です。ここも結構有名な所ですが、有名な割には休日でも客は少なくゆったりと買い物ができます。五反田駅から少し離れており、施設が古い所為であまり人気がないのかもしれません。五反田駅から徒歩8分で行けますしシャトルバスも運行されているので、アクセスが悪いということはぜんぜんないです。休日にゆったりと買い物をしたければ、此処はお勧めです。スーバー並に豊富な種類の商品がありながら、どれも値段が安いのが良いです。五反田TOCは名所と呼ぶより、知る人ぞ知る穴場と言った方が適切かもしれません。私も休日にTOC内の店を渡り歩いたり、同ビルの1階に在るエクセルシオールカフェでカフェオレとかを飲みながらのんびりと時間を過ごしたりしています。午前中にTOCで過ごして午後から戸越銀座に行くのが、休日の過ごし方のパターンになっています。touch第5世代を入手した私はまだ横浜の長者町に滞在しています。横浜での仕事は7/8に終わりましたが、本業の仕事の関係で東京での予定が重なったからです。それらも今週一杯で全部片づくので、来週の7/21に塩尻へ戻る予定です。7/9以降特に仕事はしていなかったので、早めの夏休みを取っている気分でのんびりと過ごしていました。いやー、しかし、それにしても東京は暑いですね。台風8号が通過した7/11以降関東地方は見事に真夏の気候に変わってしまいました。日中に外に出ると、あまりの蒸し暑さに息苦しささえ感じるくらいです。真夏の信州もそこそこ気温は高いですが、湿気が低いので東京よりはずっと過ごし易いです。関東地方の真夏の気候は本当に身体に堪えます。「やっぱり、こんな東京には住みたくないなぁ」という気分になります。東京はコンクリートやアスファルトだらけで熱気の逃げ場がどこにもなく、ヒートアイランド現象によってさらに気温が上がっていることが、この息苦しいほどの蒸し暑さの主たる原因なんだと思います。私は18歳のときに上京して28年間東京に住んでいましたが、若い頃にはエアコンを持っていませんでした。25年位前まではエアコンは高価な家電で贅沢品だったからです。その当時はエアコン無しでも普通に東京で暮らせましたが、いまの東京では夏にエアコン無しで生活するのは自殺行為に等しいんじゃないかと思います。エアコン付きの賃貸物件も増えており、築浅のアパートやマンションには大抵エアコンがついています。東京のような都会ではエアコンはもはや必需品です。エアコンがここまで普及してしまったことが、都会のヒートアイランド現象を引き起こしているのかもしれません。私は夏が大の苦手で、四季の中で夏が一番嫌いです。しても用事で外出しなけばならないとき以外は、できるだけ冷房の効いた室内で過ごすようにしています。外食や買い出しなどで外に出るのは早朝か夕方だけで、日中はずっと部屋に篭っています。横浜周辺の名所巡りとかに行きたかったのですが、あまりの暑さにそんな気力はぜんぜん湧いてこないです。White,MD720J/A)の中古品を手に入れることができました。今回も入手手段はオークションで、落札価格は現在の中古相場とほぼ同じでした。この機種は数多くオークションに出品されているので、粘り強く入札を続ければ、もう2,000〜3,000円安く落札できそうな感じでしたが、手っ取り早く入手したかったので即決価格で出品されていた物を落札してしまいました。本体の状態はかなり新品に近く、グレードは上の中という所ではないかと思います。実物を目にして手に持った瞬間、こいつの薄さと軽さに驚かされました。スクリーン画面がすごく鮮やです。touchはRetinaディスプレイを搭載しているんですね。6までのUIの方が好きです。7のアプリ・アイコンのデザインが2D風の平べったい感じになったのは気に入りません。7のUIは好きになれません。7のUIに慣れていくしかないんでしょうが・・・。4ですが、どちらも三世代以上前の機種です。実用機として使える性能ではないので、これらはいずれも開発専用機として使っていました。touch第5世代は現行機種なので、これから毎日持ち歩いて使っていくつもりです。touchが私にとって初めてのiOS実用機になります。7.0.xを搭載した奴にしようと決めています。7.0.xと7.1.xの両方で動くことを検証したいからです。touchにはWiFiしか搭載されておらず、3G/4G/LTEなどのデータ通信機能は内蔵されていません。touchを外で使うにはモバイルルーターも一緒に持ち歩く必要があります。今年の3月にWiMAXのルーターを解約して、イー・モバイルのGL10Pというモバイルルーターに換えました。月間7GBというデータ通信量の制限はありますが、アクセスエリアが広い4G/LTE回線が使えて、SoftBankのWiFiスポットも利用できます。通信速度はそこそこ高速で、大抵何処でも繋がるので便利に使っています。WiMAXはビルの中や街から離れた郊外などではほとんど繋がらなかったので、WiMAXから4G/LTEルーターに換えて正解だったと思っています。GL10Pはバッテリーの持ちがあまり良くないという欠点がありますが、モバイル機器用の外付けバッテリーも一緒に持ち歩くことでこの欠点をカーバーしています。touchはスマホではありませんが、常にモバイルルーターと一緒に持ち歩けば、スマホみいたな感じで使っていけます。私もスマホ・デビューすることになりそうです。BLE/iBeaconの研究に本気で取り組む決心をしたので、その開発環境を整備していかなくてはなりません。一台だけですが、取りあえず、これでiOSデバイス側の準備は整いました。次の目標は、BLEモジュールの評価ボードを入手することです。近いうちにこちらも入手しようと思ってDigiKeyやMouserで物色中ですが、どの製品を買えば良いかはほぼ判っています。Energy』という本にこの辺の情報が載っており、さらにググってBLE評価ボードの情報収集もしました。予算確保の関係で2〜3回に分けて複数の種類のボードを購入するつもりですが、一回目に購入する製品はすでに決めています。BLE評価ボードが入手できたら、随時記事で紹介していきます。EnergyとiBeaconの研究を始めます4月初頭のまだ桜が咲いている頃に横浜に来て、横浜周辺のマンスリーマンションに滞在しながら仕事をしていましたが、こちらでの仕事も今週一杯で終わることになりました。次の仕事の場所は何処になるかまだ決まっていませんが、いずれにしても近いうちに横浜から離れことになりそうです。新宿や渋谷みたいな都心の街よりは人が少なく、横浜の街中に流れている空気はゆったりしている感じがします。そんな横浜の街が好きだったので、すごく名残惜しいです。私は隙間時間などにIT関連の情報収集を日常的にやっています。主な目的は新しい研究テーマを探すためですが、やはり最新のトレンドにアンテナを張っておきたいからです。Webやモバイル分野で働いているプログラマは私と同じように日常的に情報収集している人は多いんじゃないかと思います。この2つの分野は日進月歩で技術が進化しており、ちょっと油断するとすぐに最新トレンドに置いていかれてしまいます。私が最近情報収集のときに使っている一般的なキーワードを紹介すると、Web関連では「JavaScript」「HTML5」「データビジュアライゼーション」など、モバイル関連では「iOS」が断然トップですが、「ハイブリッドアプリ開発」などについても調べたりしています。このようにWebとモバイル分野の情報収集は私の日課になっていますが、最近すごく有望そうなモバイル分野の研究テーマを見つけました。EnergyとiBeaconです。Smart」という呼称も使われています。その名が表しているとおり、BLEの最大の特徴は超低電力で通信が可能なことです。コイン形リチュウム電池で最大数年間動作させることができます。Bluetoothと同様に、BLEは免許なしで使える2.4MHz帯の電波を用いており、最大1Mbpsの通信が可能です。私がググって得たBLE関連の情報を以下に列記します。BLEチップは1個あたり2〜5ドル程度の価格で複数の半導体メーカーから販売されており、これらを利用すると、安価にBLEモジュール(「Beaconモジュール」とも呼ばれる)を製造することができる。7以降を搭載していれば、BLEを利用するアプリを動かすことができる。4.4)以降だけである。BLEとiBeaconによる位置情報の利用シーンとして、店内やショピングモール、観光地などで広告や情報をプッシュ配信するようなケースだけでなく、ユーザーの行動情報などを収集して統計データとして利用するようなケースも考えられる。このようなケースでは、Webサービスと連携していく可能性が高い。SemiconductorなどがBLE規格に対応したSoCチップの製造・販売に力を入れています。SoCチップで、これらの単価は2?5ドル程度です。Semiconductor、そしていくつかの組込みボード・ベンダーからもこれらのチップを搭載した評価ボードも販売されており、このような評価ボードも100ドル前後と比較的安い値段で入手できます。SoCチップを搭載した評価ボードを一通りと揃えたとしても、全部で大体500〜600ドル前後で購入すること可能です。LinuxやAndroid用の評価ボードと比較すると、BLEモジュールの開発はかなり低予算で始めることができます。ちなみに、CC2540とCC2541に内蔵されているCPUコアは8051、nRF51882とnRF51422はCortex-M0です。どちらもGCCを使えるので、BLEモジュールのファームウェアはオープンソースを利用した組込み技術で開発することができます。SoCチップや評価ボードさえ入手できれば、すぐにでもBLEモジュール側の開発に着手できます。言えば、BLEモジュール自体も相当な低予算で製造することが可能です。BLE機能はすべてSoCチップに内蔵されているので、これにアンテナ、オシレータ、チップ型抵抗やコンデンサ、コネクタなどの電子部品を組み合わせるだけで製造できるからです。ロッドあたりの製造数にもよりますが、ざっと計算しても1個1,000円前後かそれ以下の原価で製造することも可能なはずです(製品の見栄えを重視して、本体をちゃんとしたケースに入れるなら、ケースの製造単価も加算しなければなりません。それでも、1個あたり2,000〜3,000円前後の原価で製造できるじゃないかと予想しています)。続いて、iOSデバイス周辺のBLE事情についてですが、この辺りの情報については私がグダグタ説明するより、下のリンクページの記事を読んでもらった方が早いんじゃないかと思います。@ITAppleはiOSに搭載しているBLEを利用した近距離位置測位サービスを「iBeacon」という名前で呼んでおり、以下の機種がこのiBeaconに対応しています。7に対応したアプリはこれを利用することができます。7は88%に達しているそうです。iPhoneに限れば、世の中で稼働中の約80%の端末でBLE/iBeaconアプリを動作させることができることになります。このようにiOSデバイスではBLEのインフラ環境がすでに整備されていますが、これと比較すると、AndroidのBLEへの対応状況は随分と遅れています。7(2013年モデル)に限定されます。7を常に持ち歩いている人が世の中にたくさん存在すると想定するのは、ちょっと無理があるんじゃないかと思います(結構売れた機種なので、そこそこユーザーは多いでしょうが・・・)。4を『イオンのスマートフォン』として発売しているそうです)、広く普及しているとは言えない機種です。BLE対応ハードウェアが搭載されているAndroid端末は他にもいくつか存在していますが、それらの機種はメーカー独自のSDKを使わないとアプリ側でBLE機能を利用することができません。4.3からで、現状このAPIは上の2機種にしか対応していません。4.4を導入しなければ安定した通信はできないそうです。4.4を導入済みの上の2機種だけに限られるとすれば、現状BLE機能を利用できるAndroid端末の数は相当少ないと見るべきでしょう。上記のような状況なので、モバイル・プログラマがBLE対応アプリを開発する場合、iOSだけをターゲットとしてアプリを開発すれば良く、実質的にAndroidは無視することができます。この現状を知ったことが、私がBLE/iBeaconの研究に取り組もうと決心した最大の理由です。それと、私がBLE/iBeaconに取り組もうと決めた理由がもう一つあります。それは、BLEがモバイルやウェアラブルデバイスなどに搭載されることを想定した規格であるという点です。常に身につけているデバイスが周辺に存在するBLEモジュールを検出できるようなシュチュエーションでなければ、BLEによる位置情報の利用価値は生まれません。ノートPCのような携帯性が低い機器にBLEを搭載しても利用価値はほとんどありません。それに、ノートPCは常時電源が入っている保証がありません。バッテリー駆動時間の節約のために、携帯中はノートPCの電源を切っている人も多いはずです。これは、PCで最大のシェアを持つWindows向けにBLEアプリを開発する必要性はないということを意味しています。BLEモジュールの配置や稼働状況などを管理するツール的なプログラムをPC向けに開発するケースは考えられますが、BLEモジュール自体を利用するアプリプログラムはモバイルやウェアラブルデバイス上で動かすケースだけを考慮すれば良いことになります。Phoneは無視してもまったく問題ありません。過去の記事に書いているとおり、私はAndroidとWindowsが嫌いです。4.3以降その性能もかなり向上していることは知っています。iOSのライバルなので、iOSについてググっているとAndroidの最新情報も自然と目に入ってきてしまいます。時代の趨勢で、もはやAndroidを無視するのは難しくなっていることも十分承知しています。嫌でもまたAndroidに関わる時が来るかもしれませんが、Windowsだけにはできたらもう関わりたくないと思っています。PCは全部処分しても問題ないかなぁという気がしています)、本業の仕事では不本意ながらWindowsを使うことがまだ多いです。できることなら本業の仕事でもWindowsを使うのを止めて、Windows向けのプログラム開発も完全に終わりにしてしまいたいという気持ちが強くなっています。個人的には、Windowsはすでに過去のOSであり、Windowsのために時間を使うことは無駄以外の何者でもないと思っています。エンタープライズ系ではWindowsがまだ大きなシェアを維持しているようですが、現状Webインフラ系ではLinuxが圧倒的なシェアを持っています。動画配信のようなパフォーマンスを重視するサーバーでは、WindowsはLinuxに完敗するからです。このような状況を考えると、極端な意見かもしれませんが、エンタープライズ系以外ではもうWindowsプログラマは不要なんじゃないかという気がしています。PCからモバイル機器への移行が益々加速しているので、プログラマがWindows開発に時間を使う価値は低くなる一方のように思えてなりません。余談ですが、本業関係で私が得た最新情報によると、最近なぜか組込み分野でWindows関連の仕事が急に増えているらしいです。Embeddedを採用するケースが増えているそうです。危機感を持ったMicrosoftがこれらのOSのライセンス価格を下げて、営業攻勢をかけているのかもしれません。話題が逸れてしまったので、元に戻しましょう。Mobileの参考書を探しているときに、たまたま「iBeacon」の本を見つけたことがきっかけです。7に搭載されている標準機能であることを知り、さらに、これがBLE規格に準拠した多数のモジュールと通信することで近距離の位置情報を取得する目的に使われることを知りました。元組込み屋として自然に興味が向かったのは、BLEがどのような規格なのかと、BLEモジュールのハードウェア構成はどうなっているのかいう点です。これらについて調べていくうちに、上のような情報を得ることができました。去年の終わり頃から漠然と頭に描き続けてきたアイデアがあって、それが、組込みとモバイルを融合したガジェット的な物が作れないだろうかだったので、BLEとiBeaconの詳細情報を知ったときに、まさにこの組み合わせがテーマにマッチしているのではないかとピンと来ました。いまはまだBLEとiBeaconのベーシックな情報を収集している段階で、手始めとして、以下の2つの本を読んでいます。Energy』の方ももう少しで読み終わります。後者は洋書ですが、BLEとiBeaconの概要情報が良くまとまっているので、英語を読めるなら、この本から読み始めることをお勧めします。Energy』に書かれている内容は重複している部分が多く、後者の方が内容的に詳しいので前者は読む必要はないと思います。engieers」であると明記されています。BLEモジュールのハードウェアや開発環境の構築方法についても書かれいるので、私のような組込み屋でBLEに取り組みたいと考えているプログラマが最初に読むべき本としては、これが最適ではないかと思います。他にもBLEとiBeacon関連の本がいくつか出版されており、CoreLocation.frameworkによる位置情報プログラミングに焦点を絞っている本もあります。記載内容の有益性を見極めながら、これらの本も読んでいくつもりです。BLEとiBeaconについて知れば知るほど、この2つが大きな可能性と将来性を持つ技術であることが解ってきました。BLEとiBeaconに取り組んでいる人がたくさんいることも知りました。私もこれらの研究に本気で挑戦することを決意しました。これからは本気モードでやっていくので、当然iBeacon対応アプリも必ず作ります。iOSアプリ開発の再勉強を始めたのは、この決意を固めたからです。iBeaconの開発機材一式を揃えないと何も始められないので、できるだけ早くこの環境を構築するつものです。Macは手持ちの物を使うとして、まずはiBeaconに対応したiOSデバイスを入手しなければなりません。touch第五世代の中古品を買うつもりです。私がいま使っている携帯電話はウィルコムのPHSガラケーですが、今年の10月からPHS携帯電話のMNPが始まります。5s/5cが一括ゼロ円で買えます。5sを入手しようと目論んでいます。BLEモジュール側の開発環境もできるだけ早く揃えます。SoCチップの評価ボードを数種類購入しようと計画を立てています。BLEとiBeaconの研究開発活動は記事としてどんどん公開していきますので、これからご期待ください。本業の仕事の関係で半年程遠ざかっていましたが、最近になって、またiOSアプリ開発へのモチベーションが復活してきました。2の配布が始まっています。このメジャーバージョンアッブによって、iOSはさらに大きく進化するようです。このまま手をこまねいていると、どんどん置いていかれて恐竜状態になりそうです。年齢的にはもはや恐竜並みのオールドタイマープログラマですが、恐竜のように絶滅したくはないです。私のいまのiOSブログラミングのレベルは、低機能なアプリはそこそこ簡単に書けるが、本格的なアプリを作ろうと思うと、まったく歯が立たないという状態です。』だけで、他の本は、実際にアプリを書いているときに役立ちそうな箇所を拾い読みしたりして使っている程度です。プログラマ歴が長いので、経験や勘でカバーできる部分も多少ありますが、モバイル開発はPC(WindowsやLinux)や組込み開発とは別世界なので、iOSブログラミングについてはビギナーレベルに少し毛が生えた程度だと考えるのが適切な自己評価というものでしょう。いまの中途半端なレベルから脱して、本格的なアプリをどんどん書けるシニアレベルに早く到達しないとダメだなぁと感じています。そこで、初心に帰って、iOSアプリ開発の勉強を一からやり直す決心をしました。同じことを繰り返したくないので、どういう方針でiOSアプリ開発の再勉強に取り組むべきか色々と考えたのですが、やはり基本に立ち返って、iOSアプリのブログラミング言語であるObjective-Cをしっかりと習得しておかないと、ビギナーレベルから脱することはできないんじゃないかと思いました。C++はC言語の知識をベースにして特別な勉強なしで自然に習得することができましたが、Objective-Cは微妙な違和感があって、iOSアプリのコードを書いていてもスーと落ちてくるような感じがなかなかしないです。Objective-Cの言語仕様はSmalltalkの影響を強く受けており、C++よりオブジェクト指向が徹底しているからではないでしょうか。C++なら中途半端なオブジェクト指向設計でもプログラムを書くことができますが、Objective-Cではそれができないような感じがします。一応ちゃんと理解しているつもりですが、オブジェクト指向について深いレベルで理解し直すことにもなるので、Objective-Cから再勉強するのは意味があることではないかと思えます。それともう一つ、Objective-CはOSとの連携性がすごく高いプログラミング言語だという感じがします。XとiOSのフレームワークを構成する基礎的なクラス群は「NS」という文字で始まる名前がつけられています。XとiOSがNEXTSTEPをベースとして生み出されたOSだからです。この2つのOSのフレームワークもObjective-Cで書かれています。XとiOSのフレームワークの設計思想を理解することにも繋がります。遠回りだとしても、ブログラミング言語であるObjective-Cをもう一度一から勉強し直すことがベストな方法ではないかと思えてなりません。頭の中に実現したい機能が浮かんだときに、参考情報からスラスラとObjective-Cでプログラムコードが書けるレベルでないと、本格的にiOSアプリを開発していくことなど到底できないでしょう。ブログラミング言語の文法や書式は完全に頭の中に入っており、OS側のAPIリフアレンス情報やコードサンプルなどを参考にしながら、アプリの実装コードをどんどん書き進めていけなくてはシニアレベルのプログラマとは言えません。そこで、上記のような方針に合っていそうな本をAmazonで探し回りました。この2年でiOS開発関連の書籍はさらに数が増大しているようです。本当にすごい数の本が出版されていますが、今回はその中から以下の2つの書籍を選びました。45,784Amazon.co.jpで詳細を見るAmazonのカスタマーレビューでの評価が高く、どちらもObjective-Cにフォーカスした内容で豊富なサンプルコードが掲載されているようです。2.0』の方はKindle版を購入しました。どちらもKindle版が欲しかったのですが、前者の電子書籍版はまだ発売されていないようです(本記事を書いた後で確認したら、Amazonの『iPhoneアプリ開発のコツとツボ35』の商品ページにKindle版が登録されていました。7に対応した改訂版になっているようです。私がこの本を注文購入したのは06/17ですが、そのときはまだKindle版は登録されていなかったか、あるいは見落としてしまったのかもしれません。Kindle版も買うべきか悩んでいますが、一度完読して内容の有益度を確認してから決めようと思っています)。後者は洋書ですが、この本の翻訳版和書も出版されています。2.0』は和書と洋書のどちらを選ぼうかちょっと迷いましたが、Kindle版は洋書の方が安く、こういう技術書の英語なら辞書なしでも意味を理解しながら読めるので、洋書の方を買いました。「とにかく、どんどんコードを書く」これが一番の大切な事だということを忘れずに、iOSアプリ開発の再勉強をやっていきます。書くObjective-Cコードの量が増えれば、iOSに関する技術知識やプログラミング能力は自然に身についていくんじゃないかと想像しています。私は組込み分野でのプログラマ歴が長いですが、自分の経験からも「書いたブログラムコード量と技術習得速度は比例する」という法則は成り立っています。分野を問わず、多くのプログラマがこの法則に賛同するはずです。あと必要なのは、実際に本格的なアプリを書き始めてからの「このブログラムをどうしても完成させたい」という熱意でしょう。iOSアプリ開発で取り組みたい研究分野も探していましたが、じつは、最近「これならイケるんじゃじゃないか」という分野をやっと見つけました。その辺については後日別の記事に書こうと思っています。横浜で仕事を始めてから1ヶ月半が経ちました。04/09からこちらに来ていますが、いまは長者町という所に滞在しています。常駐勤務をしている会社は横浜駅の近くなので、最寄り駅の伊勢佐木長者町(横浜市営地下鉄)から毎日通勤しています。ちなみに、平日は毎朝6時頃に起床して、7:30/8:00〜16:30/17:00(ときどき1時間程度の自主的残業)の勤務パターンで働いています。私はずっと朝方労働を続けているので、早出出勤も労働時間として認めてもらえてすごく助かっています。都会のIT企業には珍しく、常駐先の会社は朝方の社員が多く、私と同じ勤務パターンで働いている人も数人います(最近は都会でも朝方で働く人がだんだんと増えていて、夕方から大学やビジネススクールなどの学校で勉強したりしている人もいます。残業だけでなく早出出勤も労働時間として認め、大手企業でも社員の勤務パターンの自由度を高くしてやるべきです)。いまの滞在場所の長者町は関内や伊勢佐木町にも近く、伊勢佐木モールという繁華街が近くにあります。この辺りは横浜で一番ホテルが集まっているエリアでもあり、毎日たくさんの観光客(そのほとんどは中国人ですが)を見かけます。夜も賑やかな場所で、夜中でも人通りが途絶えることはありません。観光地としての横浜エリアの魅力は名所が狭い範囲に集まっていることでしょう。中華街、みなとみらい21、山手などの名所がいずれも電車やバスで10〜15分圏内にあり、徒歩や自転車でアクセスすることもできます。駆け足なら、これらの名所をすべて一日で廻ることも可能です。休日には観光客に加えて東京在住の人もたくさん横浜を訪れます。横浜に滞在していると、休日の度にこれらの名所を巡ってゆったりと一日を過ごすことができます。私もぜひそうしようと思っていたのですが、いままでは副業の仕事が忙しくてなかなかそれがきませんでした。先週末にやっと副業の仕事が終わり、本業の仕事もそれほど忙しくないので、これから休日に近隣の名所を巡ってみようと思っています。滞在場所は横浜スタジアムにも近いので、そのうちプロ野球観戦もしてみたいです。横浜の名所に行ったら、ブログ記事で紹介するつもりです。話は変わりますが、前の記事に最近スタートアップ系の本ばかり読んでいると書いたので、最近読了したスタートアップ系の書籍を3冊紹介します。82,935Amazon.co.jpで詳細を見る上はAmazonの印刷本商品へのリンクですが、私が読んだのはいずれもKindle電子書籍版です。意識してこういう本を選んでいるつもりはつもりはないのですが、AmazonのKindleストアで本を探していると、ついついスタートアップ関連の本ばかりに目を止めてしまいます。Facebookに絡んだ本ばかり読んでいました。いう本は結構数があって、読んでいる最中はそこそこ面白かったのですが、読了後に感じたのは大きな虚しさでした。シリコンバレーの先端IT企業は日本とはかけ離れた別世界だなんだなぁと思えてならなかったからです。その後、Kindleストアの月替りセールで『リーン・スタートアップ』(エリック・リース著)という本をたまたま見つけて、タイトルの目新しさに惹かれて読んでみました。読んだ後で知ったのですが、この本はスタートアップのバイブル本と呼ばれているそうです。私が「スタートアップ」という言葉を初めて知ったのはこの本を読んだときです。この本の中に書かれている米国のスタートアップ企業で用いられる製品開発手法が従来のベンチャー企業のそれと大きくかけ離れていることに驚いてしまいました。Product)」という手法はとても斬新でした。製品の機能や完成度にこだわる日本の「モノづくり」とは正反対のやり方です。米国のスタートアップ企業の多くはWebサービスやモバイルアプリなどの製品を開発しており、ハード中心の日本の「モノづくり」と比較するのは危険なことは承知しています。IT分野の規模や繁栄度を比較すると、米国では拡大と興隆が続いているのに日本は停滞あるいは衰退の方向に向かっています。上で紹介した『Yコンビネーター』という本には「ソフトウェアが世界を食う」というタイトルの章があります。現在のIT分野を牽引しているのはハードではなくソフトです。Web関連で使われる技術の進化は日進月歩で、1〜2年程度の短期間で先端技術が様変わりすることさえあります。製造業がほぼ消え去った米国のIT分野が益々繁栄し、ハード中心の日本は衰退へ向かっていることを考えても、これから起業を目指す人がどちらを選ぶべきなのかは議論の余地はないように思えます。スタートアップ系の本を読んでいると驚くことがもう一つあります。それは、『リーン・スタートアップ』や『Yコンビネーター』などに登場する米国のスタートアップ企業の多くは、会社を存続させることではなく、会社を売却することを目指していることです。「イグジット戦略」と呼ばれており、「IPO(株式公開)」と「M&A(会社売却)」の2つの方法があります。現在の米国のベンチャー市場では、M&Aによるイグジット件数が圧倒的に多く、その割合は9割以上となっています。自社で開発した製品を会社ごと大手IT企業に高い評価額で売ることが、米国のスタートアップ企業のゴール目標なのです。5年以内に会社を売却できなければ、スタートアップとしては失敗だということです。日本では10年存続する会社はわずか5%だそうです。会社を存続させるよりも、できるだけ早く売却して、会社へ投資した費用の回収を目指す方が合理的だと言えます。IT分野の進化は益々加速しているので、5年も同じ製品の開発を続けているような会社の将来性には希望が持てません。5年以上会社を続けるくらいなら、むしろ一旦その会社を解散して、新しい分野の製品開発に取り組む新会社を設立した方が良いんじゃないでしょうか。これくらいのスピード感で会社を経営しなければ、Webサービスやモバイルアプリなどの先端分野で生き残っていくのは難しいのかもしれません。Combinatorというのは米国シリコンバレーに在るスタートアップ専門ファウンダー兼ファーム(スタートアップ企業養成所)です。Combinatorのやり方です。Combinator出身でもっとも成功した企業です。Combinatorの2011年夏学期に参加したスタートアップ企業創業者の面接から卒業までの動向を密着取材したドキュメンタリーです。LAなど、米国では2010年頃から主要都市にこういうスタートアップ企業を支援するファインダーやファームがたくさん作られています。Labのように日本でもスタートアップを支援するファウンダーや施設が出現していますが、その数はまだ両手で数えられる程度しかありません。スタートアップ企業を取り巻く環境でも日米の間は悲しいほどの差が開いています。日本では大手企業への就職や公務員になることを目指す保守的な若者が多いですが、そんな流れに逆らって、あえてリスクを取ろうとする若者も少しずつ増えているようです。大手企業に就職できても安定した人生などおくれないことに若者達も気づいているからです。いう若者は外資系企業への就職を目指すケースが多いようですが、学生のうちから積極的にネットワークを築いて、スタートアップの起業を目標にする者も出てきています。外資系企業に就職して3〜5年ビジネススキルを磨きながらコネクションを築き、それからスタートアップを設立するケースも多いようです。上の『ぼくらの新・国富論』の著者はこのようなコースを歩んで起業したアントレプレナーで、この本では同様のコースを歩んでスタートアップを立ち上げた人が何人も紹介されています(私の周りでも、独立起業したのは外資系企業で働いた経験を持っている人ばかりです。将来必ず起業しようと考えているなら、実力主義の外資系企業に就職した方が圧倒的に有利です)。大手企業の社員や公務員になれても、結局小さなマイホームかマイルーム(マンションの部屋)を手に入れる程度のゴールしか得られません。何かとこのゴールに到達できても、その後は住宅ローンや子供の教育費の支払いに苦しむ人生が待っています。頭の働く若者なら、こんな人生プランが明るいものだと思えないのは当然かもしれません。日本企業や公務員の生涯サラリーでは、運用に回せる不動産などの資産を入手することはほとんど不可能です。なけなしの貯蓄を元手に運用を試みても、余程の幸運に恵まれないかぎり大きく資産を増やすことは難しいでしょう。結局リスクを取らない人生プランでは、人並みの資産(マイホームやマイルーム)しか手に入れることはできません。野心を持った若者が外資系企業への就職を目指したり、スタートアップ設立に賭けるのは必然な流れのように思えます。日本国内のスタートアップを取り巻く環境まだまだ十分に整備されているとは言えない状況ですが、ググると、スタートアップの関連情報が相当数ヒットします。スタートアップに注目している人や企業が増えているのは間違いありません。いう言う私もその一人ですが、米国と同じやり方をしても日本でスタートアップが成功するとは思えません。米国と日本ではIT産業を取り巻く環境に大きな違いがあるからです(日本での事業展開を諦めて、シリコンバレーへ拠点を移すスタートアップ企業も出てきていようです)。日本はブルーカラー労働者が大勢を占めている国なのに対して、米国はホワイトカラー労働者が社会カーストの上位層を独占している国です。日本で「モノづくり」という言葉が持てはやされるのも、これがブルーカラーにとって心地良い響きの言葉だからです。最近は「ITなんて虚業だ」などという人はさすがにいなくなりましたが、日本のブルーカラーの中にはホワイトカラーに対する差別意識を持っている人がいまだたくさんいます。額に汗して働くブルーカラーは「頭脳労働のホワイトカラーは自分達とは違う人種なんだ」という考えが前面に出てしまう傾向が強く、特に地方ではこの傾向が根強く残っています。日本の電機・家電メーカーの改革がなかなか進まないのも社内のブルーカラーの抵抗が大きいことも理由の一つではないでしょうか。人は長年続けてきた働き方や労働観念をそんなに簡単に変えられるものではありません。スタートアップの事業内容はいずれもWebサービスやネットビジネスが中心でホワイトカラーの最先端なので、日本ではスタートアップが広く社会に認知されることはこれからもないでしょう。国や地方公共団体がスタートアップ支援に本腰を入れることもありえない話だと思います。米国のスタートアップ・ムーブメントの資金源となっているのはすべて民間のベンチャー・キャピタルや個人のエンジェル投資家達です。若者を中心に日本でもスタートアップ・ブームが起きているようですが、それは東京限定の話であり、一般人は「一部の若者が楽して金儲けができる」と騒いているだけだと観ているのが実情だと思います。Twitterのように米国ではスタートアップから短期間で成長し、世界に大きな影響を及ぼしているIT企業がいくつも現れています。米国のスタートアップ・ムーブメントは多くの雇用を生み出しながら、国家繁栄の原動力にさえなっています。これに対して、日本では国民の大多数がブルーカラー労働者である方が体制側にとって都合が良いので、ホワイトカラーの先導者は異端扱いされます。日本人は「楽して金儲けをする奴ら」が大嫌いなのです。合法であっても、極端な動きをする企業へは国家権力機関から警告が出されることさえあります(ライブドア事件がその最たる例です)。ITが持てはやされても、ホワイトカラー労働者は自分達が社会的に異端者と見られていることを忘れるべきではないと思っています。ここのところスタートアップ系の本ばかり読んできましたが、それもこの辺りで一区切りするつもりです。SOHOと違ってスタートアップは一人で始めることはできません。どんなに小さな製品を開発するにしても、最低1人は(できたら2〜3人程度の)協力者が必要です。本を読んで得られる情報には限りがあります。コネクションを拡げないと何も始めることはできません。スタートアップ企業の経営者から話を聞ける機会でもあればぜひ参加してみたいのですが、東京に近い横浜に滞在しているので、そういう機会も探せば見つかるのではないかと思っています。まとまりのない散漫な内容の記事になってしまい、自分でもちょっと呆れています。それに、ぜんぜん本の紹介になっていませんね。私は書評を書くのが苦手みたいです。本記事で紹介した本について詳しく知りたいと思った方は、Amazonのカスタマーレビューを参考にすることをお勧めします。いままではブログ記事を書きながら上手く考えをまとめることができたのですが、今回はぜんぜんそれができませんでした。いまは大体月5冊程度のペースでKindleストアで本を買って読んでいます。ほんとんどIT関連のビジネス書です。本を読みたいのですが、経済的な事情もあり、いまはこれが精一杯です。これに懲りずに、また本の紹介記事を書くかもしれません。行動や写真掲載が不要なので、ネタ切れ時の定番記事になりそうです。2014に参加してきた前の記事から一ヶ月空いてしまいましたが、本業の仕事の関係で、じつは、またしばらく信州を離れることになりまりした。いまは横浜に滞在しています。守秘義務があるので、本業の仕事について公開することはできませんが、近いうちに近況報告的な記事を書くつもりでいます。2014(TCD2014)というイベントに参加してきました。仙台の新興ベンチャー企業トライポッドワークス株式会社の自社製品の紹介や事業計画などをパートナー企業向けに発表するプライベートイベントです。ITイベントに参加したのは久しぶりが、ESECやETなどの一般者向けのイベントとは異なり、こういうイベントに集まるのは主催企業の関係者や報道関係ばかりです。2013(TSD2013)」にも参加しました(2013/04/24の記事)。TCD2014のプログラム開始時刻は13:30でしたが、仕事の都合でどうしても早く行くことができず、16時に横浜を発ち、開催場所の秋葉原UDXギャラリーに着いたのは17時頃になってしまいました。結局最後のプログラムの『IT系メディアの編集長たちが語る、ITトレンドの今とこれから』というパネルディスカッションだけしか参加できませんでしたが、プログラム進行が遅れていたようで、丁度このパネルディスカッションの開始時に会場に入ることができたのはラッキーでした。去年のTSD2013でも刺激を受けて、参加して良かったなぁと思ったものですが、今年もいくつか得るものがあり、またしても色々と考えさせられました。パネルディスカッションの参加者が述べた以下の2つの意見が強く印象に残りました。新製品の発表だけで膨大なページビュー数を稼げるのは、もはやApple社の製品くらいしかない。「このソフトウェア(やサービス)を使うと、従来の同種の物より1万倍の効果がある」というような具体的な利用対効果の数値が示されていないと、製品発表ニュースのページビュー数は大きく伸びない。「1万倍」なんて誇張しすぎの数値に聞こえるかもしれないが、(多少の誇張はあっても)大きな注目を集めるにはこれ位の数値は必要だし、革新的な製品なら本当にこういうレベルの利用対効果を生み出すことはある。日本のメーカーにはまだまだ優秀な技術者は残っている。ユーザーの利用形態を根本的に変えるような「プラットホーム・チェンジ」型の製品やサービスを作ることができれば、日本の企業が躍進できるチャンスはあるんじゃないか。いう製品やサービスは「ビジネスモデル」優先の企画や開発をやらないと生み出すことはできないと思う。1の意見について「なるほどなぁ」と思ったのは、ソフトウェアやサービスの利用対効果を具体的な数値で示さないと製品情報の価値は低くなるという点です。他社の同種の製品と比較して優れている点だけ羅列することが多いですが、そんなことはどの製品でもやっています。ユーザーが本当に知りたいのは、その製品を使ったときの具体的な利点です。いう数値を計測するには、ベータ版やプロトタイプレベルの製品をリリースして、できるかぎり多くのユーザーから利用情報を収集するしか方法はありません。利用対効果の数値をちゃんと計測することは、その製品を正式リリースしたときにどれ位売れそうかという予測にも役立ちます。利用対効果の数値を計測せずに、いきなり製品を正式リリースすることはバクチと同等の行為だと考えるべきです。他の製品を圧倒するような革新的な機能でも持っていないかぎり、その製品が売れる保証などどこにもありません。言えば、たとえ革新的な機能を持っていたとしても、ユーザーがその機能を使いこなせるのかという問題もあります。どんなに優れた機能であっても、多くのユーザーが使ってくれなければ何の意味がありません。多大な時間を使って作り上げた機能なのに、それを使ってくれるユーザーはほとんどいなかった。ベンチャー企業の製品が失敗するパターンの中で、じつは、これが一番多いケースらしいです。これは、ソフトウェアやサービスだけでなくハード製品でも良く起きるケースです。他社より優れた機能を持っていたのに市場から消えていった製品はごまんとあります。優れた機能を実現することよりも、いかにユーザー・フレンドリーな製品を作るかが最優先事項なんだと肝に銘じて、エンジニアは日々の仕事をすべきだと思っています。元気なベンチャー企業の生の声が聞けるイベントに参加すると、大きな収穫が得られることが多いです。今後はこういうイベントを選んで参加していこうと強く思いました。Paperwhiteを入手して以来、すき間時間の多くを読書に使っていますが、最近は「スタートアップ」系の本ばかり読んでいます。一般人には「スタートアップ」より「ベンチャー」という用語の方が馴染みがあるでしょうが、Googleトレンドで調べると、最近は「ベンチャー」より「スタートアップ」というキーワードの方が検索件数は3倍位多くなっています。アメリカでは、スタートアップ企業のほぼすべてがWebやクラウドサービス系製品の開発を出発点にしています。日本でも同様の状況ですが、、最近になって、デバイス(ハード)製品の開発を目指すスタートアップ企業も出現してきているようです。既存の製品とはかなり毛色の異なるモバイル機器と連携するガジェットやウェアラブルデバイスなどです。スタートアップ企業に共通点があるとすれば、いずれもニッチ性の極めて高い製品やサービスで挑戦を始めていると点と、とにかく早く製品を市場に出すことを目指している点でしょう。市場をできるだけ限定化して、超短期間で開発した製品をさっさとリリースする。早期に利益を確保するために、最適な手段とコースを選択している訳です。これがスタートアップ企業の共通戦略です。ベンチャー企業の経営者から「最初の1〜2年はまったく製品が売れず、とにかく耐え忍んだ」なんて苦労話が出ることが良くありますが、スタートアップ企業にとってはこんな話は無縁の世界です。最初の1〜2年できるだけ大きな利益を確保して3〜5年以内に会社を売るというのが、アメリカのスタートアップ企業の標準コースになっています。会社を売って得た資金を元手にして、さらに新しいスタートアップを始める。このサイクルを3回も繰り返せば、サラリーマンの生涯賃金をはるかに超える資産が得られ、残りの人生は働く必要がなくなる。アメリカでは、30代のうちにここまで到達してしまう人がどんどん現れています。「どうやってスタートアップを始めるか」最近はこればかり考えていて、ググっているうちに、日本国内のスタートアップ企業とその製品情報を目にすると、憧れの気持ちが沸き上がってきます。私は東京ビッグサイトや幕張メッセなどで開催される大きなITイベントに行く気力はもう無くしました。(年寄り臭いですが)歳をとって、混雑するイベントへ行くのが億劫になってしまったいうのもありますが、こういうイベントを見学しても、結局残るのは疲労感だけで、実になりそうな物を得られることはまずないと悟ったからです。ESECやETみたいなITイベントへ行くなら、参加するのはカンファレンスやセミナーだけにすべきで、展示会場を観て回っても収穫はほとんどないと思っています。各展示ブースに提示されている製品情報などはWebページで得られる情報と大差ありません。それに、展示会場を一周回っだけで、私は必ず「もう、これでいいやー。疲れたので出よう」という気分になります。同じような経験を持っている人は多いんじゃないでしょうか。大きなITイベントは一種のお祭りだと思いますが、祭りを本当に楽しめるのは見学者ではなく展示者側の立場の方です。展示企業にとって、こういうイベントは既存製品や新製品を大々的にアピールできる絶好機会です。私も一度だけ知人の会社を手伝うために3日間展示者としてESECに参加したことがあります。そのときはものすごく疲れましたが、閉会時にはそれなりの充実感を味わえました。いうイベントで展示者として多くのブース来場者(そのほとんどは初対面の人)と話すは、なかなか味わえない貴重な体験でした。イベントの閉会後に主催者から集計来場者数8万人とか発表されますが、結局一人の見学者は8万分の1の存在でしかありません。天邪鬼な意見ですが、一般者としてITイベントへ参加する価値は来場者数の多さに反比例すると思っています。Summitのような来場者数千人程度のイベントが、一般参加者が充実感を味わえる限界じゃないでしょうか。この規模のイベントなら、自然に参加者同士が集まってグループができ交流が生まれる余地はまだありますが、来場者が一万人を超えてしまうと、特定のグループ内でしっかりと連絡を取り合って、あらかじめ会合の予定などを決めておかないと参加者同士が交流を図るのは困難です。