2013-12-30

AlgDesign: 実験計画/解析用ツールについて考える

R の実験計画用パッケージを探してみたら、いろいろなパッケージが利用できるようでビックリです 1。常日頃から情報収集のアンテナをしっかり張っておけば良かったと反省しました。

中でも AlgDesign - Algorithmic Experimental Design は、D-, A-, I-最適計画 (Optimal Design 2) を生成する機能があるとのことで、個人的に大いに興味を持ちました。なぜなら、最適計画を RSM(応答曲面法)に活用した、エンジニアリングのための実験計画/解析ツールを作りたい、それが自分がコンピュータのプログラミングに取り組む最も基本的なモチベーションになっているからです。

以前、このブログの記事で [3] のような記事を書いたのもその一環でした。その当時は D-optimal を生成するルーチン作成については目処が立っていたので、手こずりそうな Contour Map(等高線図)の作成に手を付けたのですが、R が利用できるとなれば話は別です。遅々として進まない Project Ammonite [4] のコアとなる計算部分を R に任せられるのであれば、GUI の部分を再検討し、一気にそこそこ動作するぐらいまで進められそうです。

AlgDesign は、Fedora の RPM パッケージでは提供されていないので、install.packages("AlgDesign") でインストールしました。マニュアルoptFederov コマンドに記載されていた例を参考にして、3 水準 4 因子、二次モデル、16 回の実験について、D-optimal, A-optimal, I-optimal それぞれの計画を作成してみました。

> library("AlgDesign")
> dat <- gen.factorial(3, 4, varNames = c("A", "B", "C", "D"))
> dat
    A  B  C  D
1  -1 -1 -1 -1
2   0 -1 -1 -1
3   1 -1 -1 -1
...
(途中省略)
...
79 -1  1  1  1
80  0  1  1  1
81  1  1  1  1
> desD <- optFederov(~quad(A, B, C, D), dat, nTrials=16, eval=TRUE)
> desD
$D
[1] 0.4307032

$A
[1] 4.821205

$I
[1] 19.77447

$Ge
[1] 0.524

$Dea
[1] 0.404

$design
    A  B  C  D
1  -1 -1 -1 -1
8   0  1 -1 -1
9   1  1 -1 -1
13 -1  0  0 -1
21  1 -1  1 -1
25 -1  1  1 -1
30  1 -1 -1  0
34 -1  1 -1  0
38  0 -1  0  0
46 -1 -1  1  0
50  0  0  1  0
54  1  1  1  0
55 -1 -1 -1  1
63  1  1 -1  1
75  1 -1  1  1
79 -1  1  1  1

$rows
 [1]  1  8  9 13 21 25 30 34 38 46 50 54 55 63 75 79

> desA <- optFederov(~quad(.), dat, nTrials=16, eval=TRUE, crit="A")
> desA
$D
[1] 0.4038767

$A
[1] 3.930381

$I
[1] 18.78988

$Ge
[1] 0.418

$Dea
[1] 0.249

$design
    A  B  C  D
1  -1 -1 -1 -1
6   1  0 -1 -1
7  -1  1 -1 -1
13 -1  0  0 -1
21  1 -1  1 -1
26  0  1  1 -1
31 -1  0 -1  0
38  0 -1  0  0
41  0  0  0  0
45  1  1  0  0
46 -1 -1  1  0
57  1 -1 -1  1
62  0  1 -1  1
64 -1 -1  0  1
78  1  0  1  1
79 -1  1  1  1

$rows
 [1]  1  6  7 13 21 26 31 38 41 45 46 57 62 64 78 79

> desI <- optFederov(~quad(.), dat, nTrials=16, eval=TRUE, crit="I")
> desI
$D
[1] 0.4239604

$A
[1] 4.373075

$I
[1] 18.55387

$Ge
[1] 0.367

$Dea
[1] 0.178

$design
    A  B  C  D
4  -1  0 -1 -1
9   1  1 -1 -1
11  0 -1  0 -1
19 -1 -1  1 -1
24  1  0  1 -1
25 -1  1  1 -1
30  1 -1 -1  0
43 -1  1  0  0
50  0  0  1  0
55 -1 -1 -1  1
59  0  0 -1  1
61 -1  1 -1  1
69  1  0  0  1
75  1 -1  1  1
76 -1  0  1  1
81  1  1  1  1

$rows
 [1]  4  9 11 19 24 25 30 43 50 55 59 61 69 75 76 81

> 

例として full-factorial で候補の条件行列を用意しておいて、そこから最適な組み合わせを、それぞれの基準で探索したのですが、呆気ないぐらい即座に計算結果が返ってきます。

実験計画/解析ツールを作るのであれば、このパッケージを利用しない手はありません。いや R をコアに据えるのであれば、もう必要な機能は全て揃っています。あとはどんな GUI を用意するかが、どれだけ多くのユーザーに使ってもらえるツールになるかを左右するといっても過言ではありません。あまりにも突然、長年欲しかった機能を備えたパッケージに巡り会えてしまいました。

(冷静になって、これからの取り組み方を考える必要があるので)さしあたって、AlgDesign の Fedora 用 RPM パッケージを作りながら、どういう計算をしているのか調べてみようと思います。

  1. CRAN Task View: Design of Experiments (DoE) & Analysis of Experimental Data
  2. Optimal design - Wikipedia, the free encyclopedia
  3. bitWalk's: Contour Map - 5 月連休の成果
  4. bitWalk's: 【備忘録】JavaFX で複数のウィンドウを扱う


RSM について、参考になるようなスライドがないか探しましたが、解析に RSM を利用していた論文しかありませんでした。


JMP による DOE (RSM) の説明です。

こちらは SAS Institute 社による JMP 11 / DOE (RSM) のプレゼンテーションです (Discovery Summit 2013, Sept 9 - 13 at Grand Hyatt San Antonio)。

