MOSA Multi-OS Software Artists

MOSAはソフトウェア開発者を支援します

  • iPhone/iPod touch アプリ紹介
  • MOSA掲示板
  • 活動履歴
  • About MOSA(English)

MOSA Developer News[MOSADeN=モサ伝]第135号

2004-11-02

目次

  • “関西オープンソース2004”レポート(前編)村上幸雄★MOSA会員専用★
  • SqueakではじめるSmalltalk入門   第17回  鷲見 正人
  • 藤本裕之のプログラミング夜話 #56
  • 高橋真人の「プログラミング指南」  第55回
  • ニュース・解説
MOSA会員専用記事

“関西オープンソース2004”レポート(前編)

 ビッツ有限会社 村上幸雄

 開催場所:大阪産業創造館
 日  時:2004年10月22日(金)〜23日(土)
http://k-of.jp/

 こんにちは。この度は新居さんの紹介で、関西オープンソース2004のレポートを書くことになりました村上です。
 私はオープンメール環境(OME)という、MacOS Xで利用できる、オープンソースのメールソフトのコミュニティに参加しているのですが、このOMEが昨年に続き、今年も関西オープンソース2004に参加することになり、私もこのイベントに参加しました。

関西オープンソース2004は今年で3回目を迎えたイベントで、昨年までは関西オープンソース+フリーウェアという名称でした。また、今年は同時に関西コミュニティ大決戦とBSD Conference Japan 2004というイベントも開催されました。ただし、BSD Conference Japan 2004は23日のみの開催で、参加費が必要という事でしたので、会場の建物は共有していますが、まったくの別イベントということになります。

まず始めにあまりオープンソースについてご存じない方のことを考えまして、オープンソースについて、少し説明させていただきます。
 オープンソースに似た用語として、フリーソフトウェアという言葉がありますが、これはソフトウェアの利用・配布とソースコードの閲覧・修正・公開の自由が一定の条件で与えられているというもので、社会運動としての側面があります。また、ユーザーと開発者の距離が近い傾向があるのも特徴の一つです。これに対してオープンソースは、ソースコードが公開されているという点はフリーソフトウェアと同じですが、その他の点については必ずしも自由という訳ではありません。例えば、MySQLのように商用のオープンソースソフトウェアというのも存在します。
 このような違いから、フリーソフトウェアを支持する人々とオープンソースを支持する人々は必ずしも一致するという訳ではありません。

それでは、関西オープンソース2004についてレポートさせていただきます。ただし、関西オープンソース2004では複数の会場で複数のプログラムが同時に進行していた関係から、私が参加したプログラムのみの紹介となってしまうことをご了承ください。

基調講演

 基調講演は二本ありまして、一本目は産業技術総合研究所 主任研究員の田代秀一氏の「経済産業省のOSS支援」で、経済産業省が国内で取り組んでいるオープンソースソフトウェア(OSS)基盤整備事業やデスクトップ導入実験の紹介と、国際活動のアジアOSSシンポジウムや日中韓OSS推進フォーラムの説明、これに連動する形で設立された日本OSS推進フォーラムの説明です。
 私が田代氏の説明で印象に残ったことをあげてみますと、以下のとおりです。

 ・ヨーロッバでは単一のソフトウェアがインフラの大部分を占めているのは問題という認識があり、OSSの導入はこの問題への対応の一つ。

 ・日本では、サーバ側でのOSSの利用は進んでいるが、クライアント側のOSでは使用されていない。

 ・著作権をソフトウェアに適用してしまうと、例えば文章と異なりバイナリ形式のソフトウェアは内部を知ることが出来ないので、開発者の利益を守ることは出来るが、特許の場合と異なり、内部情報が公開されない為、技術発展に貢献することができない。

 基調講演の二本目は、京都市総合企画局情報化推進室情報政策課 情報企画担当課長の豊田博一氏の「京都市の高度情報化施策について」で、京都市のITへの取り組み「e-京都21」の説明です。
 国のITへの取り組みでは、具体的でない、かつ、実現が難しい目標を設定することがありますが、e-京都21では、地方自治体では財源が乏しいという事情もあって、実現可能な具体的な目標(年限、数値等)を設定し、毎年の見直しを行う為に、PDCAのマネジメント・サイクル(Plan→Do→Check→Action→Doに戻る)で運営していると説明されていました。

