お知らせ+活動記録+たわごと

HP と Twitter を補完するとともに、互いの密接な連携を図るため、本ブログを開設した。三位一体を目指す。情報提供、広報活動、教育・啓蒙活動の一環として、肩の力を抜き、冗長性を廃し、簡にして要を得た文章を書くよう心がける。
<< March 2017 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 >>
 
MOBILE
qrcode
PROFILE
無料ブログ作成サービス JUGEM
 
Parallels Desktop 10 + Windows 8.1 における RIETAN-FP・VENUS システムのインストールとアンインストール
科学技術人材育成事業 Nanotech CUPAL の「NIMS 先端計測技術入門コース」における RIETAN-FP・VENUS システムの実習用にノート型 Windows マシンを数台購入した。あいにく講師である自分は Windows 用ノート PC を持ち合わせていない。一向に食指が動かないのである。そこで、1月に購入したばかりの MacBook Pro Retina ディスプレイモデルに仮想化ソフトウェア Parallels Desktop 10 と Windows 8.1 をインストールし、それで間に合わせることにした。余剰気味のハードウェアリソースを有効活用しようというわけだ。Parallels Desktop 10 が Yosemite 用に最適化されているというのも魅力的だった。

ところが、その仮想環境上で RIETAN-FP・VENUS システムのインストーラー Install_RIETAN_VENUS.bat を右クリックして管理者権限で実行すると、ソフトウェアの保存先である C:¥Program Files フォルダ以下へのアクセスが拒否されてしまい、RIETAN_VENUS フォルダなどがコピーできなかった。Install_RIETAN_VENUS.bat が管理者権限抜きでコマンド プロンプトを起動するため、C:¥Program Files 以下にアクセスする権限がないのが原因だ。Uninstall_RIETAN_VENUS.bat も同様に機能しなかった。

紆余曲折を経た末、ようやくその原因が明らかになった。配付 zip ファイルを OS X 用 Firefox でダウンロードし、解凍して得た Windows_versions フォルダを OS X の管理下にあるフォルダに置いたままインストール/アンインストールしていたのが不適切だったのである。筆者は普通、ネットからファイルを /Users/(ユーザー名)/Downloads フォルダにダウンロードし、そこで解凍する。Parallels Desktop + Windows 8.1 では、そのフォルダの絶対パスは ¥¥psf¥Home¥Downloads¥ となり、C ドライブ外とみなされてしまうのである。RIETAN-FP・VENUS システムはインストーラ/アンインストーラも含め、原則として C ドライブ上で実行するよう設計されている。

結局 Windows_versions フォルダを C:¥Users¥(ユーザー名)¥ の下に移動してからインストール/アンインストールすることにより、トラブルは完全に解消した。

これと関連してくれぐれも注意すべきなのは、エクスプローラーのナビゲーションペインで「ローカルディスク (C:)」(仮想 C ドライブ) 以下の階層に置かれたフォルダ内で解析することだ。迂闊に「PC」直下の Documents フォルダなどから下の階層に降りていくと、入力ファイル hoge.ins の絶対パスが ¥¥psf¥Home¥... (OS X での ~/... に相当) となり、RIETAN-FP や ORFFE などのプログラムを起動するバッチファイルが正常に動かなくなる。hoge.ins を右クリックしてプロパティを選んだとき、絶対パスが C:¥ で始まっていれば大丈夫だ。

Windows 用 RIETAN-FP・VENUS システムは gnuplot を自分でインストールせずに済むという利点を持つ。Jedit X よりは [RIETAN], [Plot], [ORFFE] などのボタンが備わっている秀丸エディタを利用する支援環境の方を好む人もいるだろう。また Parallels Deskotp 10 は Yosemite 用に最適化されているため、オーバーヘッドによる応答性の低下が減っている。仮想マシン上で動く RIETAN-FP・VENUS システムもそう悪くはない。

