Date:  Wed, 24 Sep 2008 17:38:22 +0900
Subject:  【オブジェクト倶楽部: 2008-36号】
X-Mail-Count: 00261

       ┏━━━━━━━━━━━━━━━━━━━━━━━━━━■
       ┃                         ■┃
      ●┃● ● オ ブ ジ ェ ク ト 倶 楽 部   ■ ┃
       ┃                       ■  ┃
       ┗━━━━━━━━━━━━━━━━━━━━━━■━━━┛
                          No.252 2008/09/24

■ I N D E X
┃
┣【Topics】オブジェクト倶楽部秋イベント開催!
┣【プログラミング】プログラミング言語「Nu」の紹介
┗【コラム】三色マーキング読書法 [1] −分類

〇━━━━━━━━━━━━━━━━━━━━━━━━━━━T o p i c s━
 〇 オブジェクト倶楽部秋イベント 〜lambda the world〜 開催!
  〇 〇━━━━━━━━━━━━━ ━━・ 

来る10月30日、オブラブ秋イベントを開催します!

今回のテーマは関数型プログラミング。
オブラブメンバーの中に潜んでいたファンクショナリスト3名がオブジェクト倶
楽部へ反旗をひるがえし「オブジェクト倶楽部秋イベント」ならぬ「ファンク
ション倶楽部秋イベント」を開催。己が信じる関数道を熱くそしてフリーダム
に語り尽くします。下克上ここに極まる!