講演「社会運動としてのソフトウェア改革–開発と利用、その自由」

 講演者の自由ソフトウェア活動家 g新部裕氏は、フリーソフトウェアの世界では著名な方のようですが、残念ながら私は知りませんでした。その為、前知識なしで講演を聴かせていただいたのですが、聴いてみて驚きました。大変面白い内容です。実際、公演中は会場から賛同の声や、笑い声、意見が飛び交っていました。
 講演の内容は多種多様で、短くまとめるのは難しいので、私が面白いと感じたことをあげさせていただきます。
 g新部氏は、五体投地巡礼と莫高窟というプロジェクトを考えられています。五体投地巡礼は、プログラマは忙しいといってドキュメントを書かない場合が多いですが、しっかりとBlogは書いていることがあります。このような現実から、Blogのようにプログラマがソースコードに対してコメントをつけることができ、かつ、検索・閲覧できるシステムを構築するという内容です。
 莫高窟は、ソースコードの改変を全て記録するいうことと、写Codeという写経と同様に過去の優れたソースコードを書き写すといった内容です。特に写Codeについては反響が多く、会場から「声に出して読みたいCode」という提案もありました。

(後編に続く)

執筆者プロフィール

村上幸雄(有限会社ビッツ)
埼玉県朝霞市でソフトハウスを営んでいます。Mac OS XからUnix、Windows、状況によっては組み込みシステムの受託開発を主な業務としています。

SqueakではじめるSmalltalk入門   第17回  鷲見 正人

 本連載では、名前は知っていてもなかなか触れる機会のないSmalltalkについて、最近話題のSqueakシステムを使って紹介しています。前回は、a BankAccountのインスタンス変数balanceへの外部からのアクセス手段、#balance、#balance:を定義しました。引き続き、出納機能を追加してゆきます。

クラスBankAccountに属するインスタンス(a BankAccount)は、たとえば「deposit: 100」というメッセージを受けて、インスタンス変数balanceに、パラメータである100を加算する挙動を示すことが期待されます。depositは預金という意味です。これを素直に書き下ろすと、メソッド定義は次のようになります。

deposit: aNumber
balance _ balance + aNumber

 また、前回定義したアクセッサ、#balance、#balance:を使って、このように表現することも可能です。

deposit: aNumber
self balance: self balance + aNumber

 念のため。このメソッド本体の式(二行目)で、二項メッセージ「+ aNumber」は、単項メッセージ「balance」の送信の結果(返値の数値)に対して送信されます。また、二項メッセージ「+ aNumber」は、キーワードメッセージ「balance: …」より優先されるので、この式は、

self balance: ((self balance) + aNumber)

のように解釈されることは、もう大丈夫ですね。

 話を戻しましょう。この2つの書き方、つまりアクセッサを“使わない”(前者)、または“使う”(後者)には、少なくとも現時点では違いはなく、同じ挙動を示します。パフォーマンスや読み下し易さの点では前者が、再利用性では後者が有利です。どちらを使っても良いのですが、クラス内で方針を統一することが大切です。ここではこの先、クラス継承を利用した差分プログラミングの話に繋げることを念頭に置いて、後者を選択することにします。

メソッド#deposit:を定義するにあたり、カテゴリを新設しましょう。カテゴリ名は「accounting」にします。ここまで特化されたメソッドを、どのカテゴリに分類するかについて、もはやお手本になるクラスをシステムから探すことは(不可能、あるいはまったくの無駄ではないにせよ)難しいので、カテゴリ名の付け方は、このクラス定義を初めてブラウズする人の分かりやすさに対して最低限の配慮があれば、自由にしてよいと思います。