本エントリーが、やむを得ずバーチャル Windows マシン上で RIETAN-FP・VENUS システムを使う Mac ユーザーの参考になれば幸甚である。
OS X 用 RIETAN-FP・VENUS 統合支援環境のマクロメニュー項目にショートカットを割り当てる
キーボード・ショートカットをカスタマイズするユーティリティー Menu Master が進化の歩みを止めて以来、OS X 用 RIETAN-FP・VENUS 統合支援環境では、マクロメニューに登録した RIETAN や lst2cif などのメニュー項目に割り当てたショートカットが無効になるというトラブルに散々悩まされてきた。同支援環境の土台となっているテキストエディター Jedit X と「キーボード」(システム環境設定)で定義したショートカットとの互換性が完全でないためである。対症療法的に RIETAN → RIETAN-FP、lst2cif → LST2CIF というように項目名を試行錯誤で変えてみたりしたものの、完璧からは程遠かった。

最近、 無料ユーティリティー BetterTouchTool(BTT)を使えば、同支援環境上でショートカットが完全無欠に機能することを知った。「キーボード」で定義したショートカットや各アプリケーション固有のショートカットよりも BTT で設定したものの方が優先されるので、安定性は盤石だ。具体的な手続きは次の通り:
  1. ツールバー上の [Simple] ボタンをクリックし、さらに [Basic Settings] ボタンをクリックする。
  2. General で「Launch BetterTouchTool on startup」をチェックする。
  3. システム環境設定 > セキュリティとプライバシー > プライバシー > アクセシビリティ でカギをクリックして解除し、BTT をチェックする。
  4. メニューバー上の BTT のアイコンをクリックし、Preferences を選ぶ。
  5. 左側の Select Application: で [+] をクリックし、Jedit X を追加する。
  6. Select Application: で Jedit X を選択し、「Keyboard」タブをクリックする。
  7. 右下の [+ Add New Shortcut] ボタンをクリックする。
  8. Keyboard Shortcut を入力する。
  9. Trigger Predefined Action: > Controlling Other Applications > Trigger Menu Bar Menu-Item。
  10. 「マクロ;RIETAN」や「マクロ;ORFFE」というようにセミコロンで区切ってマクロメニューのメニュー項目(アクション)を指定し、[Save] ボタンをクリックする。
ちなみに、私は次のキーボード・ショートカットを頻用マクロメニュー項目に割り当てている:
control-R: RIETAN
control-G: Graph
control-O: ORFFE
control-L: lst2cif
control-V: VESTA
control-M: Manual

もちろんキーボード・ショートカットだけでなく、マウスやトラックパッドを使ったジェスチャー・ショートカットも指定できる。注意すべきなのは、誤って BTT を終了するとショートカットが使えなくなってしまうことだけだ。

最新版 BTT は OS X 10.7 以降専用である。64ビット Mac OS X 10.6 Snow Leopard 用 BTT 0.939 はここからダウンロードできる。5年前の古い OS でも安定に動く。

ここでは支援環境に関連する設定の説明に留めるが、BTT は Magic Mouse や Trackpad のジェスチャーへの対応のような便利な機能も含んでいる。一度でも使ったら手放せなくなる神ソフトといって過言でない。
VESTA に関する論文の被引用数の年次変化
無料三次元可視化システム VESTA に関する Journal of Applied Crystallography の論文 (Momma & Izumi, 2008; Momma & Izumi, 2011) の合計被引用数/年が昨年まで過去六年の間、どのように推移してきたかを Scopusで調査し、RIETAN の場合と同様の gnuplot スクリプトによりグラフ化してみた。


