Date:  Wed, 24 Feb 2010 17:14:37 +0900
Subject:  【オブジェクト倶楽部: 2010-08号】
X-Mail-Count: 00326

       ┏━━━━━━━━━━━━━━━━━━━━━━━━━━■
       ┃                         ■┃
      ●┃● ● オ ブ ジ ェ ク ト 倶 楽 部   ■ ┃
       ┃                       ■  ┃
       ┗━━━━━━━━━━━━━━━━━━━━━━■━━━┛
                          No.316 2010/02/24

■ I N D E X
┃
┣【プログラミング】IzPackで作るクロスプラットフォームインストーラ [7]
┣【アジャイル】アジャイル・プラクティスの見つけ方 [12]
┃              〜組織の中で新しいアイディアを広めるには〜
┗編集後記

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ■━
■
┗【プログラミング】IzPackで作るクロスプラットフォームインストーラ [7]

こんにちは、村上です。
前回はPacksPanelを使用してユーザにパックを選択させる方法とInstallPanel
を指定してインストール処理を行う方法を説明しました。前回までで、インス
トーラの機能の基本的な部分は完成しました。今回はショートカットの作成機
能を説明します

● ショートカット
インストーラでアプリケーションをインストールすると、ショートカットがデ
スクトップやアプリケーションのメニューに追加されるのをご覧になったこと
があると思います。IzPackでもデスクトップやアプリケーションのメニューに
ショートカットを作成できます。
ショートカット作成機能を利用するにはinstall.xmlにいくつか指定します。
まず、ショートカットの作成を行うパネルとしてShortcutPanelを追加します。
ShortcutPanelはユーザにショートカットの作成を選択させる役割もあります。
次に、<native type="izpack" name="ShellLink.dll"/>の記述が必要です。
IzPackではWindowsのショートカットを作成する際にJNIを利用してリンクファ
イルを作成します。その際に必要なDLLファイルをインストーラに含めるための
指定です。
最後に、作成するショートカットのファイルの仕様の定義を指定します。
ショートカットの仕様はinstall.xmlとは別のファイルに定義しますが、インス
トーラに含める必要があるので要素resを利用して指定します。属性idの値を
shortcutSpec.xmlとしてショートカットの仕様ファイルを指定できます。
ショートカットの仕様ファイルはプラットフォーム(Windows、Unix)毎に作成す
る必要があります。そのため、ショートカットの仕様ファイルを指定するため
に要素resの属性idの値にはshortcutSpec.xml以外に、Win_shortcutSpec.xml、
Unix_shortcutSpec.xmlが指定可能です。それぞれのプラットフォームを
shortcutSpec.xmlの接頭辞として付加したものです。
変数DesktopShortcutCheckboxEnabledはIzPackの組み込み変数で、デスクトッ
プにショートカットを作成するかどうかの(ShortcutPanel上の)チェックボック
スのデフォルト状態を指定します。trueに設定するとデフォルトでチェックさ
れた状態になります。

下記はショートカット機能を利用するために必要なinstall.xmlへの追加記述で
す。

--- install.xml(変更部分のみ抜粋) ---

    <variables>
        ....
        <variable name="DesktopShortcutCheckboxEnabled" value="true"/>
    </variables>
    ...
    <resources>
        ....
        <res id="shortcutSpec.xml" src="shortcutSpec.xml"/>
    </resources>
    ....
    <panels>
        ....
        <panel classname="InstallPanel" />
        <panel classname="ShortcutPanel"/>
        <panel classname="FinishPanel" />
    </panels>
    ....
    <native type="izpack" name="ShellLink.dll"/>

------

