Raspberry Pi 日記

長嶋 洋一


2013年6月6日(木)

例年より10日も早く「梅雨入り」宣言したものの、このところパッタリと雨が降らず、この週末の時間学会(山口)も、傘ナシで行けそうで何よりである。 月初の木曜日には教授会や委員会も無いが、1限に「音楽情報科学」のグループ「しゃみーず」のアポがあり、また3限にはゼミの拡大勉強会「電子回路講座」が予定されていて、時間的にはコマ切れである。 こういう日には小ネタを進めるに限る。(^_^;)

Raspberry Piでは、Pythonというスクリプト言語が、一種の売りとなっているらしい。 さっそくパソコンに「ぱ」でPythonを単語登録した。 ちなみに僕のパソコンで単語登録されているものは何かな、と思って「ことえりユーザ辞書」をエクスポートしてみたら、以下のようなものであった。 よく使う、一発で出にくいものを登録しているようである。 あまりパソコンを使い倒しているとは言えないなぁ。(^_^;)

"あ","Arduino","普通名詞"
"あ","AKI-H8","普通名詞"
"え","エンタテインメント","普通名詞"
"き","筋電","普通名詞"
"じぐ","治具","普通名詞"
"げ","Gainer","普通名詞"
"じ","XBee","普通名詞"
"いじ","以上、よろしくお願いいたします。","普通名詞"
"おんじ","音楽情報科学研究会","普通名詞"
"す","SUAC","普通名詞"
"す","SuperCollider","普通名詞"
"な","nagasm@suac.ac.jp","普通名詞"
"に","(^_^;)","普通名詞"
"ば","\","普通名詞"
"ぱ","Python","普通名詞"
"ぶ","BrightEyes","普通名詞"
"ぶ","Blink(1)","普通名詞"
"ぷ","Processing","普通名詞"
"ぷ","Propeller","普通名詞"
"ま","マルチメディア","普通名詞"
"め","メディア造形学科","普通名詞"
"ら","Raspberry Pi","普通名詞"
"こん","Computer Music","普通名詞"
そしてPythonであるが、Yahoo.comで調べると、なんだか以下のように多数のヘビの画像が並んでいるが(^_^;)、 このページ がWikipediaでの解説、 このページ が公式ページである。 今日は、このPythonを調べてみよう。

Wikipediaによると、なんとPythonは1980年代後半には提案されていたようである。 その言語としてのポリシーは以下のように、「美しくありたい」「暗黙でなく明示的に」「シンプルに」「複雑でなく高度な構造を作る」「可読性」であるという。 まぁ、このような理想は他の言語/処理系でもよく見かけるが(^_^;)、理想は重要である。

現在のPythonは2008年から登場したPython3.0のバージョンらしい。 ちゃんとした言語処理系で、膨大な「Syntax and semantics」の解説に閉口したが、こういうのは飛ばしてもいいのである。 ライブラリもかなり充実していて、サードパーティの「パッケージ」も、以下のような広範な領域で25000種類も出ているという。 これはつまり、Processingなどと同じように、速度を別にすれば、Pythonだけで何でも出来る、ということだろうか。 Pythonの開発環境としては、まずはshellのようにコマンドラインのインタプリタとして走る。 Perlみたいなものかな。 さらにRaspberry Piのデスクトップにもあった「IDLE」とか、他に「IPython」というグラフィカルなツールがあり、もっと本格的な「Python IDEs」がいくつもあるらしい。 そして「Implementations」のところを見ると、Pythonはバイトコードを経て多くのコンピュータにもインプリされているようで、 公式ページ の「ダウンロード」を見たら、Macというのもあった。 さっそくこれはゲットして実験してみなければ。

そして Wikipedia の「Use」のところを見ると、なんとPythonの使用例として こんなページ があり、「IDE」だけで17種類、「Applications」は数知れず(^_^;)、「Web applications」だけで11種類、「Video games」だけで11種類、「Web frameworks」だけで11種類、「Graphics frameworks」だけで5種類、「GUI frameworks」だけで4種類、「Scientific packages」だけで7種類、「Mathematical libraries」だけで4種類、・・・と続き、特筆すべきは「Embedded as a scripting language」もまた数知れず(^_^;)、多数が提供されているのであった。 そして、この「Use」の最後のところに、「The Raspberry Pi single-board computer project has adopted Python as its principal user programming language.」として、遂にRaspberry Piという名前が登場した。 歴史的に新しいものの特権である「良いとこ取り」の原則に従って、C(Arduino)でもJava(Processing)でもなく、Raspberry Piでは推奨プログラミング言語がPythonなのだ。