ご覧の通り、被引用数/年は猛烈な勢いで伸び続けてきた。自己引用が無視できるほど少ないにもかかわらず、望外の実績を挙げている。CrystalMaker や Diamond などの商用ソフトを上回る高機能、軽快な動作、詳細な英文ドキュメンテーションの賜だろう。VESTA は三つのプラットフォーム(Windows, OS X, Linux)に対応し、大学における科学教育(たとえば「RIETAN-FP・VENUS システムの化学教育への応用」を参照のこと)に広く活用されている上、メンテナンスや改良が継続している。最大の強みは海外での普及に弾みが付いていることだ。この勢いなら、2014年の被引用数が600に迫るのは間違いあるまい。三次元グラフィックの知識とスキルさえあれば開発できる単なる可視化プログラムとはいえ、国産科学技術プログラムとしては類い希な超弩級の実績である。

廃墟ページ「VICS・VEND 秘話 ― 道楽の果て」に書き散らしたように、前身の VICS, VEND, PRIMA, ALBA 時代から結晶学と電子状態計算との橋渡しを目指して可視化システムを開発してきたが、近年、後者の割合がじわじわ増えつつある。とりわけ密度汎関数法による平面波基底・擬ポテンシャル法電子構造計算プログラム VASP のユーザーは今や VESTA を定番ソフト視している。VASP の Web サイトでは VESTA が resource の一つとして紹介されているほどだ。VICS・VEND の初期バージョン以来、超有名プログラム VASP を重視し、野口祐二氏(東大)に全面協力して頂いてその出力ファイルの入力をサポートしてきたのが功を奏したのだろう。

一方、MEM・MPF 解析で決定した電子・散乱長密度を等値曲面として可視化したイメージを使用している論文は、さほど多くない。結晶学者としては少々寂しいが、比較的マイナーな研究手段なので致し方あるまい。

ご存じのように、VESTA で作成したイメージを論文や解説の図として使う場合は VESTA に関する論文の引用を義務づけている。どのバージョンを使おうが第二論文 (Momma & Izumi, 2011) を引用するよう要請しているが、第一論文 (Momma & Izumi, 2008) を引用する人が未だに後を絶たないのは誠に遺憾である。故意か過失かは不明だが、文献を引用しない輩も多数いる。嘆かわしい限りだ。

なお、VESTA 開発の中心人物である門馬綱一君は、このほど「結晶構造・電子/核密度・結晶外形等の三次元可視化システムの開発と鉱物学への応用」という業績により日本鉱物科学会の応用鉱物科学賞を受賞した。VESTA 関連では、すでに坂根弦太、門馬綱一、泉 富士夫が「DV-Xα法計算支援環境、教育用分子軌道計算システム eduDV、三次元可視化システム VESTA の開発と普及活動」という業績題目で DV-Xα 研究協会功績賞(2008年)も受賞している。VESTA の性能と有効性は学会からも高い評価を得ていると言ってよかろう。
RIETAN-FP v2.4 のリリース
RIETAN-FP・VENUS システム配布ファイルの Web ページで公開している Windows・OS X 用 RIETAN-FP・VENUS システム配布ファイルを更新しました(Windows_versions_20140723.zip と OS_X_versions_20140723.dmg)。RIETAN-FP が v2.4 にメジャーチェンジし、それに伴いひな形ファイル hoge.ins の後半におけるデータ入力の順序が激変しました。