カテゴリを新設するには、メソッドカテゴリペイン(メッセージカテゴリペイン、プロトコルペイン、とも言う。ブラウザ上段右から2番目のペイン)の黄ボタンメニューからnew category…を選びます。

[fig.A]メソッドカテゴリペイン、黄ボタンメニューのnew category…
http://squab.no-ip.com:8080/mosaren/uploads/17a.png

 候補がポップアップメニューとして提示されますが、差分プログラミングをしているとき以外は、あまり役に立たないので、素直にnew…を選びます。すると、fill in the blankが現われるので「accounting」とタイプして入力し、accept(Acceptボタンのクリックか、cmd-Sをタイプ)します。acceptと同時に、メソッドカテゴリペインには新設のaccountingカテゴリが追加され、選択状態になります。同時にコードペインには、このカテゴリに属するメソッドをただちに定義可能なように、くだんのメソッド定義テンプレートが表示され、選択状態になるはずです。

[fig.B]追加されたaccountingカテゴリ
http://squab.no-ip.com:8080/mosaren/uploads/17b.png

 マウスポインタをコードペインに合わせ、deleteキーでメソッドテンプレートを消去したのち、#deposit:の定義(上の後者)をタイプして入力、あるいは、このメールからコピー・ペーストしてください。同じペインのシフト黄ボタンメニュー(shiftキーを押しながら黄ボタンメニュー呼び出し、あるいは、黄ボタンメニューからmore…を選択)からpretty printを選択してコードのスタイルを整え、accept(cmd-S)します。

[fig.C]#deposit:の定義
http://squab.no-ip.com:8080/mosaren/uploads/17c.png

 これで、a BankAccountは「deposit: …」メッセージを受け取ることができるようになります。すでに何度か利用しているa BankAccountを束縛したインスペクタの作業用ペイン(一番下のペイン)で、次の式をタイプして入力してからdo it(cmd-D)してみてください。

self deposit: 100

[fig.D]a BankAccount への「deposit: 100」メッセージの送信
http://squab.no-ip.com:8080/mosaren/uploads/17d.png

 評価の結果、インスタンス変数balanceの値が100だけ増加すれば、機能は正常です。

バックナンバー:
http://squab.no-ip.com:8080/mosaren/

Squeak関連のお知らせ:
 このたび、オブジェクト指向界でもその名を知られる梅澤真史氏による「自由自在Squeakプログラミング」(SRC刊、ISBN:4883732037)が出版されました。日本人、しかも本格的Smalltalkプログラマによる初の書き下ろしSqueak関連書籍ということもあり、内容も充実、盛りだくさんで気合いが入っています。Squeakを通じてSmalltalkに興味を持つようになった方は、その学習に役立ててみてはいかがでしょうか。

藤本裕之のプログラミング夜話 #56

 嘘ついてごめん。前回の最後で「次回はずっと散文的かつ形而上的に『好き/嫌い』と『良い/悪い』の問題について与太話を書きたい」と書いたけど、もそっと興味深いテーマが見つかったのでそっちを書きます。「好き/嫌い」と「良い/悪い」の話はまたあとで。

過日(ほんとは昨日なんだけど、これをあなたか読んでいる日からいうと「過日」のほうがなんぼか正確だと思う。こういう細かい差異にこだわるのがプログラマ的)、都内某所のお茶の水はデジハリで行なわれた「第87回お茶の水デジコンサロン」という会合……まぁ毎回ゲストスピーカー(ノーギャラ、二次会の飲み屋で払わなくていいだけ)を頼み、さまざまなテーマのお話を聞くという勉強会みたいなもんなんだが、に出席、社団法人コンピュータソフトウェア著作権協会(ACCS)の葛山さんというヒトのお話を聞いた。