ファンクション倶楽部が今回のイベントの会場に選んだのは、Lisperの聖地と
の呼び声も高い、居酒屋 (car (cdr '("y" "a"))) こと「かく田や」。かく田
やの料理を味わいながら、関数型の芳醇な香りに酔いしれて下さい。

また、関数型をテーマとしたライトニングトークスも行います。LTへの申込み
方法は、近日メルマガ上で発表予定。ファンクション倶楽部とともにオブラブ
へ反旗をひるがえしたい方は、lambdaを磨いて続報を待て!

【概要】
  タイトル: ファンクション倶楽部2008秋イベント
            〜lambda the world〜
  開催日時: 2008年10月30日(木) 19:00〜21:00
  場    所: (car (cdr '("y" "a"))) (かく田や:JR田町駅徒歩10分)
            (http://www.hotpepper.jp/A_20100/strJ000002554.html)
  参加費  : 4,000円程度を予定 (飲み物代・お料理代を含みます)
  申込み  : 近日メルマガ上で発表!乞うご期待!
  主    催: オブジェクト倶楽部 http://www.ObjectClub.jp/ 

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ■━
■
┗【プログラミング】プログラミング言語「Nu」の紹介

こんにちは、オブジェクト倶楽部の森田秀幸です。

先日9月10日に、Appleより新型のiPodが発表されましたね。そのラインナップ
の中には新型のiPod Touchも含まれていました。この新型iPod Touchには最新
のiPhone 2.1 Softwareが組込まれていますので、7月11日に発売されたiPhone
3Gと同様、買ってすぐに、様々なネイティブアプリケーションを楽しむ事がで
きるようになっています。

そのネイティブアプリケーションがどんなプログラミング言語で構築されてい
るかご存知しょうか?それは、Mac OS Xのアプリケーションの作成にも使われて
いるプログラミング言語「Objective-C」です。Objective-CはC言語をベースに
したプログラミング言語で、そこに動的結合で実現されたオブジェクト指向機
能が加わっているのが特徴となっています。最近のAppleプラットフォーム用の
プログラミング言語として標準的な位置付けを確立しています。

Objective-Cは、同じくC言語ベースとしているC++とはまた違った進化を遂げて
おり、非常に人気も高いのですが、どうしてもC言語がベースとなっていること
で、他の、より高級でモダンなプログラミング言語と比較すると、低レベルな
素養が求められてしまう側面があるのは否めません。あるアプリケーションを
構築するうえで「記述したいこと」に対して、それとは無関係に「記述しなけ
ればならないこと」の量が大きくなりがちです。

そんな不満を解決する方法の一つとして、今回紹介するのが、プログラミング
言語「Nu」です。[*1]

「Nu」は、

  * Objective-Cで記述されていて
  * Objective-Cランタイムを最大限に利用できるように設計され
  * S式を用いたLisp風の文法を持ちつつも
  * 意味的にはむしろRubyに近い

というおもしろい特徴をもったプログラミング言語です。

では、実際のコードを見てみましょう。

01   #!/usr/bin/env nush
02
03   (class HelloSayer is NSObject
04        (ivar (id) hello)
05
06        (- init is
07           (set @hello "Hello, World!")
08           self)
09 	
10        (- say is
11           @hello))
12 	
13   (puts (((HelloSayer alloc) init) say))

見ていただいて分かるように、コードは括弧だらけです。ぱっと見はS式で記述
されたLispのようです。

ですが、中身をよく見てみましょう。3行目に「(class ...」と記述されている
部分がありますが、この行から括弧が閉じられる11行目までの間で、クラス
「HelloSayer」が定義されています。4行目の「(ivar (id) hello)」では、イ
ンスタンス変数helloを定義しています。そして、6行目や10行目にある
「(- ... is」という記述ではインスタンスメソッドを定義しています。
このように、クラス定義の中にインスタンス変数やインスタンスメソッドの定
義が同時に存在するのはRubyのクラス定義の特徴に類似しています。
また、initメソッドやsayメソッドの中に「@hello」という記述がありますが、
この記述はインスタンス変数「hello」の参照を示しています。このようにイン
スタンス変数に「@」という接頭語を用いるのはRubyの特徴そのものですね。

13行目を見て下さい。「((HelloSayer alloc) init)」という式がありますが、
ここではHelloSayerインスタンスをアロケートし初期化を行っています。Lisp
では関数を適用する際、先に関数を指定しますが(前置記法)、ここでは
HelloSayerクラスオブジェクトが先に指定されています。そのクラスオブジェ
クトにallocメッセージが投げられることで、HelloSayerインスタンスが生成さ
れます。このように、オブジェクトを前に置き、その後にメッセージを記述す
る方式は、Objective-Cそのものです。また、クラスオブジェクトに対しalloc
メッセージを送ってインスタンスを生成するのは、Objective-Cの一般的なオブ
ジェクト生成方法と全く同じです。

サンプルコードを見ていただいた通り、Nuは Lisp/Ruby/Objective-C の特徴が
絶妙に入り交じっていることがよくわかります。Nuはこれらの特徴を取り入れ
ることで、

* S式によってLispと同等の柔軟性を得ながら
* Rubyのようなオブジェクト指向機能を実現し
* それらをObjective-Cランタイムの環境に適用できる

という能力を獲得しています。

今回は、プログラミング言語「Nu」を文法的な側面から紹介しました。今回は
細かく紹介しませんでしたが、「Nu」の処理系はスクリプティング環境だけで
はなく、Objective-Cへの組み込み言語としての利用も強く意識されています。
それを応用することで、冒頭で紹介した、iPod TouchやiPhoneの開発で利用す
る方法も開発リポジトリ内で提供されています。[*2]

2007年に発表されたばかりの若い言語ではありますが、文法、処理系の作り共
にアグレッシブなものとなっており、私的には非常に目が離せない存在です。
S式に魅了され、Rubyを嗜み、Apple製品に傾倒している私のような方にはオス
スメの一品です。(森田秀幸)

[*1] http://programming.nu/
[*2] 実際に利用するにはiPhone SDKが必要です。iPhone SDKの利用規約に各種
     禁止事項が記載されていますので、実際にNuを利用される際には、規約に
     反しないように注意してください。
_______________________________________________________________________
この記事への評価にご協力をお願いします。
URLをクリックして、「ご協力ありがとうございました」のメッセージがご使用
のブラウザに表示されれば投票完了です。
良かった:
http://www.ObjectClub.jp/community/object_ml/estimate?vol=E0014-00&choice=0
普通:
http://www.ObjectClub.jp/community/object_ml/estimate?vol=E0014-00&choice=1
イマイチ:
http://www.ObjectClub.jp/community/object_ml/estimate?vol=E0014-00&choice=2

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ■━
■
┗【コラム】三色マーキング読書法 [1] −分類

● はじめに
突然ですが読者の皆さんは読書はお好きですか?お恥ずかしながら私は大学生
になるまで活字嫌いでまともに本を最後まで読んだことがありませんでした。
しかし、斎藤孝著『三色ボールペン情報活用術』[*1]という本に出会い、私の
読書習慣が一変しました。ただ黙々と本を読み進めるのではなく、情報の活用
を目的として、本に「赤・青・緑」の線を引いて整理しながら読み進めるので
す。私は三年以上この方法で読書をしています。その過程で、自分なりの工夫
を盛り込み、いくつかのテクニックを考案したので、本記事ではそれらを公開
していきたいと思っています。第一回目の今回ご紹介するのは「分類」です。

● 目的
本記事の目的は、読者の皆さんに文章を読む作業を楽しくする工夫を紹介する
ことです。

● 方法(斎藤流 vs. 黒岩流)
方法は、赤・青・緑の三色ボールペンを使って本の重要個所に線を引いてきま
す。斎藤孝氏が提案している方法は下記のルールに従っています。

 赤:客観的にみて、最重要だと思う箇所に引く
 青:客観的にみて、まぁ重要だなと思う箇所に引く
 緑:主観的にみて、面白いと感じたり興味を抱いたりした箇所に引く

それに対して、黒岩流(マルバツ分類法)はこうです。

 赤:肯定的な記述に引き、○印をつける
 青:否定的な記述に引き、×印をつける
 緑:感心・共感した記述に引く(斎藤流と同じ)

私がこのルールを採用している理由は、斎藤流の「最重要(赤線を引く箇所)」
と「まぁ重要(青線を引く箇所)」の判断基準が難しいからです。例えば「お!
これはすごく重要な記述だ!」と思って赤線を引いた後に、それ以上に重要だ
と思う記述が出てきた場合、この方法だと「やっぱりあそこは青線にしておこ
う」となる場合があります。それに対して黒岩流では次にご紹介するように、
文脈から、ある文章が肯定的(○)であるか否定的(×)であるかに分類するだけ
なので、このような手戻りは発生しません。

● マルバツ分類法を使ったマーキングの例
例を示します。
「ソフトウェアの拡張を、既存ソースコードの「変更」ではなく、既存ソース
コードはそのままに、サブタイプの「追加」によって行えること。これが、拡
張性の要となります。(メルマガ【オブジェクト倶楽部:2003-02号】より引用)」

例えば上記のような文は、次のように分類できます。

「ソフトウェアの拡張を、既存ソースコードの「変更」ではなく、既存
                       ×~~~~~~~~~~~~~~~~~~~~~~~~
ソースコードはそのままに、サブタイプの「追加」によって行えること。
                       ~~~~~~~~~~~~~~~~~~~~
これが、拡張性の要となります。(メルマガ【オブジェクト倶楽部:2003-02号】
より引用)」

ポイントは「〜〜ではなく△△だ」という構文を見つけることです。その際に、
線を引くだけではなく、肯定的記述には「○」、否定的記述には「×」を書き
添えておくこと(これがマルバツ分類法と呼ばれる所以)。こうしておくことで
色だけで分類するよりも格段に可読性が増します。

● 応用例:英語のドキュメント読みに
本記事で提案するマーキング技術は、英語のドキュメントを読む際にも力を発
揮します。私は学生時代、英語の資料や論文を読む機会があったのですが、そ
れをいつも苦痛に感じていました。なんとかもっと楽しく読めるようにしたい
と思い、蛍光ペンや三色ボールペンを使ってアンダーラインを引きながら読ん
でいました。しかしそれだけでは、アンダーラインの数が増えた時に、どこが
メインポイントで各アンダーラインが何を示しているのかを一瞬で特定できな
いのが問題でした。そこで考案したのが上で紹介したマルバツ分類法です。こ
れを使って、肯定的な記述と否定的な記述に分類しながらアンダーラインを引
いていったところ、非常に英文が整理され理解が進みました。

● 最後に
皆さんは読書を楽しくするためにどんな工夫をしていますか?私がこの記事で
お伝えしたいことは、自分なりのグランドルール(赤はこういう箇所、青はこう
いう箇所、緑はこういう箇所に引く)を決めて本に線を引きながら読書すること
は、アクティブで楽しいということです。本は綺麗にとっておいても仕方ない
と思います。自分色に染めてしまうつもりで本にどんどん線を引いて活用しや
すくしてみてはいかがでしょうか。
次回は「対比」のテクニックをご紹介します。お楽しみに。(黒岩)

[*1] http://www.amazon.co.jp/exec/obidos/ASIN/4047041351/xpjp-22
_______________________________________________________________________
この記事への評価にご協力をお願いします。
URLをクリックして、「ご協力ありがとうございました」のメッセージがご使用
のブラウザに表示されれば投票完了です。
良かった:
http://www.ObjectClub.jp/community/object_ml/estimate?vol=H004-00&choice=0
普通:
http://www.ObjectClub.jp/community/object_ml/estimate?vol=H004-00&choice=1
イマイチ:
http://www.ObjectClub.jp/community/object_ml/estimate?vol=H004-00&choice=2

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━--■--●--■ 
■
┗【アンケート】気になるシステム業界 ホントのところ

今週は「週にどれぐらいお酒を飲みますか?」のホントのところ。
 節度を守れば楽しいお酒。うっかり飲み過ぎて電車を乗り過ごしてしまったり
終電を逃してしまったりした経験のある方も多いのではないでしょうか?
酒は飲んでも飲まれるなとは言うものの、胸に手をあてて思い起こしてみると
若かりし頃の伝説が沸々とよみがえってくるのではないでしょうか?(千葉)

  毎日飲みます!飲まれます!
     http://www.ObjectClub.jp/special/kininaru/vote?vol=217&choice=0
  毎日ではないですが週に数回飲みます。
     http://www.ObjectClub.jp/special/kininaru/vote?vol=217&choice=1
  たしなむ程度です。
     http://www.ObjectClub.jp/special/kininaru/vote?vol=217&choice=2
  打ち上げとかイベントの時ぐらいかな。
     http://www.ObjectClub.jp/special/kininaru/vote?vol=217&choice=3
  全く飲みません。
     http://www.ObjectClub.jp/special/kininaru/vote?vol=217&choice=4
  それは秘密です。
     http://www.ObjectClub.jp/special/kininaru/vote?vol=217&choice=5
  ちょっと語らせて!
     詳細をこのメールに返信ください!!

アンケート結果はオブジェクト倶楽部サイト上にて公開します。お楽しみに。
なお、前号「ライトニングトークス(LT)って知ってる?」の結果は公開中。
ぜひご覧下さい。
⇒http://www.ObjectClub.jp/special/kininaru/vol216/PlonePopoll_results2

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━--■--●--■
■
┗編集後記

こんにちは、編集人のナガタユウコです。22日にちょっと遅い夏休みを取り、
4連休を利用して、実家のある福井に帰省しました。私事ですが、福井本社から
東京支社へ転勤してからちょうど一年が経ち、この一年間で少しは成長できた
のかな・・・などと、秋晴れの福井で自分自身をふりかえってみたり。たまに
は立ち止まって自分を見つめ直すことの大切さを、あらためて認識した週末で
した。(ナガタユウコ)

オブジェクト倶楽部カレンダーの10月分の電子データを公開します。
10月は「どうするオレ?」です。10月にもなると年内リリース等のプロジェク
トは徐々に忙しくなってきていると思います。その時に深刻なバグ等が発覚す
ると、チームがピリピリしがちです。そんな時に、これらのカードを使って対
処法を決定するなどして、チームの雰囲気を明るくする工夫をしてみてはいか
がでしょうか?とはいえ、変なカードが出てもちゃんと再現テストを書いたり、
自分がヒーローになってさっと解決してみるとかしたいものですww(西村)
カレンダーのダウンロードはこちらから。
http://www.ObjectClub.jp/special/#calendar

今週の強引な一言
*** 為せば成る 為さねば成らぬ何事も 成らぬは人の為さぬなりけり 
    (上杉鷹山) ***
できないことであれこれ悩むのではなく、今自分にできることは何かを考え、
とにかく始めてみる。どんな状況でも少しずつ自分から始めていきましょう。
きっとより良い明日が待っているハズ!(千葉)

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━--■--●--■
● ご意見、ご感想は         ⇒このメールに返信ください
〇 配信中止、アドレス変更は ⇒http://www.ObjectClub.jp/community/object_ml/help/
〇 免責事項、過去の記事は   ⇒http://www.ObjectClub.jp/community/object_ml/
■ 発行:オブジェクト倶楽部 ⇒http://www.ObjectClub.jp/
Copyright (c)2003-2008 オブジェクト倶楽部. All Rights Reserved.
powered by Eiwa System Management, Inc.