主な変更点は次の通りです:
  1. Fortran 90/95の文法に則り、ソースコードをかなり書き換えた(「Fortran 90/95 化の推進」参照)。
  2. プリプロセッサ New Tink によって hoge.ins を前処理する直前にフェイルセーフ用チェックルーチン CHECK_LINE_LENGTH を実行するよう改善した。 CHECK_LINE_LENGTH では、ユーザー入力ファイル hoge.ins において注釈を除く入力データが80桁を越している行を検出すると、当該行の番号を含むエラーメッセージを出した後、プログラムが終了する。
  3. ハイブリッド・パターン分解では、最終 Rwp を少しでも下げるために、個別パターンフィッティング終了後に Marquardt 法による Le Bail 解析を1サイクルだけ実行するよう変更した。
  4. hoge.ins の後半で入力するデータの順序をかなり変更し、従来より自然な流れになるよう気を配った。FapatiteJ.ins の冒頭の冗長な文言は削除した。
  5. グラフ作成ソフトを指定する変数 NPAT はパターンフィッティング、シミュレーションに共通の一箇所で指定するよう改めた。
  6. hoge.ins 中の INDREF に対するコメントを修正した: XREF → xrefl, YREF → yrefl。
  7. グラフ作成、フーリエ解析、MEM 解析のための入力データを hoge.lst に出力するようにした。
  8. Gnuplot+ps2pdf が出力したグラフファイル(「RIETAN-FP への gnuplot の導入」参照)を拡大表示すると線が太すぎるように見えるため、線幅のデフォールト値を DLW = 4.00 と MUL = 1.00 に減らした。
  9. hoge.lst 末尾の反射リストに出力される Code を三文字に増やした。分割プロファイル関数を用いたとき、部分プロファイル緩和を適用した反射では最初の文字が '*' となる。X線回折に限り出力される二番目の文字 '+' と '-' はそれぞれフリーデル対における hkl と -h-k-l 反射を示す。
  10. 拡張分割擬フォークト関数をプロファイル関数として用いた場合でも、hoge.lst 末尾の反射リストに部分プロファイル緩和を適用した反射の半値全幅(FWHM)を数値計算で求め、分解能 Δd/d とともに出力するようにした。
  11. MPF における出力ファイル hoge.lst 中の反射リストで Kα2 反射の結晶構造因子の絶対値 |F(crys)| がすべてゼロになるという不具合を取り除いた(MPF には影響しないバグ)。
  12. NMODE = 4のときは、強制的に NC = 0, NDA = 0, NFR = 0, NMEM = 0 と設定するようにした。
  13. マルチコア CPU を装着した PC が普及したことを考慮し、hoge.lst の最後に出力される CPU time を Elapsed time(経過時間)に変更した。
  14. OS X 用 RIETAN-FP・VENUS 統合支援環境のマクロメニューで [Graph] を選んで解析・シミュレーションパターンを gnuplot で 表示する際、グラフが Jedit X のウィンドウの背後に隠れるようになっていたため、二つの bash スクリプト graph.command を修正した。
  15. Windows 用配付ファイルに同梱している gnuplot を安定版の v4.6.5 に、Ghostscript を最新版の v9.14 に変更した(「RIETAN-FP への gnuplot の導入」参照)。
  16. TeX Live 2014がインストールされた Windows 機でも、ps2pdf が出力した PDF ファイル hoge.pdf のマージンを pdfcrop で切り取れるようにした。
RIETAN-FP v2.4は Intel Visual Fortran Composer XE for Windows 2013 SP1 (Update 3) あるいは Intel Fortran Composer XE for OS X 2011 (Update 13) でビルドしました。OS X 版を古いコンパイラでビルドしたのは、最新版コンパイラの使用は共役方向法による Tl2223 のリートベルト解析を発散させることが判明したためです。時代の趨勢を鑑みて OS X 用 RIETAN-FP は64ビット専用アプリケーションとしました。手元不如意のため32ビット CPU 機を使わざるを得ないという方は、私にご連絡ください。

今回のバージョンアップに費やした手間は半端でありませんでした。単純なサブルーチンを内部副プログラム化し、多数のループを FORALL 文や部分配列などを使用して書き改め、RIETAN-FP の核心部分(三つの非線形最小二乗エンジン)にまで手を入れ、hoge.ins における入力順序をドラスティックに変更するという大規模な改訂でした。慎重を期すために、当分の間、これまでの配付ファイル(4月7日に公開した Windows_versions.zip と OS_X_versions.dmg)もダウンロードできるようにしておきます。ドキュメンテーション(documents.zip 中の PDF ファイルの改訂)については、来週に着手します。