話は大きく分けて2つ。まずはヤフオクのようなネットオークションにソフトウェアの海賊版が出品される問題に、同協会がどのように取り組んでいるか。それからもう一つはあの作者が逮捕された「Winny」に代表されるファイル交換ソフトを使った著作権侵害に関する話。
 まず前者については、オークション主宰のヤフー(株)などと話し合い対策をとって来た結果、一時のような百鬼夜行状態はなくなったものの、世に盗人のタネは尽きまじという通りで日々戦いは続いております、と。
 で、オレが考えさせられる問題だなぁと思ったのは後者の方なのね。葛山さんも「この問題についてはネットとかでいろんなヒトがいろんなことを書いていらっしゃるんですが、どうも一面的にしかものをみていないヒトが多くて」とおっしゃってたが、普通のヒトはそうだろうなと思うのだ。
 意見の一方はつまり「著作権侵害をするためのソフトを作ったんだから捕まって当然、罰せられて当然である」ってやつ。これがスライダーの左の端だとすると、右の端は「それは包丁でヒトが刺し殺されたら包丁を作るヒトを罰するぞって議論ではないか、そんな阿呆な話があるか」という意見が来る。
 いや、本音のところでは「うるさいうるさいオレが違法コピーをできなくなっちゃうぢゃないかばかやろばかやろ」って意見もかなりあるに違いないんだけど、さすがにそういうコトを公然というヒトはいないのでね(笑)。

とにかくたいていのヒトの意見はこのスライダーのどっかにある。そりゃ包丁はあれだけどWinnyの場合、それを使って行なわれるファイル交換は九分九厘まで著作権侵害なわけだからとか、新しい技術の進歩発展にあたって既存の権利権益とバッティングが生じるのはしかたのないことではないかとか。
 ところがプログラマであるオレはそのどっちにもなんだかなぁと思ってしまうのだ。そりゃもちろん、自分の作ったソフトウェアの著作権が侵害されるのは困るのだが、同時に自分の作ったソフトウェアがなんらかの形で犯罪に使われないとも限らないわけで、ちょっと考えるだけでオレの意見はスライダーの上を右往左往しちゃうんである。
 プログラマになりたてのころだった。鉄道関係の会社の仕事で、信号制御のプログラムの一部を作ったことがある。駆け出しのオレがやらされたのは表示部分で、間違っても人命に関わるようなモノではなかったが、そういうヒトの生き死にに関わるような仕事はできるなら勘弁してもらいたいと思ったモンだ。いまだってそう思っているし、できれば犯罪を行なうようなヒトに自分のソフトが使われなければいいなぁとも思う。包丁を作っているヒトだってこれで人を刺したりはして欲しくないと思うだろう。

うまくはいえないんだが、この件に関してスパっと割り切った明確な意見を持ってて、しかもそれが正しいんですと胸を張れるようなヒトを、すまぬがオレは信用できない気がする。そういう問題ってのが世の中にはあるんだよ。みなさんはどう思いますか?
(2004_10_29)

高橋真人の「プログラミング指南」第55回

UNIXとしてのMac OS X