2013-12-29

【備忘録】tkrplot (TK Rplot)

tkrplot は、Tk ウィジェットの中に R グラフィックを配置するライブラリです。

昔、R のプログラムを GUI 化するためにこういうライブラリを探していたことがありましたが見つからず諦めていました。ところが先の記事でも書きましたように R を使うニーズがあり、調べている時に偶然見つけましたので、備忘録としてまとめておきます。

tkrplot は Fedora 20 の RPM パッケージでは提供されていませんので、R 上で install.packages のコマンドを使って直接インストールします。

Linux の環境において、R のパッケージを install.packages のコマンドでインストールする場合は、Windows 版のようにバイナリパッケージがダウンロードされるのではなく、ソースがダウンロードされて、それをコンパイルしてビルドすることでインストールされます。そのため Linux 側では事前に R-devel をインストールしておく必要があります。

gcc でコンパイルできる環境が整っており、R-devel がインストールされていることを確認して R を起動します。

パッケージをダウンロードするサイトを選択します。

ソースがダウンロードされると、コンパイルされてインストールされます。

このパッケージ tkrplot の場合は、問題なくコンパイルされましたが、パッケージによってはコンパイル中にエラーが出てインストールできない場合もあります。そういう時は、エラーメッセージを理解して、必要な処置を講じる必要があります。この記事の最後に書いていますが、RPM で提供されているパッケージであれば、最初からそちらを利用した方が無難です。

下記は tkrplot のマニュアルに記載されているサンプルを実行した例です。

library("tkrplot")
tt <- tktoplevel()
bb <- 1
img <- tkrplot(tt, function() plot(1:20,(1:20)^bb))
f <- function(...) {
  b <- as.numeric(tclvalue("bb"))
  if (b != bb) {
    bb <<- b
    tkrreplot(img)
  }
}
s <- tkscale(tt, command=f, from=0.05, to=2.00, variable="bb", showvalue=FALSE, resolution=0.05, orient="horiz")
tkpack(img, s)

tkrplot は、ちょっとした R のプログラムを GUI 化する際に重宝しそうです。


Fedora 20 で提供されている R のパッケージ

ちなみに、Fedora において、R で始まる R のパッケージを yum で探すときには、名前が単純であるため意外と手こずります。通常は下記のようにして探しています。

$ yum search "R-" | grep "^R"

この方法だと、i686 のパッケージが混じります。参考までに以下に重複を省いたリストを下記に示しました (Fedora 20)。

R-Biostrings-devel.x86_64 : Development files for R-Biostrings
R-BufferedMatrix-devel.x86_64 : Development files for R-BufferedMatrix
R-IRanges-devel.x86_64 : Development files for R-IRanges
R-Rsamtools-devel.x86_64 : Development files for R-Rsamtools
R-Rsolid-devel.x86_64 : Development files for R-Rsolid
R-bigmemory-devel.x86_64 : Development headers for R-bigmemory
R-preprocessCore-devel.x86_64 : Development files for R-preprocessCore
R-ALL.noarch : Data of T- and B-cell Acute Lymphocytic Leukemia
R-AnnotationDbi.noarch : Annotation Database Interface
R-BSgenome.noarch : Infrastructure for Biostrings-based genome data packages
R-BSgenome.Celegans.UCSC.ce2.noarch : Caenorhabditis elegans genome (UCSC Release ce2)
R-Biobase.x86_64 : Base functions for Bioconductor
R-BiocGenerics.noarch : Generic functions for Bioconductor
R-Biostrings.x86_64 : String objects representing biological sequences
R-BufferedMatrix.x86_64 : A matrix data storage object method from bioconductor
R-BufferedMatrixMethods.x86_64 : Microarray Data related methods that utlize
R-DBI.noarch : Database interface module for R
R-DynDoc.noarch : Functions for dynamic documents
R-GeneR.x86_64 : R for genes and sequences analysis
R-GenomicFeatures.noarch : Tools for making and manipulating transcript centric
R-GenomicRanges.x86_64 : Representation and manipulation of genomic intervals
R-IRanges.x86_64 : Low-level containers for storing sets of integer ranges
R-RCurl.x86_64 : General network (HTTP/FTP) client interface for R
R-RM2.noarch : Revenue Management and Pricing for R
R-ROC.x86_64 : Utilities for ROC
R-RODBC.x86_64 : An ODBC database interface for R
R-RSQLite.x86_64 : SQLite database interface for R
R-RScaLAPACK.x86_64 : An interface to perform parallel computation on linear
R-RUnit.noarch : R Unit test framework
R-Rcompression.x86_64 : R Package for in-memory compression
R-Rsamtools.x86_64 : R interface to samtools
R-Rsolid.x86_64 : Quantile normalization and base calling for second generation
R-XML.x86_64 : Tools for parsing and generating xml within r and s-plus
R-abind.noarch : Combine multi-dimensional arrays
R-acepack.x86_64 : ACE and AVAS methods for choosing regression transformations
R-affy.x86_64 : Methods for Affymetrix Oligonucleotide Arrays
R-affydata.noarch : Affymetrix data for demonstration purpose
R-affyio.x86_64 : Tools for parsing Affymetrix data files
R-biglm.x86_64 : Bounded memory linear and generalized linear models
R-bigmemory.x86_64 : Manage massive matrices in R using C++, with support for
R-biomaRt.noarch : R Interface to BioMart databases
R-bitops.x86_64 : Functions for Bitwise operations
R-caTools.x86_64 : Tools: moving window statistics, gif, base64, roc auc...
R-car.noarch : Companion to Applied Regression package for R
R-combinat.noarch : R routines for combinatorics
R-core.x86_64 : The minimal R components necessary for a functional runtime
R-core-devel.x86_64 : Core files for development of R packages (no Java)
R-devel.x86_64 : Full R development environment metapackage
R-fibroEset.noarch : ExprSet for karaman et al. (2003) fibroblasts data
R-hdf5.x86_64 : Interface to the NCSA HDF5 library
R-hgu133acdf.noarch : HG-U133A.cdf data file
R-hgu95av2cdf.noarch : HG_U95Av2.CDF data file
R-hgu95av2probe.noarch : Probe sequence data for microarrays of type hgu95av2
R-java.x86_64 : R with Fedora provided Java Runtime Environment
R-java-devel.x86_64 : Development package for use with Java enabled R components
R-lmtest.x86_64 : Testing Linear Regression Models for R
R-mAr.x86_64 : R module to evaluate functions for multivariate AutoRegressive
R-maanova.x86_64 : Analysis of N-dye Micro Array using mixed model effect
R-msm.x86_64 : Multi-state Markov and hidden Markov models in continuous time
R-multcomp.noarch : Simultaneous inference for general linear hypotheses R
R-multtest.x86_64 : Multiple hypothesis testing library from Bioconductor
R-mvtnorm.x86_64 : Multivariate normal and T distribution R Package
R-nws.noarch : R functions for NetWorkSpaces and Sleigh
R-pls.noarch : Multivariate regression by PLSR and PCR
R-preprocessCore.x86_64 : A collection of pre-processing functions
R-qcc.noarch : SQC package for R
R-qtl.x86_64 : Tools for analyzing QTL experiments
R-qvalue.noarch : Q-value estimation for false discovery rate control
R-rlecuyer.x86_64 : R interface to RNG with multiple streams
R-rtracklayer.x86_64 : R interface to genome browsers and their annotation
R-sandwich.noarch : Robust Covariance Matrix Estimators
R-sciplot.noarch : Scientific Graphing Functions for Factorial Designs
R-statmod.x86_64 : Statistical modeling
R-systemfit.noarch : Simultaneous Equation Estimation R Package
R-timeDate.noarch : Rmetrics - chronological and calendrical objects
R-tkWidgets.noarch : Widgets to provide user interfaces from bioconductor
R-waveslim.x86_64 : R module, Basic wavelet routines for 1,2 and 3-dimensional
R-wavethresh.x86_64 : R module, Software to perform wavelet statistics and
R-widgetTools.noarch : Bioconductor tools to support tcltk widgets
R-xtable.noarch : Export tables to LaTeX or HTML
R-zoo.x86_64 : Z's ordered observations for irregular time series