RIETAN-FP v2.33以降では mcz という裏技が楽しめます。実際には RIETAN-FP 自体の機能でなく、grep と gsed を駆使したシェル芸を披露しているだけですが。本年三月以降、6回に及ぶ私の講演を聴講された方は mcz の正体をご存じでしょう。もともとは名工大の学生が RIETAN-FP に親しみを覚えてほしいという願望から追加した珍機能でしたが、事志と違って学生たちが引いてしまい、一向に使ってくれません。mcz についてマニュアルに追記し、ホームページやブログで言及するのを控えている理由は簡単 ––– 恥ずかしくて、人目に晒すには忍びないからです。それがいかなる技なのかが気になって仕方ないという方は、質問メールをお送りいただけば、こっそり教えます。唖然とするにちがいありません。

拙作ソフトのメンテナンスと改良は完全なボランティア活動でなく、スポンサーからの援助を必要としています。もちろん寄付は大歓迎です。RIETAN-FP v2.33のスポンサーは PANalytical でしたが、v2.4では物質・材料研究機構の量子ビームユニットに変わりました。7月2日の粉末回折情報館(新着情報)にも記したように、拙作プログラムは物質・材料研究のための基幹ソフトウェアとして瞠目すべき実績を挙げてきました。私は7月以降、同ユニットから今後も RIETAN-FP・VENUS システムを改良・維持・管理するよう正式に委託されていることを最後に申し添えておきます。
RIETAN-FP の Fortran 90/95 化の推進
少し前から RIETAN-FP のソースコードを少しずつ Fortran 90/95 の文法で書き改めつつある。具体的には
  1. モジュール
  2. 種別値関数 KIND
  3. CONTAINS 文
  4. 内部副プログラム
  5. Fortran 90 流の宣言文
  6. 構造体
  7. FORALL 構文
  8. DO 構造名
  9. 部分配列間の代入と演算
  10. 配列と文字列の動的割り付け
  11. ポインタ
などをできるだけ使うよう心がけている。上記の機能をすべて活用している例として、v2.33へのバージョンアップ時に新たに書き起こしたコードを公開しよう。PANalytical XML フォーマットの粉末X線回折強度データファイル(UTF-8コード)の入力部分だ。

SUBROUTINE PANALYTICAL_XML(NUNIT, DEG, XINT, NTOTAL, STEP)
! Read angles and intensities from hoge.int with the PANalytical XML format
! NUNIT: Unit number of intensity data file, hoge.int.
! DEG: 2-theta/degree.
! XINT: Diffraction intensities.
! MAXP: Maximum number of intensity data.
! NTOTAL: Total number of diffraction intensities.
! STEP: Step width/degree.
USE CONSTANTS, ONLY: S_P, D_P
USE INT_PARAMETERS, ONLY: NP ! Maximum number of intensity data
IMPLICIT NONE
TYPE RANGE
    REAL(D_P) :: MIN, MAX, STEP
END TYPE
INTEGER, INTENT(IN) :: NUNIT
INTEGER, INTENT(INOUT) :: NTOTAL
REAL(S_P), DIMENSION(NP), TARGET, INTENT(INOUT) :: DEG
! A temporary array to store intensities in a block
REAL(S_P), DIMENSION(:), POINTER :: XINT_BLOCK
REAL(S_P), DIMENSION(NP), INTENT(INOUT) :: XINT
REAL(S_P), INTENT(INOUT) :: STEP
INTEGER :: IS, IE, IBLOCK, IOS, J
TYPE(RANGE) :: DEGREES
CHARACTER(:), ALLOCATABLE :: LINE ! A temporary character-type variable

ALLOCATE (CHARACTER(100000) :: LINE)
DO
    READ(NUNIT, '(A)') LINE
    IF (INDEX(LINE(1:80), '<positions axis="2Theta" unit="deg">') > 0) EXIT
END DO
DEGREES%MIN = TWO_THETA(1)
DEGREES%MAX = TWO_THETA(2)
XINT_BLOCK => DEG ! A pointer is associated with a target
ALLOCATE (XINT_BLOCK(NP))
XINT_BLOCK = 0.0 ! Initialize array XINT_BLOCK
XINT = 0.0 ! Initialize array XINT

