MOSA Multi-OS Software Artists

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

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

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

2005-10-04

目次

  • 「WebObjects Dev Report」    第24回  田畑 英和
  • SqueakではじめるSmalltalk入門  第48回  鷲見 正人
  • ニュース・解説               木下 誠

「WebObjects Dev Report」  第24回  田畑 英和

 さて、前回までモデルファイルの作成方法を中心に話を進めてきましたが、今回は話題を変えてMVCのViewにあたる、画面表示について解説していきたいと思います。

画面構成

 まずジョブマッチングシステムの画面構成ですが、現在のシステムを参考にしますと以下のようになります。

・画面一覧
 トップ画面
 [[閲覧系]]
  一覧画面
  PR画面
  詳細画面(スキルシート/タスクレベル)
 [[登録系]]
  ユーザ認証画面
  データ入力画面(Profile/Skill Sheet/Task Level/Careers/P.R.)
  登録実行画面

 これらはあくまでも現在の画面構成であり、システムをリニューアルするからには改良を加えていかなければ意味がありませんが、まずは現状の画面構成を土台にしていきます。

Reusable Component

 WebObjectsでは画面をWeb Componentと呼ばれる単位で作成していきますが、かならずしも「1画面=1コンポーネント」というわけではありません。画面をReusable Componentと呼ばれる部品の組み合わせで構成することができ、この仕組みを積極的に利用することにより効率の良い開発が可能になります。
 例えば複数の画面で共通して使用するようなパーツ(ヘッダー、メニュー、フッターなど)をReusable Componentとして実装しておけば、同じものを毎回作成する必要がなくなります。また1カ所でしか使用しないパーツであっても、適度な範囲でReusable Component化しておくことにより、1つのコンポーネントが複雑になることを防ぐことができます。さらに共通したレイアウトをもった画面であれば、レイアウトそのものをReusable Componentとして実装し、各画面に共通したレイアウトを適用することもできます。

 とうわけで、今回列挙した画面は合計12画面ありますが、実際に作成するコンポーネントの数はそれ以上になります。具体的には全体的な画面構成のために次のようなReusable Componentを作成していきます。

・Reusable Component一覧
 -レイアウトコンポーネント
 -ヘッダーコンポーネント
 -フッターコンポーネント
 -メニューコンポーネント

Reusable Componentの作成方法

 作成方法は基本的には通常のコンポーネントと同様です。WOComponentのサブクラスとして作成し、WebObjects Builderを用いてレイアウトやDynamic Elementの配置、バインドの設定をおこなうことができます。

 通常のコンポーネントとの違いとしてはまずHTMLの構造が上げられます。画面全体を1コンポーネントとして作成する場合と違い、画面内に組み込んで使用するReusable Componentは部分的なHTMLとして作成します。具体的にはといったページ内で1回しか使用されないタグを含めないようにします。これはWebObjects BuilderのInspectorから簡単に設定できます。
 次に、コンポーネント間でデータをやりとりできるようにします。これは必要ない場合もありますが、画面内にReusable Componentを組み込むとき、2つのコンポーネント間でデータをやりとりすることにより、より柔軟な使い方ができるようになります。
 例えばReusable Component上で表示するデータを親コンポーネントから与えたり、Reusable Component上で入力したデータを親コンポーネントにセットすることができます。WebObjects BuilderのAPI Editorを用いれば、Reusable Component上の任意のキー(変数)を親コンポーネントに公開することができ、WOStringやWOTextFieldのようなDynamic Elementと同様に、Inspectorから値をバインドできるようになります。

Reusable Componentの応用

 Reusable Componentは使用した数だけインスタンス化されます。たとえば1つの画面内にReusable Componentを10個配置した場合、それが同一のコンポーネントであったとしても、インスタンスは配置した数だけ生成されます。それぞれのコンポーネントが固有の状態を管理する必要がある場合はこれでもよいのですが、例えば親コンポーネントから値を受け取ってそれを表示するだけのような場合は、Reusable Component側で状態を管理する必要がありません。
 つまり、1つのインスタンスだけを生成してそれを使い回すことができればメモリの消費量をおさえることができます。これを実現するためには、次のようなメソッドをReusable Componentのクラスファイルに追加します。

     public boolean isStateless() {
         return true;
     }

 このメソッドはWOComponentで提供されているメソッドですが、デフォルトではfalseを返すところを、オーバーライドしてtrueを返すことにより、そのコンポーネントのインスタンスは1つしか生成されずアプリケーション内での共有が可能になります。

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

 本連載では、名前は知っていてもなかなか触れる機会のないSmalltalkについて、最近話題のSqueakシステムを使って紹介しています。前回、Squeakシステムの“外の世界”にコードを持ち出すための「ファイルアウト」を取りあげましたが、今回はその逆の「ファイルイン」についてです。

 ファイルイン(file in)は、ファイルアウトを使ってシステムから“吐き出され”たクラスやメソッドの定義群を、読み込みながら次々とコンパイルして、システムに取り込んでゆく機構です。