2013-12-27

R の統合開発環境 (IDE) RStudio

R を久しぶりに使うニーズがあったので、Eclipse のプラグイン StatET を使ってみましたが、いまいちうまく使いこなせなかったので、前から気になっていた RStudio を Fedora 上にインストールしてみました。

RStudio には、デスクトップ版と、ブラウザを使って利用するサーバ版がありますが、今回はデスクトップ版をダウンロードしています (v0.98)。デスクトップ版は Windows, Mac OS X, Linux (deb, rpm) 用のパッケージがダウンロードできます。

まだ十分には使いこなしているとは言えませんが、気に入った機能を挙げます。

  • いくつもプロットしたものを出力形式やサイズを指定してエクスポートできる。
    • 定型の集計をするときに、サイズを決められるのが嬉しい。RStudio でできるということは、知らなかっただけで、コマンドレベルでもできるということですが。。。。
  • ? で(ブラウザに表示されず)マニュアルがすぐ見れる。
    • いくつも画面が残らないので意外と重宝。
  • R Markdown (knitr) の機能と連携している。
  • (IDE として当然ですが)コーディングのためのさまざまなサポート機能がある(評価中)。

前述の StatET も使いこなせるよう再トライして、比較してみようと考えています。RStudio はとても使いやすそうなのですが、その一方で、開発環境をあれやこれやとむやみに増やしたくない事情もあるからです。

昔、半導体製造のコンサルをする米国の会社に勤めていたことがありましたが、その時には Insightful 社の S-PLUS を使って大量のデータ解析をしてました。S-PLUS は S 言語の商用パッケージで、R と高い互換性がありました。当時は、便利な開発環境がなくてデバッグに苦労したことを覚えています。その S-PLUS を開発、販売していた Insightful 社は 2008 年に TIBCO 社に買収されました。昔の S-PLUS は Spotfire に名前を変えたように見て取れるのですが1Wikipedia によると、どうやら現在では R を計算するエンジンに利用しているようです。オープンソース強し、です。ただ、日本ではまだ S-PLUS 8.2Jが販売されているので2、一体どうなっているのか謎です。

  1. What's New in Version 8.1, Product Name Changes
  2. データ解析/統計解析ソフトウェア S-PLUS: マーケティング、品質管理、医療情報への導入実績

2013-12-13

Linux と プリンタ:Epson PX-105 の使用感

Windows と Linux を一台の PC で切り替えて使うようになってずいぶん経ちましたが、ここ数年はすっかり Linux だけで用が足りるようになってしまいました。そこで Fedora 20 のリリースを機に Windows との切り替えを止めて、自宅のメイン PC を Linux 専用に使うことにしました。

Linux だけの環境で唯一の不安はプリンタです。

自宅でのプリンタの需要はそれほどありませんが、それでも年末になると年賀状印刷に必要となります。ここ何年かは持ち運びに便利な Canon PIXUS iP90v を使っていましたが、64bit 版 Linux 対応のプリンタドライバがリリースされておらず Fedora (x86_64) からうまく印刷ができなかったので、印刷をするときだけ Windows に切り替えて使っていました。そう、Windows は 12 月のこの時期しかほとんど使っていなかったのです。当然、これだけの目的に新しい Windows へバージョンアップすることは馬鹿げているので、Windows Vista を最後に Windows は購入していません。