こんな巨大なコミュニティだとは全く知らなかったが、これは勉強するのに、相手にとって不足は無い(^_^)。 あまりに膨大な Wikipedia の記述に圧倒されたが、こうなれば、Raspberry PiのPythonに入る前に、以下の本丸の Python公式ページ をチェックしないと始まらないだろう。

この手の新しい環境に取り組む時はいつも、とりあえずダウンロードしてインストールして、とりあえず走らせながらチュートリアルを読みつつ試して、馴れる、という事である。 その通りに Pythonダウンロードページ から、最新の「Python 3.3.2 Mac OS X 64-bit/32-bit x86-64/i386 Installer (for Mac OS X 10.6 and later)」をダウンロードして(18MB)、インストールすると80MBほどになった。 アプリケーションとして登録されたフォルダにあるのは以下の4つだが、「Python Documentation.html」というエイリアスをブラウザで開くと、ヘルプとかチュートリアルなどのドキュメント類もオフラインで使えるようにインストールされているようだ(オンライン版は ここ である)。

上の「Python Documentation」の中で、「Library Reference」と「Language Reference」は、後で参照するものである。 「Tutorial」は、「start here」と書かれているように、良い子はここからスタートするのだが、いつものクセで、まずは Python Setup and Usage に行ってみた。 ここにある以下の中で、とりあえず必要なのは「4」だけである。

  1. Command line and environment
  2. Using Python on Unix platforms
  3. Using Python on Windows
  4. Using Python on a Macintosh
  5. Additional Tools and Scripts
その「Using Python on a Macintosh」の冒頭を見ると、「Mac OS X 10.8 comes with Python 2.7 pre-installed by Apple.」などと書いてある。 Appleが標準で搭載するほどPythonは普遍的なのだった。 要するに、Pythonプログラムを作って実行するには「IDLE」を使え、ということらしいので、まずはIDLEを起動した。 そして、せっかくなので同じ机の上にあるRaspberry Piも起動して、VNCウインドウからRaspberry Piのデスクトップにあった「IDLE 3」も軌道した。 以下のように、Macの2画面に、Mac自身のIDLEと、VNCウインドウ内のRaspberry PiのIDLEとが同じように開いたわけで、ここからチュートリアルを追いかける際には、両方に同じPythonプログラムを走らせてみることで、コンパチビリティの確認までやってみよう(^_^;)、という事である。

・・・と、ここで「しゃみーず」と新しい三味線改造のミーティングをして、その後、3限に予定されていたゼミの電子回路講座ミーティングがメンバーの体調不良によってパス(延期)となったため、三味線改造の裏方作業を棚に上げれば(^_^;)、午後マルマル、Python探検に入るところだった。 しかし、なかなかそう快調に行かないところがまた、Raspberry Piなど先端領域の面白いところである。 ここから丸3時間以上、あれこれと苦闘することになった(^_^;)。 そして上記とほとんど変わらない以下の画面が、その最終状況である。

この経緯の状況を説明する。 なんせこの部分は、とりあえずは解決(折り合いをつけた)ものの、本質的には困ったままなので、ふーみん師匠に質問のメイルをする、という状況説明なのである(^_^;)。 まず、午前中の経過で、 これこれ という2画面で、MacでもRaspberry Piでも、同じPython開発環境のIDLE3が美しく開いた。 ここまでは本当に快調であった。 しかしよく見てみると、 この Raspberry Piのデスクトップに開いたIDLEの起動メッセージは以下のように、スッキリとしたものである。