BLOCK_NO: DO IBLOCK = 1, 1000
    DO
        READ(NUNIT, '(A)', IOSTAT = IOS) LINE
        IF (IOS < 0) EXIT BLOCK_NO
        IS = INDEX(LINE(1:80),'<intensities unit="counts">')
        IF (IS > 0) EXIT
    END DO
    IS = IS + 27
    IE = INDEX(LINE,'</intensities>')
    IF (IE == 0) THEN
        WRITE(6,'(//11X,A)') 'The length of a string, LINE, to '// &
        'store diffraction intensities is too short'
        STOP
    END IF
    LINE(IE:) = '/' ! Only a slash is put after the last intensity
    ! Read intensities in between '<intensities unit="counts">' and '/'
    SELECT CASE (IBLOCK)
    CASE (1)
        READ(LINE(IS:IE), *) (XINT_BLOCK(J), J = 1, NP)
        DO J = NP, 1, -1
            IF (XINT_BLOCK(J) /= 0.0) EXIT
        END DO
        NTOTAL = J
    CASE DEFAULT
        READ(LINE(IS:IE), *) (XINT_BLOCK(J), J = 1, NTOTAL)
    END SELECT
    XINT(1:NTOTAL) = XINT(1:NTOTAL) + XINT_BLOCK(1:NTOTAL)
END DO BLOCK_NO

DEALLOCATE(LINE)
DEALLOCATE(XINT_BLOCK)
WRITE(6,'(/11X, A, I3)') 'Number of data blocks =', IBLOCK - 1
DEGREES%STEP = (DEGREES%MAX - DEGREES%MIN)/DBLE(NTOTAL - 1)
FORALL (J=1:NTOTAL) DEG(J) = SNGL(DEGREES%MIN + DBLE(J - 1)*DEGREES%STEP)
STEP = SNGL(STEP_DP)

CONTAINS
FUNCTION TWO_THETA(IPOS)
INTEGER, INTENT(IN) :: IPOS
REAL(D_P) :: TWO_THETA
READ(NUNIT, '(A)') LINE
IF (IPOS == 1) THEN
    IS = INDEX(LINE, '<startPosition>') + 15
    IE = INDEX(LINE, '</startPosition>') - 1
ELSE IF (IPOS == 2) THEN
    IS = INDEX(LINE, '<endPosition>') + 13
    IE = INDEX(LINE, '</endPosition>') - 1
END IF
READ(LINE(IS:IE), *) TWO_THETA
END FUNCTION TWO_THETA
END SUBROUTINE PANALYTICAL_XML

PANALYTICAL_XML は拡張可能なマーク付け言語 XML 形式のタグ付きデータから2θ、カウント、データ点数をそれぞれ DEG, XINT, NTOTAL に収めるサブルーチンである。マルチブロックのファイルに対応しており、複数のファイルに分かれている強度データは単一ファイルにマージすれば、処理できる。

頻用する定数はモジュールで定義しておき、使用する定数を USE ..... ONLY で指定する。サブルーチンや関数副プログラムの引数をすべて記述し、しかも入力 (IN)、出力 (OUT)、入出力 (INOUT) を明記する。IMPLICIT NONE を選択し、変数はすべて明示的に宣言しているが、その部分はさすがに冗長に見える。

一ブロックのカウントが一行に記録されているため、LINEという長さ100000の文字変数を動的に割り付け、使い終わった時点で割り付けを解除するようにした。また、ポインタを使って未使用の配列 DEG の領域を配列 XINT_BLOCK に流用している。

単一のプログラム単位内でしか使わない内部副プログラムは、FUNCTION TWO_THETA のように CONTAINS 文以下に置く。平屋を二階建てに増築するだけでも、主従の関係が理解しやすくなる。CONTAINS に続く内部副プログラム中の引数と宣言文が激減し、ソースコードがコンパクトになるという利点もある。メインプログラムから呼び出しているサブルーチンの大半は、内部サブルーチンとして書き直した。

