Date:  Wed, 19 Aug 2009 17:00:08 +0900
Subject:  【オブジェクト倶楽部: 2009-27号】
X-Mail-Count: 00302

       ┏━━━━━━━━━━━━━━━━━━━━━━━━━━■
       ┃                         ■┃
      ●┃● ● オ ブ ジ ェ ク ト 倶 楽 部   ■ ┃
       ┃                       ■  ┃
       ┗━━━━━━━━━━━━━━━━━━━━━━■━━━┛
                          No.292 2009/08/19

■ I N D E X
┃
┣【Topics】JaSST'10 Tokyo 論文募集
┣【プログラミング】IzPackで作るクロスプラットフォームインストーラ [3]
┣【プログラミング】組込みシステムの話 [7]
┗【アンケート】気になるシステム業界 ホントのところ

〇━━━━━━━━━━━━━━━━━━━━━━━━━━━T o p i c s━
 〇 JaSST'10 Tokyo 論文募集
  〇 〇━━━━━━━━━━━━━ ━━・ 

ソフトウェアテストや、ソフトウェア品質に関する論文を募集しています。
研究論文、経験論文、事例発表でネタをお持ちの方、ぜひどうぞ!
http://jasst.jp/archives/jasst10e/abstract_10e.html

JaSST'07 Tokyoでは、ベストスピーカー賞にバグレゴが選出されています。
http://jasst.jp/archives/jasst07e.html#speaker

●開催要項
日    時:2010年1月28日(木)〜29日(金)
場    所:目黒雅叙園 (東京・目黒)
          http://www.megurogajoen.co.jp/
主    催:特定非営利活動法人 ソフトウェアテスト技術振興協会(ASTER)
          http://aster.or.jp/
基調講演:Johanna Rothman

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

こんにちは、村上です。前回はHelloPanelを使ってインストーラの作成方法を
紹介しました。今回からは実際にアプリケーションをインストールするインス
トーラを作成していきます。

● install.xmlの内容
まず、前回使用したinstall.xmlで使用した要素について簡単に説明します。
 * installation    :インストールのルートの要素です。
 * info            :インストーラとインストールするアプリケーションの
                     一般的な情報(アプリケーション名、バージョン)を記
                     述します。
 * guiprefs        :インストーラのGUIに関する設定(ウインドウのサイズ、
                     LookAndFeel等)を記述します。
 * locale          :インストーラで使用する言語を指定します。複数指定
                     可能ですので1つインストーラで複数言語に対応可能で
                     す。
 * panels          :インストーラが表示するパネルを指定します。記述し
                     た順番でインストーラに表示されます。
 * packs           :インストールされるファイルを指定します。

これらの要素に加え、実用的なインストーラを作成する上では欠かせない要素
がいくつかあります。
それらの要素については必要になったときに随時説明することにします。

● インストールするアプリケーション
今回から作成するインストーラでインストールするアプリケーションは、
Apache Antにしたいと思います。Java開発者であれば一度は利用したことがあ
ると思います。公式にはインストーラが用意されていません。また、手動でイ
ンストールする場合は公式で配布しているアーカイブを展開して環境変数を設
定するなどの作業が必要です。この作業を今回作成するインストーラによって
自動化したいと思います。
インストールするApache Antは最新の1.7.1にします。
http://ant.apache.org/bindownload.cgi からダウンロードできます。

では、次からは前回作成したHelloPanelだけのインストーラに機能を追加して
Antインストーラの作成を進めていきましょう。

● 再びHelloPanel
前回もHelloPanelを紹介しましたが、今回はApache Antをインストールする場
合の実際の値をinstall.xmlに設定、追記します。
appnameにはアプリケーション名、appversionにはアプリケーションのバージョ
ン、urlにはアプリケーションの公式のウェブサイトのURLを設定します。

なお、機能を追加していく度にinstall.xmlをすべて載せてしまうと誌面がなく
なってしまいますので、今後はinstall.xmlの変更部分だけを抜粋して載せます。

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

        <info>
                <appname>Apache Ant</appname>
                <appversion>1.7.1</appversion>
                <appsubpath>apache-ant-1.7.1</appsubpath>
                <url>http://ant.apache.org/</url>
                <requiresjdk>yes</requiresjdk>
        </info>
        
------