install.xmlとは別に定義するショートカットの仕様について、続けて説明しま
す。ショートカットの仕様はXMLで定義します。ファイル名は自由ですが、ここ
ではshortcutSpec.xmlとします(以降、shortcutSpec.xmlとだけ書きます)。
shortcutSpec.xmlはプラットフォーム毎に作成する必要があります。今回は
Windows用のshortcutSpec.xmlを例に説明します。
まず、shortcutSpec.xmlはルート要素としてshortcutsが必要です。そして、作
成したいショートカットの数だけ子要素としてshortcutを作成します。下記の
shortcutSpec.xmlの例では要素shortcut以外に、要素skipIfNotSupportedと要
素programGroupを指定しています。要素skipIfNotSupportedはショートカット
をサポートしないプラットフォームでは何もしないようにさせるために指定し
ます。要素programGroupはショートカットをメニュー(Windows XPであれば
[スタート]->[すべてのプログラム])に追加するフォルダの名前と構造を指定し
ます。下記の例ではantというフォルダがメニューに追加されます。
作成されるショートカットの詳細は要素shortcutの属性で指定します。要素
shortcutの属性はたくさんありますが、よく使用すると思われるものに絞って
説明します。まず、属性nameはショートカットの名前を指定します。実際に作
成されるショートカットの名前になります。属性targetはショートカットがク
リックされたときに実行されるアプリケーションのパスを指定します。属性
programGroupにyesを指定すると、要素programGroupの属性defaultNameで指定
したディレクトリにショートカットを作成します。属性desktopにyesを指定す
るとデスクトップにショートカットを作成します。
要素createForPackは、特定のパックがインストールされた場合にのみショート
カットを作成したい場合に指定します。属性nameでパックの名前を指定すると
そのパックがインストールされた場合にだけ、親要素のショートカットが作成
されます。例では、ドキュメントがインストールされた場合にだけドキュメン
トのインデックスファイルへのショートカットを作成するように指定していま
す。

--- shortcutSpec.xml ---

<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<shortcuts>
    <skipIfNotSupported />
    <programGroup defaultName="ant" location="applications" />
    <shortcut
        name="Ant Documents"
        programGroup="yes"
        desktop="yes"
        target="$INSTALL_PATH\docs\index.html"
        iconFile="$INSTALL_PATH\docs\images\ant_logo.ico"
        description="This Ant bin">
        <createForPack name="Ant Documents" />
    </shortcut>
    <shortcut
        name="Ant Uninstaller"
        programGroup="yes"
        target="$INSTALL_PATH\Uninstaller\uninstaller.jar"
        description="This uninstalls Ant">
    </shortcut>
</shortcuts>

------

上記のようにinstall.xmlに追記して、shortcutSpec.xmlを作成したら、antを
実行してinstall.jarを作成してインストールを実行してみてください。
InstallPanelの次に、ショートカットの作成を選択するパネルが表示されます。
そのまま進むと、[スタート]->[すべてのプログラム]->[ant]のメニューが追加
されます。その中にドキュメントへのショートカットとアンインストーラへの
ショートカットが含まれているます。
また、デスクトップにはドキュメントへのショートカットが作成されています。
実際にショートカットをクリックしてドキュメントが表示されるか、アンイン
ストーラが実行されるか試してみてください。

● まとめ
今回は、ショートカットを作成する機能を説明しました。次回はIzPackで作成
したjarファイルをラップしたexeファイルの作成について説明します。
それでは、次回までさようなら。(村上)

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ■━
■
┣【アジャイル】アジャイル・プラクティスの見つけ方 [12]
┗              〜組織の中で新しいアイディアを広めるには〜

デブサミ2010で登壇させていただきました。「前に立って話をする」という機
会はなかなか無いように思えますが、最近はいろいろな勉強会があり、以前と
比べ、人の前に立つ機会が増えたように思えます。そういう機会もあるので、
何度か前に立ってお話をさせていただく機会はあったのですが、デブサミは、
空気がまったく違っていました。どういう事かと言うと、みんな本当に熱いん
です。スピーカーが重要と思っているところでは、重点を置いて説明したりす
るものだと思うんですが、そのタイミングで「ザー」と言う音とともに、みん
な熱心にメモを取られているんです。そして「Ask the Speaker」という、セッ
ション後スピーカーに質問するブースでも、熱心に質問される方がたくさんい
らっしゃいました。限られた時間の中で、全ての質問に答える事はできなかっ
たし、後ろに並ばれている方もいたので、1つ2つの質問しか答えられなかった
のですが、たくさんの方に来ていただけ、恐縮しました。ありがとうございま
した。