Python 3.2.3 (default, Mar  1 2013, 11:53:50) 
[GCC 4.6.3] on linux2
Type "copyright", "credits" or "license()" for more information.
>>>
ところがこれに対して、Macで起動したIDLEの起動メッセージは以下のように、何か余計なことが書いてある(^_^;)。 結局、この余計なことをあれこれトコトン、調べる羽目となったのである。 余計に加わっていた情報とは、「このMacPythonで使っているTcl/Tk (8.5.7)は安定していないので、何か良くないことが起きてもゴメンね(^_^;)」ということであり、後に、藁をも掴む気持ちでその下のリンクに行くとは、まさか思ってもみなかった。
Python 3.3.2 (v3.3.2:d047928ae3f6, May 13 2013, 13:52:24) 
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "copyright", "credits" or "license()" for more information.
>>> WARNING: The version of Tcl/Tk (8.5.7) in use may be unstable.
Visit http://www.python.org/download/mac/tcltk/ for current information.
>>> 
ここで、快調に起動したMacPythonのIDLEについて、設定メニューからあれこれする、というのはよくあることである。 MacとRaspberry Piで持っているフォントが違うので、それぞれ見やすくフォントサイズを上げたりフォントを選んだりした。 そして、以下のようなメニュー(これはMacBook Airの画面)があったので、最初に起動した時の画面のpreferencの設定で、defaultでは「Open Shell Windows」となっていたので、試しに左の「Open Edit Windows」というのに変えてみたのである。 するとなんと、試しに起動しようとしたこの「IDLE.app」が、まったくホストMacで起動しなくなったのである(^_^;)。

まったくの無反応ということでなく、チラッと起動しかけて起動しない、という挙動であった。 これは過去の経験から、「何かが壊れた」(^_^;)、と確信した。 問題はMacということはUnixなので、その何かがどこにあるのか、捜すのが至難の業である、という事なのだ。 ここからまずやった事は、とりあえずインストールした「Python」をアンインストールして、再びインストールしてみる、という事である。 Webであちこち探しまわり、ようやくそれっぽい記述(ただしPythonのバージョンは3でなく2)を発見して、該当しそうなフォルダとファイル(多くが不可視ファイルであり、いちいち管理者権限が必要)を削除して、改めてダウンロードモジュールを解凍・インストール、というのを繰り返したが、現象はまったく変わらなかった。

そして、あれこれ消しているうちに判明したのは、Macではシステム領域にPythonの古いバージョンがPerlなどと同様に標準で入っていることで、それまで強制的に消してしまったとすると、今後、関係ないところで災いが起きる可能性が出て来た(^_^;)。 こうなればチャンスは一度しかないが、メインMacと同じバージョン(10.6.8)で止めている、出張/講演/公演用のMacBook Airである。 こちらに新たにMacPythonをインストールして、上記のような環境設定をしないで(^_^;)、その正しい環境から壊れていない正しいものをいただく、という作戦である。

Unix内でシステムファイルのシンボリックリンクを作ってシステム領域に置く、などというのは、Indyでやったのは20年ちかく昔のことで忘却したので、エイリアスでなくて参照される実体をそのままコピーして置いたりして、なんとか「ほぼ同等」にした。 さらに、インストールしたアプリのコンテンツ参照メニューから、ターミナルで実行するPythonを確定させて、なんとか ここの右下 のように、IDLEウインドウは開かないものの、ターミナルとしてはPythonを実験できるところまで、戻した。

これはたぶん、Python回りというよりも、Mac OSXのどこかに散在する、「Tcl/Tk 」関係のpreferenceファイルがヘンに壊れて上書きされてしまったのでは、というのが現状の見立てである。 まぁ、大多数のLinuxやWindowsのユーザと違って、わざわざMacPythonを使う、というユーザも少ないのか、ネットで調べてもこのようなトラブルはあまり質問が出ていない。 だいたい、最初の起動画面で「WARNING: The version of Tcl/Tk (8.5.7) in use may be unstable.」と断っているので、悪いのはこちらである。 とりあえず、お仕事のMacBookAirにもPythonが入ってしまったので(^_^;)、明日の午後から山口に向かう新幹線とか、山口大学での時間学会の合間などには、これで遊べることとなった。 午前中にインストールして判明した、膨大なドキュメントが全てオフラインである、というのは重要である。

そういえば、Raspberry Piを800MHzクロックから1GHzにオーバークロックさせて、それを32枚スタックしてスーパーコンピュータを作った・・・という ニュース が流れてきたが、まぁこれは誰でも考えることで、もうあと一歩、何か欲しいような気がした。 でも、実際にこれをゴリゴリ作る、というのも大事である。 なんせ電源だけで「+5Vで30A」は欲しくなるのだ。 僕が実際に作った この作品 (メイキング) では、100個のステッピングモータを駆動するのに「+5Vで30A」というスイッチング電源を4-5個、並べたが、それはそれは大変だったのだ(^_^;)。


「Raspberry Pi日記」トップに戻る