上記のように修正したら、compileコマンドを実行してinstall.jarを作成して
ください。作成されたinstall.jarを実行すると、"Apache Ant 1.7.1のインス
トールへようこそ!このソフトウェアのウェブサイト:http://ant.apache.org/";
と表示されるはずです。
環境によっては、最初に警告のダイアログが表示される場合があります。これ
はrequiresjdkでyesを指定したからです。アプリケーションの実行にJDKが必要
な場合にはrequiresjdkでyesを指定します。JDKがインストールされていない環
境では警告のダイアログが表示されます。JDKがインストールされた環境で警告
ダイアログが表示される場合は、環境変数PATHに%JDK_HOME%\binを追加してく
ださい。ここでの環境変数JDK_HOMEはJDKをインストールしたパスです。
IzPackのドキュメントに明記はされていませんが、インストーラ実行時にjavac
コマンドが実行できるかでJDKがインストールされているかを判断しているよう
です。

● まとめ
今回は、install.xmlを構成するいくつかの要素の説明とHelloPanelに表示する
アプリケーションに関する情報について説明しました。次回は、今回の続きと
してLicencePanelを使用してライセンス情報の表示とライセンス同意の確認を
したいと思います。
余談ですが、LicencePanelのスペルは本当ならLicensePanelですがIzPackの開
発者が間違ってしまったようです。
それでは、次回までさようなら。(村上)
_______________________________________________________________________
この記事への評価にご協力をお願いします。
URLをクリックして、「ご協力ありがとうございました」のメッセージがご使用
のブラウザに表示されれば投票完了です。
良かった:
/community/object_ml/estimate?vol=E0018-02&choice=0
普通:
/community/object_ml/estimate?vol=E0018-02&choice=1
イマイチ:
/community/object_ml/estimate?vol=E0018-02&choice=2

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ■━
■
┗【プログラミング】組込みシステムの話 [7]

こんにちは。藤井です。
今年の夏は短くて寂しい感じです。

さて、今回はタスクの話をします。

● タスクとは
タスクをひとことで説明すると「処理の実行単位」のことです。タスクの中に
はひとつの処理があるかもしれませんし、複数の処理があるかもしれません。
タスクには「優先度」を設定できます。また、タスクには「実行可能状態」、
「実行状態」、「待ち状態」などの状態があり、RTOSは状態を基に次に実行す
べきタスクを決定します。次に実行すべきタスクの決定方法を「スケジューリ
ング」と言います。
今回教材で使っているtron系を始め、多くのRTOSで使用されているスケジュー
リング方式に、「優先度ベーススケジューリング」と「プリエンプティブスケ
ジューリング」があります。

● スケジューリングとプリエンプティブスケジューリング
多くのRTOSでこのふたつのスケジューリング方式が採られています。その特徴
を見てみましょう。

・「優先度ベーススケジューリング」
  1)最も高い優先度を持つタスクが実行されます。
  2)優先度の高いタスクが実行している間は優先度の低いタスクは実行できま
    せん。

・「プリエンプティブスケジューリング」
  1)優先度の低いタスク実行中に優先度の高いタスクが実行可能になると優先
    度の高いタスクへの切替が起こります。

「プリエンプティブスケジューリング」は「優先度ベーススケジューリング」
を前提にしたスケジューリング方式になります。
上記のふたつスケジューリングに従うとすると、その時々の実行可能状態のタ
スクの中で、最も優先度の高いタスクのみが実行される事になります(優先度の
低いタスクが実行中であってもプリエンプティブスケジューリングによって高
優先度のタスクに処理が切り替わります)。この辺が汎用OSのスケジューリング
とは大きく違うところです。

● なぜ優先度ベースでプリエンプティブスケジューリングなのか
まず、RTOSなしのシステムを考えてみましょう。ふたつの処理A,Bがあるとしま
す。
例えば、Aの処理はシリアル通信受信後の処理、Bの処理はA/D変換後に実行すべ
き処理なんかだと想像してください。RTOSを使用しない場合、A,B処理を実際に
実行する為のイベントループを作成して、H/W割り込みハンドラからそれらの処
理のトリガを掛ける、というような構造にすることが多いと思います。これだ
と何か不都合があるのでしょうか?