私のセッションで話した事を一言に要約すると、「システムを小さく、独立し
たモジュールに分割して、組み合わせれば、複雑なシステムでも成長し続けら
れるものにできる」と言う事でした。みんな大好きなオブジェクト指向や、そ
の構造化設計も、ある面では「小さく、独立させて、組み合わせ」たものです。
そうすることで理解がしやすく、保守しやすいシステムを構築できます。現実
的にはそれだけでは足らないので、何らかのフレームワークを使ったりするこ
ともあると思いますが、基本的な方針は変わりません。

こういった事をセッションでお話したのですが、Ask the Speakerに立ち寄った
方から、「会社の中でそういうアイディアを広めようにも、なかなか実現でき
ない」という質問をいただきました。その方の会社では、複雑なシステムを機
能分割で対応するため、新規開発はできるが変更が容易ではなく、困っている、
とおっしゃっていました。そしてオブジェクト指向のような考え方を普及させ
ることで、システムを変更できるようにしたいが、色々な人に伝えてもなかな
か受け付けてもらえないとおっしゃっていました。

そうなのです。デブサミ等に参加する方は熱心な方ばかりなので、想いの伝達
はできるのですが、実際に自分たちの現場に帰って行ったときに、なかなか広
める事が難しいと思うのです。そういう、「新しいアイディアを組織に広める」
ときに役立つ48のパターンがかかれている本があります。その名は「Fearless
Change[*1]」です。残念ながら邦訳されていないのですが、まず情熱を持って
変化のために活動しなければならないなど、当たり前に思っていてもなかなか
できない事が書かれています。現在執筆中の続編の中では、情熱を持って変化
のために活動する人をEnergizerと呼ぶように改められています。Energizer
とは、エネルギーを伝搬する人です。話を聞くと元気になる人、いませんか?
Energizerとは、そういう人を指すのだと思います。

みんなが情熱を持って信念に向かって歩けると、世界がいい方向に変化してい
くのではないでしょうか。今回は「新しいアイディアを組織に広める」ための
パターンが書かれている本をご紹介しました。(こんぴろ)

[*1] http://www.amazon.co.jp/dp/0201741571

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

こんにちは、編集人のナガタユウコです。『Ruby逆引きレシピ』のプレゼント
企画に多数のご応募をいただき、本当にありがとうございました!厳選なる抽
選の結果、次のお二人が当選されました!おめでとうございます!
  @yokolet さん
  @naopontan さん (それぞれTwitterアカウント)
当選者のお二人にはTwitterにてご連絡差し上げますので、しばらくお待ちくだ
さいませ☆(ナガタユウコ)

*** オブラブ2010カレンダー公開 ***
3月「Android」
/special/#calendar
今月のテーマは「Android」です。Androidは、携帯市場をメインターゲットと
したLinuxベースの組み込みプラットフォームで、Googleより2008年にリリース
されました。昨年の夏には日本でもAndroid携帯が発売され話題になりました。
Android独自のJavaVM「DalvikVM」により、組み込みの知識がなくてもアプリが
簡単に作れるようになっています。
また、マルチタスクであり、アプリ間でデータをやりとりする「インテント」
という仕組みを備えているため、アプリ間連携が手軽に行えます。
最近では携帯電話だけでなく、PDAを始めとするモバイルガジェットにも搭載さ
れつつあります。他にも様々な分野への普及が期待されています。
ガジェット好きな方や新しいものが好きな方は、ぜひ、触ってみてはいかがで
しょうか?(ミムλ)

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