〜Perlについて(1)〜

 こんにちは、高橋真人です。
 さて、前回までPowerBook1台でできるCGI環境の構築についてお話ししてきましたが、その中で余り触れることのできなかったPerlというスクリプト言語について少し掘り下げて見てみたいと思います。
 Perlというと、最近ではもっぱら「CGIのための言語」ととらえている人が多いのですが、Perlは決してCGIのために作られた言語ではありません。私はまだインターネットが今のように一般に使えるようになる以前からPerlに親しんでいたために、「Perl=CGI」という公式は私の頭の中にはなく、Perlというのは「テキスト処理のためのツール」なのだと思っています。
 もちろん、Perlの可能性はテキスト処理だけにとどまるものではなく、バイナリーの処理はもちろん、ネットワーク処理、システム管理などにも使われますし、デーモンプロセスすら書くことも可能です。
 Perlという言語は、UNIXという文化の中で生まれてきたこともあって、C言語を多分に意識した仕様になっています。ある意味「Cで書くと面倒なことを簡単に」といった面持ちを持つので、私はよく他人に「将来Cをやるつもりなら、Perlに先に手を出さない方がいい」とアドバイスします。
 実際、Perlをある程度使いこなせるようになってからCを学び始めると皆、Cの「融通の利かなさ」に一様に驚くようですが、逆に言えばそれだけPerlは「かゆいところに手の届く」言語だということでもあるわけです。
 ご存知の方も多いと思いますが、Perlがこの分野で大きな成功を収めたこともあって、このテキスト処理系のスクリプト言語という分野は非常に活発です。オブジェクト指向機能を加えたPythonや日本人が作ったことでも有名なRubyなど、いずれも使いやすく強力なこれらのツールは、互いに影響を与え合いながら発展・進化し続けています。
 MacとWindows、CocoaとCarbon、XcodeとCodeWarriorなどなど、世の多くの人は物事を対立軸でとらえ、とかく自分をどちらかの「派」に置きたがる傾向があるようですが、これらのスクリプト言語を作成した作者たちは興味深いことに皆さん人格者で、ユーザーほどには他の言語を忌み嫌ったりしていないようです。
 Perlの作者のLarry Wall氏は、文章も巧みで面白いと言われています(残念ながら私はまだ彼の言葉を原文で味わえるほどの英語力がありません)が、寛容さもなかなかのもので、Perlのスローガンとして有名な「TMTOWTDI」(There’s More Than One Way To Do It.)という言葉の意味する「やり方はいくつもある」という言葉は、Perlを極めて多彩な言語にすることに一役買っているように思います。
 Perlは言語仕様も簡素というには余りにも多機能ですし、他の言語の持たない多くの特徴を持つことから、自在に使いこなせるようになるためにはそれなりの期間を要します。しかし、初心者が自分の覚えたての機能だけで書いたたどたどしいコードも、Perlのベテランユーザーが持てるワザを駆使して書いた、一見「何が書いてあるのか、分からない。一体どうしてこれだけのコードでこんなことができるの?!」というようなコードも、どちらもPerlのコードとしては「正しい」のです。
 世にはたくさんのPerlの本があります。Perlの解説をしているWebサイトもかなりの数に上るでしょう。ですから、それらの本を読めば必要なことは十分に集められると言えばそうなのかもしれませんが、そこはそれ、TMTOWTDIの精神で私なりのPerl紹介をしてみたいと思っています。

ニュース・解説

今週の解説担当:小池邦人

Carbon ドキュメント & サンプル & SDK ナビゲーション(2004/10/29)

【開発環境】

新居さんも前号で紹介されていましたが、Apple社から「Tiger Early Start Kit for Developers」なるものが発表されました。Mac OS X 10.4(Tiger)に関する開発者向けドキュメントやTigerプレビュー版(WWDCで配布された物より新しいバージョンだと思われる…多分)がパッケージされた商品(?)のようです。最初にこの発表を見た時「なんだ!これを購入しないとTigerの最新プレビュー版は手に入らないのか?」と慌ててしまいましたが、内容を読み返してみると、どうやらADC Selectメンバであれば自動的に送られて来るようです。つまり「ADC Selectメンバへの勧誘プロモーショングッズ」と言うわけですね(笑)。何だかちょっとセコイような気もしますが、Macintoshと深く関わっている開発者ならば、年間5万円程度の経費で色々と特典が得られますので、この機会にADC Selectメンバへ昇格しておくのも悪くないと思います(筆者経験談)。

http://developer.apple.com/macosx/tiger/tigerkit.html?headlines

同時に、全米6箇所で「Mac OS X Tiger Tech Talk」(無料)という催しも開催されるようです。Tigerに関する開発者向けのデモやプレゼンテーションだけでなく、ハンズオンやフィードバックも行われるようです。こうした催しは日本国内でもぜひ開催していだだきたいものですね…。