今後新たに追加するルーチンでは、上記10個の文を存分に活用していくつもりだ。
次世代型石炭火力発電の研究開発に貢献する VESTA
夢の扉+「石炭火力発電の CO2 を減らしたい!」(TBS、4月6日放送)中で、日立製作所 日立研究所の鈴木朋子さんをリーダーとする次世代型石炭火力発電用触媒開発チームが触媒反応のシミュレーションに VESTA を全画面表示で利用している様子が報じられた:







Jedit X Standard/Plus 上で RIETAN-FP・VENUS 統合支援環境を使うためのノウハウ
OS X 用の RIETAN-FP・VENUS 統合支援環境Jedit X(オリジナル版)の使用を前提に構築した。したがって、同支援環境は Mac App Store で販売している Jedit X StandardJedit X Plus との互換性を欠いている(注)。オリジナル版の追加購入を避けるには、RIETAN-FP・VENUS システムのインストール終了後に次の手続きを踏めばよい。
  1. 仮想ディスク中の RIETAN_VENUS/scripts_Jedit フォルダ中の設定ファイル ContextMenu.plist と MacroMenu.plist を ~/Library/Application Support/Jedit X Standard フォルダ、あるいは ~/Library/Application Support/Jedit X Plus フォルダにコピーする。
  2. 仮想ディスク中の RIETAN_VENUS/scripts_Jedit/*.scpt(拡張子が scpt の AppleScript ファイル)を ~/Library/Application Support/Jedit X Standard/scripts フォルダ、あるいは ~/Library/Application Support/Jedit X Plus/scripts フォルダにコピーする。
  3. RIETAN_VENUS/commands_common/*.command 中の文字列 "Jedit X" を "Jedit X Standard"、あるいは "Jedit X Plus"に変える。
要するに、アプリケーション名 "Jedit X" をすべて "Jedit X Standard"、あるいは "Jedit X Plus" に変えるに等しい。中身は実質的に同じなのだから、Artman21はアプリケーション名を変えないでほしかった。

(注) Jedit X Rev.2.42以降から、MacApp Store 版 Jedit X Plus あるいは Jedit Standard の利用者であればオリジナル版 Jedit X Rev.2 をライセンス登録なしに利用できるようになった。
RIETAN-FP への gnuplot の導入
RIETAN-FP v2.3 以降では gnuplot でグラフを作成できる。たとえば gnuplot 5.0.3 の OS X バージョンの場合、次の手続きを通じてビルドする。
  1. Gnuplot の本家から gnuplot-5.0.3.tar.gz をダウンロードし、解凍する。
  2. gnuplot-5.0.3 というディレクトリーが生成する。
  3. 「ターミナル」を起動し、gnuplot-5.0.3 ディレクトリーに降りる。
  4. 旧バージョンをインストール済みの場合はアンインストールする: sudo make uninstall⤵
  5. ./configure⤵
  6. make⤵
  7. sudo make install⤵
  8. /usr/local/bin ディレクトリーに 実行形式プログラム gnuplot が生成する。
将来 gnuplot がバージョンアップしたならば、上記の手続きにおいてバージョン番号 "5.0.3" を新たな番号(たとえば "5.0.4")に変えればよい。上記の作業には Xcode が必要となる。Mac ユーザーで Xcode をインストール済みの方は少数派だろうから、もう一つの選択肢、すなわち OS X 用パッケージマネージャー Homebrew によるインストールを推奨したい。Homebrew のインストールは簡単だ。そのホームページに記載されている通り、ターミナルで
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
をコピー&ペーストして実行すればよい。引き続き
brew install gnuplot
というコマンドを入力すれば、gnuplot パッケージがインストールされ、/usr/local/bin フォルダに実行形式プログラム gnuplot のエイリアスが生成する。

/usr/local/bin フォルダにエイリアスが生成しない場合は、ターミナルで
ln -s /usr/local/Cellar/gnuplot/5.0.3/bin/gnuplot /usr/local/bin/gnuplot
と入力してシンボリックリンクを作成すればよい。ただしバージョン番号 "5.0.3" は最新のバージョン番号に変えなければならない。

OS X に付属する sed は、gnuplot が出力する PostScript ファイル中の文字列を置換する際、x 軸のラベル「2θ/°」を入力するや否やコケてしまうため、robust な gsed に差し替えることにした。OS X の sed の評判が芳しくないのは知っていたが、これほど役立たずだとは思わなかった。一方、GnuWin の sed 4.2.1はしっかり役目を果たしてくれる。

OS X 用配付ファイルに同梱されている gsed は64ビットコードである。32ビット CPU の Mac を科学技術計算に利用している人は今や少数派であり、今後ますます減っていくのは確実なので、64ビット版だけ配付すれば十分だろう。どうしても32ビット機で gnuplot を使いたいという方は、Homebrew により gnu-sed パッケージを自前インストールし、/Applications/RIETAN_VENUS/commands_common ディレクトリーに実行形式ファイルをコピーすればよい。ただし、Xcode がインストール済みの場合に限る。

Windows 用配付ファイルには gnuplotGhostscript とともに同梱する。RIETAN-FP との組み合わせでは安定に動作している。Ghostscript は gnuplot が出力する PostScript ファイルを PDF ファイルに変換するのに必要となる。なお、OS X には類似のコマンド pstopdf が標準で付属している。パイプが使えるという点で pstopdf の方が優れている。

Windows の場合、install-tl-windows.exe をダウンロード・実行することにより TeX Live を C:¥texlive フォルダにインストールする。C:¥texlive¥年号¥bin¥win32(年号の例: 2013)が自動的にパス指定される。コマンドプロンプト窓で tlmgr-gui と入力すれば、GUI を通じて最新ファイルへ更新できる。OS X 用 TeX Live のインストーラについては MacTeX 以外の選択肢は無きに等しい(「Mac 用TeX による英文・和文のタイプセット」参照)。

OS X と Windows のいずれにおいても、gnuplot によるグラフ作成は RIETAN-FP・VENUS 統合支援環境から実行する。OS X では [Graph] のショートカットを押し、Windows では [Plot] ボタンをクリックするだけで直ちにグラフィックデータを記録した PDF ファイルが表示される。

RIETAN-FP 2.3へのバージョンアップは、大学で教授職を拝命している教育者としての活動だということを付言しておく。学生との歓談の間に着想したアイデアを実現したからである。リートベルト解析パターンはリートベルト解析を研究手段の一つとして用いた論文中の図としてしばしば使われるので、その出来映えは非常に重要である。Gnuplot はフリーソフトウェアであるだけでなく、スクリプトファイル *.plt に少々手を加えると見かけ(たとえば線やシンボルの色と縦方向の位置)を自分好みに最適化できるという利点を持つ。今回は、すべての学生が高品質のグラフを手軽にプロットできるようにすることを目指すとともに、シェル芸人としての腕を磨くために奮闘した。フリーソフトウェアの徹底活用により効率的かつ高度な機能を実装できることを認識してもらえるに違いない。RIETAN-FP を利用したリートベルト解析の実習にも役立つはずだ。

未だに RIETAN-2000 を惰性で使っておられるユーザーが多いが、今回のバージョンアップは RIETAN-2000 にとどめを刺すのではなかろうか。この際、ぜひ乗り換えていただきたい。

シェル芸能活動は、これで打ち止めではない。来年は、超有名フリーソフトウェアを活用した魅力的な新作ユーティリティーを製作する。そのデモンストレーションは訴求効果が高く、鮮烈な印象を与えるだろう。教育用コンテンツとしても役立つと期待している。

(C) 2017 ブログ JUGEM Some Rights Reserved.