<RTOSを使用しない場合の例> イベントループ
while(TRUE) {
    /* is_workAはH/Wの割り込みハンドラでTRUEにされる */
    if (is_workA) {
        is_workA = FALSE;
        doWorkA(); /* Aの処理を行う */ 
    } 
    /* is_workBはH/Wの割り込みハンドラでTRUEにされる */ 
    if (is_workB) {
        is_workB = FALSE;
        doWorkB(); /* Bの処理を行う */
    }
}
実行トリガが掛かって処理を終えるまでの時間を応答時間と定義すると、上の
例の場合、Aの処理は、Bの処理が終わるまで待たされる可能性があり、Aの応答
時間がBの処理時間に依存することになります(同様に、Bの応答時間もAの処理
時間に依存します)。こういった依存関係が生じてしまうと、リアルタイム性の
設計がしづらくなります。

これをRTOSを利用すると次のようになります。

<RTOSを使用する場合の例>

/**
 * TASK A 優先度を高く設定
 *
 */
TASK(A) {
    doWorkA(); /* Aの処理を行う */
}

/**
 * TASK B 優先度を低く設定
 *
 */
TASK(B) {
    doWorkB(); /* Bの処理を行う */
}

この場合は処理がタスクに閉じ込められています。タスクの実行はRTOSがして
くれます、例えば、Bの処理中にAの実行トリガが掛かってタスクAが実行可能状
態になるとタスクAの優先度がタスクBより高いため、即座にタスクBからタスク
Aへ処理の切替が起こり処理Aが実行されます。Aの処理が終わり、タスクAが完
了するとタスクBに処理が戻りBの処理が再開されます。このようなシーケンス
となるため、Aの応答時間がBの処理時間に依存することはなくなり、リアルタ
イム性を保証しやすくなります。タスクに優先度を持たせることと、プリエン
プション可能ということがリアルタイム性の設計を容易にしてくれる訳です。

● さいごに
では実際に動かして・・・といきたかったんですが、紙面の関係で今日はここ
までです。次回は実際に動かしてRTOSの動きを体感してみようと思います。

では、それまでさようなら。(藤井)
_______________________________________________________________________
この記事への評価にご協力をお願いします。
URLをクリックして、「ご協力ありがとうございました」のメッセージがご使用
のブラウザに表示されれば投票完了です。
良かった:
/community/object_ml/estimate?vol=E0016-06&choice=0
普通:
/community/object_ml/estimate?vol=E0016-06&choice=1
イマイチ:
/community/object_ml/estimate?vol=E0016-06&choice=2

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

今週は「もらって嬉しいお土産は?」のホントのところ。
夏休み明けの職場には帰省や旅行された方からのお土産がたくさん・・・なん
てことも多いのではないでしょうか。旅先でお土産を選んでくださった、その
気持ちだけでも嬉しいですよね。今までもらって嬉しかった、また、この先も
らいたいお土産は、なんですか?

  名物の食べ物
     /special/kininaru/vote?vol=258&choice=0
  地酒
     /special/kininaru/vote?vol=258&choice=1
  ご当地グッズ
     /special/kininaru/vote?vol=258&choice=2
  お土産話
     /special/kininaru/vote?vol=258&choice=3
  何もいりません
     /special/kininaru/vote?vol=258&choice=4
  それは秘密です。
     /special/kininaru/vote?vol=258&choice=5
  ちょっと語らせて!
     詳細をこのメールに返信ください!!

アンケート結果はオブジェクト倶楽部サイト上にて公開します。お楽しみに。
なお、前号「防災グッズ、用意してる?」の結果は公開中。ぜひご覧下さい。
⇒/special/kininaru/vol257/PlonePopoll_results2

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

こんにちは、編集人のナガタユウコです。今年の夏は例年より過ごしやすい気
がして油断していたら、すっかり夏バテしてしまいました。食事や睡眠に気を
つけているつもりなのですが、倦怠感が消えません。どうしたものか・・・。
みなさまもご自愛くださいね。また、いい夏バテ解消法がありましたらぜひ教
えてください!

今週の強引な一言
*** 風に順いて呼ぶ(ことわざ) ***
風上で呼ぶとよく聞こえるように、他の力を借りて事をなすたとえ。
自分の力だけではちょっと及ばないかも、というとき。可能であれば、他の力
を借りてしまいましょう。他力本願はダメですが、他の力や勢いに乗ることで
物事の成功事例を作ると、次回からは自分の力だけで成功できるようになるか
も!
出典参考:故事ことわざ辞典 東京堂出版
(ナガタユウコ)

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