http://developer.apple.com/events/techtalks/index.html

【テクニカルドキュメント】

前回から10月29日の期間中、Apple社のDocumentationサイトには新規ドキュメントが2つ登録されました。新型iBook G4と、新しくラインアップに加えられた1.8GHzシングルプロセッサのPowerMac G5に関する仕様ドキュメントです。デベロッパ向け読み物としての解説も2つ登録されています。「Mac OS X v10.4 Tiger: Developer Overview」の方では、Tiger(Mac OS X v10.4 )の新機能を簡潔に解説しています。このドキュメントの内容については、前号の新居さんの記事も参考にしてください。

「Power Mac G5 — Single Processor Developer Note」(PDFあり)
「iBook Developer Note」(PDFあり)

http://developer.apple.com/documentation/index-rev-date.html

「NeuroLens and Mac OS X: Modernizing Brain Imaging」」(読み物)

http://developer.apple.com/business/macmarket/neurolens.html

「Mac OS X v10.4 Tiger: Developer Overview」(読み物)

http://developer.apple.com/macosx/tiger/index.html

前回から10月29日の期間中、新規のテクニカルノートはひとつも登録されませんでしたが、新しいテクニカルQ&Aは6つ登録されました。QA1160とQA1340は、どちらもシステムのスリープ状態に関連する内容です。開発アプリケーションがスリープ状態に入ることにより何らかの影響を受けるようであれば、これらのQ&Aは問題解決のために大変参考になります。「Sorting Like the Finder」には、UCCompareTextDefault () APIを使い文字列をソートする手法がサンプルソース付きで紹介されています。「Private HITheme APIs in Mac OS X 10.2 should not be called」には、Mac OS X 10.2では実装されていないHITheme APIの一覧が明記されています。

QA1377「Private HITheme APIs in Mac OS X 10.2 should not be called」
QA1361「Detecting the Debugger」
QA1159「Sorting Like the Finder」
QA1383「Enabling X11 Forwarding 」
QA1340「Registering for sleep notifications」
QA1160「Preventing sleep 」

http://developer.apple.com/technicalqas/index-rev-date.html

【サンプルソースコード】

前回から10月29日の期間中、Apple社のSample Codeサイトには、新しいサンプルソースコードが4つ登録されました。「ScrollAndZoom」は、久しぶりに登録されたQuartz 2D(CoreGraphics)関連のサンプルソースコードです。カレントCGContextのトランスフォーメーション・マトリックスをCGContextScaleCTM()やCGContextTranslateCTM() APIを使い操作することで、描画内容をダイナミックに更新することができるサンプルアプリケーションが紹介されています。

「SimpleReach」(Network関連)
「SimpleDial」(Network関連)
「ScrollAndZoom」(Quartz 2D関連)
「QDCocoaComponent」(Cocoa関連)

http://developer.apple.com/samplecode/index-rev-date.html

【デベロップメント SDK】

前回から10月29日の期間中、Apple社のSDKサイトには新しいSDKはひとつも登録されませんでした。

http://developer.apple.com/sdk/

その代わり、デベロッパー向けツールとしてCHUD(Computer Hardware Understanding Development Tools)4.0.0(正式版)の配布が開始されました。すでにCHUDをインストールしている方には、CHUD Updaterが最新版をダウンロードするためのダイアログを表示して教えてくれるはずです。

http://developer.apple.com/tools/performance/

MOSAからのお知らせと編集後記は割愛します

MOSA Developer News   略称[MOSADeN=モサ伝]
Apple、Mac OSは米国アップルコンピュータ社の登録商標です。またそのほかの各製品名等はそれぞれ各社の商標ならびに登録商標です。
このメールの再配信、および掲載された記事の無断転載を禁じます。
http://www.mosa.gr.jp/
Copyright (C)2004-2006 MOSA. All rights reserved.