▼ファイルアウトされたコードを、別のシステムでファイルインする
 前回、ファイルリストの文字化けを解消するために手を加えた「FileList >> #defaultEncoderFor:」メソッドの定義をファイルアウトしましたが、これを別のシステムにファイルインしてみましょう。ファイルインの結果を分かりやすくするために、いったん使用中のSqueakシステムを終了し、ダウンロードしたzipファイルから取り出したばかりの新しい仮想イメージファイルで起動しなおします。

 起動が完了したらファイルリストを開いてください(デスクトップメニュー→ 開く… → ファイル・リスト)。念のためここで、上段右手のリストペインから「ShiftJisExample.txt」をクリックして選択し、文字化けが起こることをあらかじめ確認しておくとよいでしょう。そして改めて、同じリストペインから「FileList-defaultEncoderFor.st」を探して選択します。もし探しているファイルが仮想イメージとは別のフォルダにあるのならば、上段左手のリストペインでそのフォルダを指定しなおしてから作業を行なってください。

 「FileList-defaultEncoderFor.st」を選択すると、拡張子「.st」から、その内容がSmalltalkコードであると認識され、右手上段のボタン群の構成が変化します。「filein」というボタンが追加されるので、これをクリックします。
ボタンを押した直後、一瞬だけプログレスバーが現われて消えます。一瞬なのは、たんにファイルインするコードが短いからです。ノーティファイア(エラー)が表示されなければ、システムへの読み込みは無事完了となります。

[fig.A]ファイルアウトしたコードをファイルインするためのボタン
http://squab.no-ip.com:8080/mosaren/uploads/48a.png

 確認のため、FileList >> #defaultEncoderFor:の定義をブラウズしてみましょう。今ちょうど、ファイルリストで開いている「FileList-defaultEncoderFor.st」の3行目に「defaultEncoderFor:」という文字列がありますので、これを選択してからbrowse it(cmd+B)するのが早いと思います。定義は、先ほどファイルインした「FileList-defaultEncoderFor.st」の内容、つまり、前回、手を加えたコードになっているはずです。

 さらに前回の復習を兼ねて、念のため、ウインドウ中程の「versions」ボタンを押してバージョンブラウザを開いてみてください。最新版(上端のリストペインの一番上の項目)をクリックすれば、下のペインに、ファイルインしたバージョンとの差分情報も確認できます(追加した行が赤い文字で表示されます)。

[fig.B]ファイルインした定義が最新のものとなっていることを確認
http://squab.no-ip.com:8080/mosaren/uploads/48b.png

 もちろんファイルリストの挙動もファイルインの前後で変わっています。再び、ファイルリストのウインドウをクリックしてアクティベートしてから、右手のペインより「ShiftJisExample.txt」をクリックして内容を読み込みます。ファイルインによるパッチがうまく機能していれば、もはや文字化けは起こらないはずです。

[fig.C]ファイルイン後、.txtファイルの読み込み時の文字化けは解消
http://squab.no-ip.com:8080/mosaren/uploads/48c.png

▼ファイルリストを使わずにファイルインする方法
 実は、ファイルインはファイルリスト独自の機能というわけではありません。たとえば、ファイルインしたいコードがすでに手元にある場合は、Squeakシステム内の、テキストの入力や編集を行なう場所ならどこでもファイルインが可能です。つまり、“外の世界”からクリップボード経由で(コピー&ペーストで)持ち込んだり、極端な話、手で直接タイプしたコードでもファイルインは可能…というわけです。実際に試してみましょう。

 簡単のため、ファイルリストで開いている「FileList-defaultEncoderFor.st」の内容を使うことにします。このファイルの内容を全選択(cmd-A)後、コピー(cmd-C)して、ワークスペース(デスクトップメニュー → 開く… → ワークスペース)などに貼り付け(cmd-P)てください。改めて、全選択(cmd-A)し、シフト黄ボタンメニュー(shiftキーを押しながら黄ボタンメニューを呼び出すか、黄ボタンメニューの「さらに…」を選択)から「ファイル・イン」を選ぶと、選択テキストをコードに見立ててファイルインすることができます。

 なお、当該メニューの項目に「(G)」と添えられているのは、このメニュー項目の機能(選択文字列のファイルイン)がキーボードショートカット「cmd+shift-G」でも起動できることを意味します。

 また、GUIではなく、あえてSmalltalkの式を使ってファイルインを行ないたい場合は、

(FileStream fileNamed: ‘FileList-defaultEncoderFor.st’) fileIn

をdo it(cmd-D)しても同じことが可能です。動的に定義ファイルを読み込む必要があるとき、たとえばソフトのインストールを行なうコード(インストーラ)などでよく使われます。もちろん、先に紹介したGUIを用いたファイルインも、内部では、これと同じ式が評価されています。