一方、持ち運びに便利だと思って買ったこのプリンタも、外へ持ち出して使ったことは皆無でした。

ちなみに(ベータ版の)Fedora 20 をインストールした状態で CUPS は Canon PIXUS iP90v を認識しますが、右の設定ではテスト印刷もまともにできません。

いろいろと試行錯誤をして使えるようにする余地はありましたが、時間的な余裕が無いことから、諦めが速いことは良くないと思いつつも使うことを断念してしまいました。

そんなわけで Linux で安心して使えるプリンタが欲しいと思い、あれこれ品定めをした結論が Epson PX-105 でした。

選定のポイントは以下の三点です。

  1. 消耗品が入手しやすいこと
    • Linux に対応したプリンタと言えば HP(ヒューレットパッカード)という印象がありますが、いかんせん大都市に居住していないので、今すぐインクカートリッジを買いたいという時にどうにもならない可能性が高く、最初から除外。
    • ブラザーのプリンタにも興味があったのですが、個人用途でのランニングコストなどを考えると、国内大手のキャノンやエプソンを選択する方が無難と判断しました。
  2. 機能はそこそこで良いので安価なインクジェットプリンタ
    • Amazon.jp で安価なプリンタを調べ、Canon PIXUS IP2700 (3,845円) と EPSON PX-105 (6,358 円) に絞りました。
  3. Linux(64bit) 用の ドライバが、メーカーから公開されていること
    • PIXUS iP2700 用プリンタドライバは、Debian/RedHat 系のパッケージが公開されていましたが 32bit 用のみでしたので、この時点でボツとしました。
      • もちろん、32bit/64bit 両方のライブラリをインストールしておけば、32bit 版のプリンタドライバでも対応できますが、ディスク領域を無駄に使っているようで、そのような方針は取っていません。
    • EPSON Download Center で Linux 用のプリンタドライバが入手可能か容易に調べられます。ざっと見てみたところ Debian/RedHat 系パッケージの対応ばかりか、32bit/64bit 用によく対応しているように思え、PX-105 についても同様でしたので、このプリンタに決めて Amazon.jp に発注。12/8 日曜日のことでした(翌日配達されました)。
    • プリンタドライバは、下記からダウンロードして、プリンタを接続する前に予めインストールしておきました。

PX-105 は安価にも関わらず、USB 接続の他に有線/無線 LAN 接続にも対応している優れものです。

不覚にも、最初 USB ポートがどこにあるか判らず、やむなくプリンタ用にルータのポートを空けて有線 LAN でセットアップしましたが、何の問題もなくプリンタを認識し、テスト印刷も無事できました。

その後、マジマジとプリンタ本体を眺めると、なんで気が付かなかったのかというところ、プリンタ本体側面に USB ポートがあったので、セットアップをし直しました。

さらにその後、考え直して、ヤマダ電機で 8 ポートのルータを買ってきて LAN ポート不足を解消して、ネットワークプリンタに戻しました。

印刷が始まる時の音が結構大きいと思いますが、気になるのはそのぐらいで、今のところ大変満足しています。Linux で使っている時の、プリンタのインクの減り具合がどのようになるかが今後の興味になります。


2013-11-30

Fedora LXDE 版 Live メディアを試す

Fedora 20 のリリースまであと僅かですが、自分の環境では待ちきれずに、fedup でアルファリリースのフェーズからアップグレードして既に使い始めています。この fedup はアップグレードの際に大変便利なのですが、使わないパッケージの掃除はもちろんやってくれません。したがって、興味のあるパッケージのテストを繰り返すと、どんどん使用しなくなったパッケージが蓄積されていき、ストレージの領域を無駄に消費していきます。

そこで、たまにはクリーンインストールをしなければと思い立ち、Live メディアでクリーンインストールしました。

まず、下記のサイトから Live メディアのイメージをダウンロードします。ここでは Fedora LXDE 版 Live メディア を使用しています。

ダウンロードした iso イメージを、livecd-toolslivecd-iso-to-disk を使って、USB メモリに書き込みます。インストールされていない場合には、下記のようにしてインストールします。Fedora 以外で起動可能なライブイメージを USB メモリに書き込む場合は、英語ですが末尾の参考サイト [1] を参考にしてください。

# yum install livecd-tools
読み込んだプラグイン:langpacks
依存性の解決をしています
--> トランザクションの確認を実行しています。
...
(省略)
...

以下に、ダウンロードした iso イメージを livecd-iso-to-disk を使って USB メモリに書き込む例を示しました。

# /usr/bin/livecd-iso-to-disk /home/bitwalk/ダウン ロード/Fedora-Live-LXDE-x86_64
-20-Beta/Fedora-Live-LXDE-x86_64-20-Beta-5.iso /dev/sdb1
Verifying image...
/home/bitwalk/ダウンロード/Fedora-Live-LXDE-x86_64-20-Beta/Fedora-Live-LXDE-x86_6
4-20-Beta-5.iso:   ccbacd90fb14d212acfdd53e1fe726b4
Fragment sums: c279cc74636e2655ae696234f484832b55bd231655144778913a6c1f8911
Fragment count: 20
Press [Esc] to abort check.
Checking: 100.0%

The media check is complete, the result is: PASS.

It is OK to use this media.
/dev/sdb1 is mounted, please unmount for safety
# umount /dev/sdb1
# /usr/bin/livecd-iso-to-disk /home/bitwalk/ダウン ロード/Fedora-Live-LXDE-x86_64
-20-Beta/Fedora-Live-LXDE-x86_64-20-Beta-5.iso /dev/sdb1
Verifying image...
/home/bitwalk/ダウンロード/Fedora-Live-LXDE-x86_64-20-Beta/Fedora-Live-LXDE-x86_6
4-20-Beta-5.iso:   ccbacd90fb14d212acfdd53e1fe726b4
Fragment sums: c279cc74636e2655ae696234f484832b55bd231655144778913a6c1f8911
Fragment count: 20
Press [Esc] to abort check.
Checking: 100.0%