▼ファイルイン前にコードを閲覧できる「ファイルコンテンツブラウザ」
 コードをファイルインしてシステムに読み込む前に、どのクラスのどんなメソッドを改変しているのか、あるいは、どんなクラスやメソッドを追加しているのかを確認したいことはよくあります。ただ、ファイルアウトされたSmalltalkコードには“チャンク”(まとまり)の区切りを示す記号である「!」が、多数、機械的に挿入されているため、あまり読みやすいものではありません。

 このようなときに便利なのが「ファイルコンテンツブラウザ」です。ファイルコンテンツブラウザはシステムブラウザのようなウインドウを表示し、指定したファイルアウトコードの内容を、システム内のコード同様、容易に閲覧できるような機能を提供してくれます。

[fig.D]ファイルコンテンツブラウザ
http://squab.no-ip.com:8080/mosaren/uploads/48d.png

 ファイルコンテンツブラウザはファイルリストから起動するのが簡単です。ブラウズしたいファイル(ファイルアウトされたもの)を選択し、上端の「code」ボタンをクリックします。

[fig.E]ファイルコンテンツブラウザを起動するためのボタン
http://squab.no-ip.com:8080/mosaren/uploads/48e.png

 GUI(ファイルリスト)を使わず、次の式を適当な場所で入力後にdo it(cmd-D)しても同じです。

FileContentsBrowser browseStream: (FileStream fileNamed: ‘FileList-defaultEncoderFor.st’)

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

ニュース・解説

今週の解説担当:木下 誠

———————————————————————-
Developer Transition Resource Centerの
日本語版がオープン
———————————————————————-

先月、IntelベースMacへの移行を支援するためのページ、「Developer Transition Resource Center」がオープンしたとのニュースを伝えましたが、その日本語版が公開されました。

このページは、Intelへの移行に必要な情報、ソフトウェア、技術資料へのリンク集となっています。今回の日本語ページのオープンに合わせて、「Universal Binaryプログラミングガイド」、「Universal Binaryの導入」、「XcodeへのCodeWarriorプロジェクトの移植に関する概論」の、日本語への翻訳も公開されています。

また、いくかのドキュメントは「翻訳中」となっているので、近日中に公開されることでしょう。

Developer Transition Resource Center
http://developer.apple.com/ja/transition/index.html

Universal Binaryプログラミングガイド
http://developer.apple.com/ja/documentation/MacOSX/Conceptual/universal_binary/index.html

Universal Binaryの導入
http://developer.apple.com/ja/macosx/adoptinguniversalbinaries.html

XcodeへのCodeWarriorプロジェクトの移植に関する概論
http://developer.apple.com/ja/documentation/DeveloperTools/Conceptual/MovingProjectsToXcode/index.html

———————————————————————-
Intelへの移行パス確認のドキュメント
———————————————————————-

IntelベースMacへの、移行のパスを確認するためのドキュメント、「Scoping Your Transition Project」が公開されています。

このドキュメントは、Mac OS Xアプリケーション、オープンソースUNIXプロジェクト、Javaのようなアーキテクチャ非依存言語、といったカテゴリー毎に、どのような作業が必要になるかを、列挙したものです。また、必要な資料へのリンクも併せて掲載されています。

Intelへの移行は、必要な技術資料は一通り出そろい、Appleとしてはそれをデベロッパに広く知らせようとしている段階に来ているように思えます。

Scoping Your Transition Project
http://developer.apple.com/transition/projectscope.html

———————————————————————-
ADCで、オンラインでの書籍ブラウズサービス開始
———————————————————————-

ADCで、一風変わったサービスが始まりました。Webブラウザ上で、本のブラウズ、検索ができる「ADC Bookshelf」というサービスです。Safari Books Onlineが提供するそうです。

このサービスでは、1,000冊の技術書を、オンラインで読んだり、検索できたりするものです。ADCの一部として提供されるので、もちろん、Mac系の書籍も含まれます。

さて、面白そうなので、やってみました。まず、これは有料サービスです。始めに登録を行います。値段は、ADCの会員レベルに応じて、PremierとSelectが月$17.99、Onlineが月$19.99です。

ログインすると、本の一覧と、自分の本棚(Bookshelf)ができます。本棚には、本を10冊入れることができます。本棚に入れた本は、全文をオンラインで読むことができます。ただし、一度入れた本は一ヶ月出すことができません。一ヶ月たったら、他の本と入れ替えることができます。

つまり、一月に10冊の本が読み放題になる、というサービスです。本棚に入れた本は、そのまま残しておいてもいいですし、必要なければ他の本と入れ替えます。短期的に、様々な分野の技術が必要になったときや、興味のある分野の本をちょっと試し読みしたいときに、便利なサービスでしょう。

本文は、Webブラウザ上で、テキストとして読みます。PDFではありません。リスト、テーブル、画像等もきちんと含まれます。Webブラウザで長文を読むのが苦にならなければ、便利です。ですが、ここを不便と感じる方もいるでしょう。本の一部をPDFとしてダウンロードできるものもあるようです。

Webページのデザインは、それなりに使いやすいです。ただ、本文がテキスト表示、というのが最大のポイントになると思います。これを受け入れられて、月に数冊の本を買うような方なら、使いがいのあるサービスでしょう。最後に、当然ですが、すべて英文の本です。

ADC Bookshelf
http://developer.apple.com/adcbookshelf/

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

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