The media check is complete, the result is: PASS.

It is OK to use this media.
There are differences between boot sector and its backup.
This is mostly harmless. Differences: (offset:original/backup)
  3:53/4d, 4:59/53, 5:53/44, 6:4c/4f, 7:49/53, 8:4e/35, 9:55/2e, 10:58/30
  , 90:fa/33, 91:fc/c9, 92:31/8e, 93:c9/d1, 94:8e/bc, 95:d1/f4, 96:bc/7b
  , 97:76/8e, 98:7b/c1, 99:52/8e, 100:06/d9, 101:57/bd, 102:8e/00, 103:c1/7c
  , 104:b1/88, 105:26/4e, 106:bf/02, 107:78/8a, 108:7b/56, 109:f3/40
...
(省略)
...
  , 498:00/0d, 499:00/0a, 505:00/ac, 506:00/cb, 507:00/d8
  Not automatically fixing this.
Copying live image to target device.
squashfs.img
    664,952,832 100%    4.46MB/s    0:02:22 (xfr#1, to-chk=0/1)
osmin.img
          8,192 100%    0.00kB/s    0:00:00 (xfr#1, to-chk=0/1)
Updating boot config file
Installing boot loader
Target device is now set up with a Live image!

あとは、BIOS の設定を編集して、起動時に USB メモリを最初に読みに行くようにして、USB メディアから Fedora を起動します。


VirtualBox の仮想環境へインストール

USB メモリから起動してインストールした様子はハードコピーを取れなかった部分ですので、VirtualBox にインストールする例を紹介します。なお、VirtualBox でインストールする場合は、わざわざ USB メモリに書き込むまでもなく、ダウンロードした iso イメージを CD/DVD ドライブに指定して使用しています。

Fedora Live を起動した直後の画面です。

Fedora の起動が始まって、しばらく待ちます。

デスクトップが表示されたら、画面左上の "Install to Hard Drive" のアイコンをダブルクリックします。

インストーラ画面になるので、インストール時の言語とキーボードに日本語を選択して「続行 (C)」ボタンをクリックして次へ進みます。

Timbuktu って何?ですが、運命を受け入れて(「運命を受け入れます (I)」ボタンをクリックして)次に進みましょう。

文字通り トンブクトゥ (Timbuktu) = 黄金郷なのか、ソフトウェアの Timbuktu を指すのか…。

システムの「インストール先 (D)」アイコンをクリックして、インストール先の設定をします。

インストール先を確認して「完了 (D)」ボタンをクリックします。

インストールオプションはデフォルトの自動設定のままで「続行 (C)」ボタンをクリックします。

「インストールの開始 (B)」をクリックして次へ進みます。

インストールに並行して、「root パスワードの設定 (R)」 と、「ユーザーの作成 (U) 」を行います。

まず root のパスワードを設定して「完了 (D)」ボタンをクリックします。単純過ぎるパスワードを設定した場合、確認のため「完了 (D)」ボタンを二回クリックする必要があります。

つづいて「ユーザーの作成 (U)」 を行います。

ユーザー作成に必要な情報を入力して「完了 (D)」ボタンをクリックします。

インストールが完了するまでしばし待ちます。

インストールが完了すると「完了する(Q)」ボタンが表示されますので、クリックして終了します。

インストールが終了しても、自動的に再起動にはなりません。

再起動して GRUB の画面が正常に表示されるかを確認してください

ログインの画面が表示されれば、ほぼ間違いなくインストールは成功でしょう。ログインしてパッケージを最新のものに更新しましょう。



参考サイト

[1] How to create and use Live USB - FedoraProject
Fedora のインストーライメージを USB メモリに書き込む方法が紹介されています。


2013-11-02

「Windows」の歴代バージョンを写真で振り返る - CNET Japan

Windows 1.0 が発売されたのは 1985 年の 11 月のこと、いつの間にかもう 28 年も経っています。こうやって Windows の歴史を振り返ることをブログの記事にするなんて、つくづく自分も歳を取ったものだと嫌気もさします。しかしモバイル端末の台頭でいよいよ PC 全盛の時代に陰りが見えてきているので、下記の CNET Japan の記事を読みながら、自分の Windows との関わりを交えて、その歴史を振り返ってみたいと思います。

2015 年 11 月に「Windows 30 年の歴史を振り返る」なんていうタイトルで記事を書きそうですが、その時は、また違う視点でまとめることでしょう。

 

偉大な先駆者 ~ Macintosh ~

この記事を書くために情報を整理していてあらためてびっくりさせられたのが、Apple の先見性です。1984 年に登場した Macintosh は、モノクロとは言え、既に下記のようなデスクトップ画面を実現していたのです。Windows の歴史はまだ始まっていませんでした。

MS-DOS と Windows 1.0

幸運なことに、私は Windows 1.0(1985 年 11 月 18 日発売、日本では 1986 年 12 月に発売された)を大学の研究室で目にしています。ただ、NEC 9801 / MS-DOS 3.1 上で動いた Windows は、まるでオモチャのプログラムの様に映り、強く興味を惹くものではありませんでした。

なお、ここで紹介している歴代 Windows のスクリーンショットは Wikipedia (English) に掲載されている画像を利用させていただいています。

当時は Borland の Turbo Pascal に熱中していた時期でしたので、グラフィックスを実現する対象は、もっぱら CRT のフルスクリーン上でした。今の様な GUI を伴ったプログラム開発なんて想像を越えたことでした。

ただ、名古屋大須のアメ横に陳列されていた初期の Macintosh を眺めて、MS-DOS とはあまりにも違う、モノクロ画面とは言え、洗練されたそのスタイルに強い憧憬を抱いていました。

スティーブ・バルマー氏が、当地で Windows 1.0 の宣伝に出演していたのを知ったのはずいぶん後のことです。

MS-DOS と Macintosh の普及

Windows 2.0(英語版は 1987 年 12 月 9 日にリリース)についてはまったく接点がありませんでした。

大学を卒業して就職した会社では、NEC の PC-9800 シリーズが全面的に導入されていて、当時は共用の MS-DOS のパソコン上で、Lotus 1-2-3 でデータの集計と作表作図、一太郎で報告書をせっせと作成していたのを覚えています。シャットダウンはスイッチで電源オフできた時代でした。パソコンは MS-DOS でしたが、(半導体)工場の測定装置には MS-DOS が採用されているものが少なく、いろいろな OS が使われていました。

そう言えば、会社に一台だけあった IBM PC/AT には X-Stat という統計解析のソフトウェアがインストールされていて、その後のエンジニア人生における実験やデータ解析のアプローチ形成に多大な影響を受けたのですが、そのソフトウェアは生き残ってはいません。Amazon などに古い書籍を確認できるのみです 1.

1990 年にはいって、職場で Macintosh がどんどん使われるようになり、これからは Macintosh 全盛なのかもとぼんやり思っていました。当時のデータの解析には、もっぱら VAX Station 上のアプリケーションを使うようになり、Macintosh はほとんど VAX の端末エミュレータと報告書作成のためのワープロと化してしまっていました。今考えると勿体ない使い方をしていたように思えますが、当時のワークステーションとパソコンの処理能力の差は大きく、大量のデータ処理をパソコン上で処理させるのは効率が悪い時代でした。職場では DOS/V 機と Windows 3.1 / NetWare が主流とはならず、NEC の PC-9800 シリーズと Macintosh が混在していました。

Windows for Workgroup 3.11

1994 年に米国サンノゼの本社 R&D(と言っても IT 業界ではなく、半導体デバイス・プロセスの研究開発です)に勤務するようになると状況は一変します。日本の子会社の混沌とした社内ネットワーク事情と異なり、オフィスの PC の OS は Windows for Workgroup 3.11 でほぼ統一されていました。そこで電子メールを本格的に使うようになりましたし、NCSA Mosaic や初期の Netscape Navigator を使い始めています。しかし、データを集計、解析するには PC の性能は不十分で、結局、SPARC Workstation / SunOS 上のアプリケーションを業務では使っていました。

当時、会社の IT 部門が Visual Basic で作成した GUI アプリケーションをはじめて目にしました。前述の通り SunOS 上の OpenWindows の GUI に慣れていたので、Visual Basic の貧相な GUI には大変失望しました。かと言って、SunOS を自宅まで持ち込むことはできません。Windows ばかりでなく、他の OS においても、つまりマルチプラットフォームで扱える GUI の開発環境が欲しいと考え、その探索を始めました。そう、ここから、現在まで続く私の GUI プログラミング環境探しの旅が始まったのです。

自宅の PC に Linux / Slackware をインストール、Tcl 7.4 / Tk 4.0 のβ版をコンパイルして使い始めたのはこの頃です。当時、自宅の電話回線から会社のネットワークに入ることができたので、必要なソースを FTP を介して入手することができました。

Windows 95 の衝撃

Windows 95(コードネーム Chicago)が、1995 年 8 月 25 日に Fry'sCompUSA などで大々的に発売されました。何が衝撃だったかと言えば、パソコンの OS ごときにここまで騒ぐか、と思われるような世間の熱狂ぶりでした。OS は不安定でしたが、刷新された GUI に惹かれ、熱心に使い方を覚えました。日本語版の Windows 95 がその年の 12 月にサンフランシスコで購入できることを知り、発売日は会社を休んでサンフランシスコまで車を運転して購入しています。

米国だと Visual Basic 4.0 が安価に購入できたので試してみましたが、どうも自分には GUI の出来が馴染みませんでしたので Visual Basic は諦め、Visual C++ を購入して Tcl 7.5 / Tk 4.1 のコンパイルをするようになりました。結局、安定した動作と豊富な開発環境が無料で入手できた Linux を手放すことができず、PC を買い換えてもずーっとマルチブートの環境のまま、現在に至っています。

ウィキペディアの Windows 95 の説明 2.の中に、次の一節があります。

Windows 95 は先行してリリースされていた Windows NT に比べると安定性や信頼性に劣り、技術的には不完全なものであった。しかし、従来の Windows 3.1 よりも使い勝手が改良され、Windows 95 はユーザー・市場のニーズをよく読んでそれに応えるという現実的な解を提供し、マーケティングの成功といえた。これにより Windows 95 はデスクトップ OS の事実上の標準となり、PC-9800 シリーズ、FM TOWNS などの x86 ベースの独自プラットフォームのパソコンは PC/AT 互換機に吸収されていった。

Windows 95 は、技術的には Macintosh を越えられなかったが、ビジネスでは成功を収めたと言えます。

Windows 98, 98SE, Me と Windows 2000

1997年に帰国後、後継の OS が発売される度に近所のパソコンショップへ出かけて購入する様になってしまいました。1998 年 8 月 25 日にリリースされた Windows 98、1999 年 9 月 10 日にリリースされた Windows 98 Second Edition (SE) とアップグレードしましたが、OS としての安定性の悪さに嫌気が差し、これをを最後に Windows 2000(2000 年 2 月 18 日リリース)に乗り換えました。

ところが、親が購入した PC に Windows Millennium Edition. Me(2000 年 9 月 23 日リリース)が搭載されていたので、結局 Windows 95 系の OS にはすべて触れることになりました。なお Windows Me は Windows 9x 系として唯一標準で USB の大容量記憶装置をサポートしています。

かねてから Windows NT 系には興味があったのですが、なかなか試すことができませんでした。Windows 2000 からようやく安定した Windows 環境を利用できるようになりました。

Windows XP

2001 年 11 月に一般向けにリリースされた Windows XP(コードネーム Whistler)によって、これまで毎年の様にアップグレードのために出費をしていた状況に終止符を打つことになりました。2008 年 6 月 30 日をもって出荷は終了しましたが、会社の PC はデスクトップもノートも(次の PC の交換で Windows 7 になることが決まっているものの)いまだに Windows XP です。Windows のデフォルトのテーマ(ビジュアルスタイル Luna)には慣れることができずに、クラシックスタイルを使っています。

2014 年 4 月 8 日に更新プログラムの提供が打ち切られますが、発売開始より約 12 年半にも及ぶという、大変息の長い OS になりました。

Windows Vista

Windows Vista(コードネーム Longhorn)の発売は、遅れに遅れて一般向けに発売されたのは 2007 年 1 月 30 日のことでした。当初は購入予定がなかったのですが、ある事情で急遽 PC を買う必要に迫られ、2007 年の暮れに購入した PC に付いてきました。購入後、すぐにパーティションを分けて Linux をインストールしましたが、この PC はなんと今も現役です。Windows Vista の使用頻度が極端に少なくなってしまって、年末に年賀状を印刷するぐらいです。世間的には評判が良くない OS ですが、あまり使わないため、可もなく不可もない OS です。いい加減、新しい PC に替えたいのですが、今度は Linux での印刷手段を確保しておき(つまりちゃんと印刷できるプリンタを選んでおいて)Linux だけをインストールすることになるでしょう。

ちなみに、Windows Vista の延長サポート終了日は 2017 年 4 月 11 日です。

Windows 7

2009 年 10 月 22 日に一般にリリースされた Windows 7 については、会社の(自分用でない)ノート PC で使う程度なので、未だにじっくり使い込んでいない OS です。Vista よりは頻繁に接していますが、可もなく不可もない OS です。Windows 7 の延長サポート終了日は 2020 年 1 月 14 日です。

Windows 8, 8.1

2012 年 10 月 26 日に一般向けにリリースされた Windows 8 と 2013 年 10 月 18 日にリリースされた 8.1 に至っては店頭で触っているくらいで、もう語る資格はありません。今後、PC を新調する際に OS がプリインストールされているものを選べば、詳しく調べる機会もありそうですが、Windows を使うために PC を購入することはなさそうです。

ウィキペディアの Windows 8 の説明 3.の中に、次の一節があります。

従前のバージョンではパーソナルコンピュータでの利用が想定されていたのに対して、本バージョンでは Modern UI の採用、Windows Store の同時リリース、Microsoft アカウント や SkyDrive によるクラウドサービスへの対応強化、ARM に対応した Windows RT の同時リリースなど、タブレット端末で先行して多く採用されていた iOS や Android を強く意識したものとなっている。

どうやら、マイクロソフトは競合との戦いに一石を投じましたが、そこでは従来のデスクトップ PC がもはや重視されていない雰囲気です。

個人的には ARM プロセッサ向けの Windows RT に大変興味があるのですが、ハードウェアのサードパーティが追従せずに孤立無援でマイクロソフトが販売している Surface の今後の動向が気になります。なお延長サポートが終了する予定は 2023 年 1 月 10 日になっています。

 

こうして振り返ってくると、PC の OS としてデファクトスタンダードの座を勝ち取った Windows は、PC の衰退と共に存在感がどんどん薄れていくように思えます。そもそも OS がその存在を主張するのはおかしいのです。一方で Windows でなければならないという分野が少なくなってきています。例えば自分の用途では、Windows 用のバイナリも Linux 上でクロスコンパイルしており、一般の Office 系用途も LibreOffice が利用できるので Linux があれば、事が足りるようになっています。ただ Linux を使うとプリンタで依然不自由を感じますが、そもそも印刷する需要が減ってきています。PC の周辺機器やマルチメディアの対応で Windows を使うメリットはまだありますが、ニーズの多様化が進み、かつては PC が主役で利用されてきた周辺機器も、モバイル端末を中心とした形態にシフトしてきています。負荷が高いサーバーとして担うコンピュータの役割は、クラウド技術の浸透などで今後も期待されますが、「パーソナル」な PC の需要は、頭打ちどころか減少していくことでしょう。

通常業務で必要な機能が Windows XP で済むのであれば、もはや新しい Windows は不要で、経営側の決断とサポートできる IT 部門のリソースさえあれば、Linux に移行しても業務を維持できると考えてよいでしょう。今 Windows がデスクトップ PC 用の OS として進もうとしている方向は、オフィスの業務では必ずしも必要な機能を実現する方向ではないと思います。世の中の業務の大半は昨日と変わらないルーチン業務で、革新的業務はそういったルーチン業務があってはじめて実現するものです。ルーチン業務の改善、変化もありますが、それは大抵の場合、ある程度ゆっくりしたペースで変わっていくものです。

Windows XP あるいは Windows 7 を Windows のひとつの完成形とみなすならば、そういう業務で使われる OS としてずっと生き残っていくことも重要ではないでしょうか。

Windows NT 互換 OS の ReactOS(この記事を書いている時点での最新リリースは 0.3.15 / May 30, 2013)の開発が進めば、こういった Windows の代替 OS の地位に躍り出るのでしょうが、そこまでの道程はまだ長いです。

Windows 95 のリリースの時には、確かにワクワクした何かを感じさせてくれました。マイクロソフトの次の一手は、そういうワクワク感を私たちに与えてくれるのでしょうか。

参考文献、サイト

  1. X-Stat: Statistical Experiment Design, Data Analysis, and Non-Linear Optimization (Demo Pkg.)
  2. Microsoft Windows 95 - Wikipedia
  3. Microsoft Windows 8 - Wikipedia

2013-10-14

【備忘録】after コマンド

Tcl/Tk で一定間隔で何かを処理させようと思ったときに after コマンドってどうやって使ったっけ?といつもマニュアルを見て考え込むので、備忘録として簡単なスクリプトにまとめました。今回は短くまとめることにこだわっています。

proc every {ms body} {eval $body; after $ms [info level 0]}
pack [label .l -bg white -textvariable now]
every 1000 {set ::now [clock format [clock seconds] -format %H:%M:%S]}

関連サイト

2013-10-13

OpenCOBOL が GNU Cobol になった!

TIOBE Programming Community Index によると、この記事を投稿した時点では、最も利用されているプログラミング言語の Top 20 ぎりぎりのところに COBOL がランクされています。

普段使用している PC とは直接にはあまり縁がないプログラミング言語ですが、基幹システムでは、いまだに COBOL で記述されているプログラムが稼働している場合があります。自分が勤めている会社でも、基幹システムは COBOL で記述されていて、これをオープンシステムへ移行させるのに IT 部門が頭を悩ませています。

FORTRAN や C/C++ のようなプログラミング言語は、科学技術計算に使うので、また、GNU のコンパイラが利用できることもあって比較的容易に PC で利用できますが、COBOL に関しては個人で簡単に利用できるようなプログラミング言語ではありませんでした。そんな COBOL と関わりを持ったのは、TinyCOBOL のプロジェクトへ Linux RPM のパッケージャとして参加してからです。

その後、ネットワーク応用通信研究所の西田圭介氏が TinyCOBOL プロジェクトからフォークして、OpenCOBOL プロジェクトを立ち上げましたので、こちらにもパッケージャとして参加しました。前述の様に、私は TinyCOBOL のプロジェクトに参加している側からプロジェクトがフォークするという場面に出くわして、しかもフォークしたのが日本人であったこともあり、貴重な場面を経験したと思っています。現実には、OpenCOBOL プロジェクトは 日本医師会が配布しているオープンソースの診療報酬計算ソフト「日医標準レセプトソフト」のための開発プロジェクトで、もともと自分の知らない所であらかじめ具体的なビジネスの目標を持っていたプロジェクトだったのでした。

西田氏は IPA 独立行政法人 情報処理推進機構の平成14年度 未踏ソフトウェア創造事業「未踏ユース」で成果を報告した後、しばらくして(メーリングリストを辿ってみると2004 年 10 月らしい)OpenCOBOL プロジェクトの管理を Roger While 氏に移管してしまいました。その辺のやりとりは、メーリングリストに残されていないので詳しくは判りません。また、この変更の中でいつの間にかプロジェクトのメンバーから削除されてしまっていたので、OpenCOBOL とはすっかり疎遠になってしまってしまいました。😅

さて、この OpenCOBOL は、COBOL 2002 標準に準拠することと、既存の商用 COBOL コンパイラとの互換機能を実現することを目標としている COBOL コンパイラです。OpenCOBOL は、COBOL プログラムを C 言語のコードに変換し、それを GCC でコンパイルします。フォーク元の TinyCOBOL は、C 言語に変換するのではなく、x86 のアセンブリ言語に変換するので、この違いが OpenCOBOL の最大の特徴です。つまり GCCフロントエンドとして使うことが初めから意識されていました。

ちなみに、OpenCOBOL の COPYRIGHT は、現在のところ、以下の様になっています。

Copyright (C) 2001-2009 Keisuke Nishida
Copyright (C) 2007-2012 Roger While

前述の、西田氏の成果報告の今後の課題 (5) において「開発したコンパイラが GCC の一部として日の目を見るのは、まだ先の話となりそうだ。」と述られていますが、ついに 2013 年 9 月 27 日に OpenCOBOL プロジェクトは GNU プロジェクトの一つとして認められ、今後 GNU Cobol と名前を変えることになるようです 2。それはリチャード・ストールマンから最初の GNU の声明が出された 1983 年 9 月 27 日からちょうど 30 年目にあたる記念すべき日でもありました [3]

ところで、もともと「日医標準レセプトソフト」のために開発された OpenCOBOL は、日本ではその後、独自の発展をしたようです。今回の GNU Cobol になるというニュースに関連した情報を調べるうちに判ったことなのですが、シフト JIS や円記号に対応した、日本特有のビジネス環境に対応できるようにカスタマイズされた opensource COBOL なるものがリリースされています(UTF-8 にも対応しているようです)[6] [7]

いやはや、ビジネスの前では Linus Torvalds のようにはいかないのですね [8]。青くさい話ですか?いやいや、かく言う自分はソフトウェア開発とは違う方面で生計を立てていますので、憧れがあるのです。

関連サイト

  1. オープンソースCOBOLコンパイラの開発
  2. GNU Cobol (formerly OpenCOBOL) / Discussion / GNU Cobol:State of the project
  3. 最初の声明 - GNUプロジェクト - フリーソフトウェアファウンデーション
  4. GNU Cobol (formerly OpenCOBOL)
  5. GNU Cobol (formerly OpenCOBOL) | Free Development software downloads at SourceForge.net
  6. ニュース - OSSコンソーシアムが「opensource COBOL」を無償公開、SJISや¥記号に対応:ITpro
  7. ダウンロード - OSSコンソーシアム
  8. それがぼくには楽しかったから - Wikipedia

ブログランキング・にほんブログ村へ bitWalk's - にほんブログ村 にほんブログ村 IT技術ブログ Linuxへ
にほんブログ村