むかしバージョン管理システムの本を書いたことがある私に「ソフトウェア構成管理」について教えて欲しい、という相談がありました。
私は基本的にソフトウェア開発で生計を立てているわけではなく、手段としてのソフトウェア開発における、技術と人の問題に興味を持ってきました。
直接のきっかけは「バグのないソフトウェアを目指して」というテーマで読みあさった一連の書籍です。
そしていまの私も、ソフトウェア構成管理については、昔の読書の知識からあまり進歩していません。
(さらに…)
タグ: linux
-
ソフトウェア構成管理
-
Panasonic と Vine
2008年1月に Panasonic Let’s Note でひどい目にあった。
乱暴に言えば、Windows Update がパソコンを壊したのだ。日本でしか売れていないマイナー機種は、もはや Microsoft で動作検証されてすらいない、という事実に気づくきっかけになった。
長年使い続けた Let’s Note が、気づいたら「高品質の代表」ではなくなっていたことに愕然とした。「グローバルでない製品を使うのはリスク」という認識を持つようになった。
2008年4月に Lenovo ThinkPad X300 に乗り換えた。(高かったが。。)中国メーカーに事業譲渡されて劣化したという意見もあるが、それを言うなら Apple 製品も製造は中国や台湾だ。本当はトラックポイントがお気に入りだったし、PgUp PgDn のあるキーボードが使いたかったので、乗り換えて満足した。
もちろん高品質と手放しで喜べたわけではなく、まず Windows XP にダウングレードしたあと、Muteボタンがうまく動かなくて苦労した。調べたらウイルスバスターとの互換性問題だった。(ウイルスバスターがガラパゴスだった)試したら Microsoft OneCare がよかったので、ウイルス対策ソフトの乗り換えを行った。(販売終了になってしまったのが残念だが)
今年の夏ごろから、バッテリーの故障とキーボードの故障に相次いで見舞われた。しかし、Lenovo は部品を注文して自分で取り替えればたいていのことはできるので、あまり悩むこともなく、時間は無駄にならなかった。
さすがに Let’s Note より重たいけれど、慣れてしまった。内蔵 DVD ドライブを使う機会がほとんどないので、セカンドバッテリに換装した。
SSD 64GB はちょっと物足りないが、逆に大事なデータをこまめにバックアップする習慣がついたから、必ずしも悪いとは言えない。それでも VMWare で Ubuntu を使うには少し足りないが。。。1440×900 の画面が使えるのはありがたい。
****
私が Let’s Note T1 に飛びついたのは 2003 年ごろで、当時は周りの人はみんなバイオノート派だったので珍しがられた。
いまや Let’s Note でない人を探す方が難しいが、Let’s Note 派の人が「原因不明のトラブル」に見舞われている率が去年くらいから高まっているように感じる。
私の職場でも「異常な温度上昇」「電源トラブル」などなど。
先日は私が座長をしていた学会のセッションで、自分の発表を始めようとしてプロジェクターにつないだ人が、突然 Let’s Note の電源が入らなくなった。おかげで10分くらい時間が無駄になった。けっきょくバッテリーを外して付け直したら復旧したのだが。
Twitter の kazuyo_k さんもデバイスドライバーの相性でそうとうお困りだった様子だが、私が去年1月に経験したトラブルのことを思い出すと、最近の Panasonic にいかにもありそうなトラブル、という気がする。
こうしてグローバルでない商品はいつのまにか腐っていくのだな、という実感を持っている。
****
すこし前に、ある人にGalateaの動作確認を頼まれてVine Linux 5の64bit版を仕方なく入れてみた。
そもそも1年前までGalateaはVine Linuxを動作対象にしていた。自分も日常的にVineを使っていた。Vineは「日本語環境が充実している」のが売りだった。日本語フォント、かな漢字変換システム、日本語の入力がちゃんとできる Emacs エディタや、日本語の論文作成ができるようにチューニングされた LaTeX などなど。
1.x の時代(10年前だ)には Linux はカーネルが 1.0 系だった。そもそも Linux そのものが「枯れていなかった」。NFSサーバを運用してみたらファイルがぶっ壊れて、仕方なく Solaris に戻したこともあった。サーバとして、デスクトップ環境として、まともに使えるようになったのは Vine 2.5 あたりからだった。商用版が発売され、日本ではそれなりに普及していたはずだ。
Vine 2.x, 3.x, 4.x とずっと使い続けた感想として、明らかにこの数年、Vineは「腐って」きた。3.x の時代には「日本語のフォントが間違っている」ことがあった(教授の名前の1文字だったので、とても困った)。開発者グループに連絡をしたがすぐには直してもらえず、仕方なく某商用 TrueType フォントに差し替えて使った。
昨年6月にはサーバの更新で Vine 4.2 を使おうとして、NIS サーバの設定ファイルにバグを見つけた。そのとき気づいた。「もう誰も Vine なんて使ってないんじゃないか」と。
ちょうど Ubuntu Linux が台頭しはじめていた。あちこちで「Ubuntu があれば Windows はいらない」と言われ始めるほど、高い完成度を誇り始めていた。
Ubuntuでは国際化されたバージョンに「日本特有のパッケージを追加して使う」という考え方になっている。コアの部分は世界中で使われ、不具合がないようにグローバルに検証されているのだ。
Linux カーネルの更新に1年に2回追従していた Ubuntu と異なり、Vine は(もともと「保守的」な開発方針であったため)カーネルが古すぎて新しいハードウェアで動かない、ということが当たり前だった。自分で差し替えることはできたが「だれも使っていない使い方」を試行錯誤するのは苦痛だった。
GalateaはターゲットをUbuntuに切り替えた。自分の(職場の)Linux環境も1年前からUbuntuへの移行を進めた。腐ったLinuxと心中することを回避できた。
2年以上かかって先日やっと Vine 5 がリリースされた。頼まれて仕方なくいじってみたが、駄目だ、と思った。Vine で XXX が動かない、と聞かれても、やっぱり「それは Vine が腐っているからだ」と答えるしかない。
ちなみに32bit版も試してみたら、多少まともだった。だが、ダウンロードのデフォルト選択肢が64bit版だったことは理解に苦しむ。
****
私にいろいろ相談してくださった方は、けっきょく Let’s Note で Vine 5 のオーディオデバイスをどうしても認識できない、とのことで、今年は Galatea for Linux の演習を断念されたとのこと。私に言わせれば「最悪の組み合わせ」だ。。
「グローバルでない製品を使うのはリスク」というのはハードウェアにもソフトウェアにも当てはまりそうだ。
- 追記(2009-10-01): 上記は私の経験に基づく仮説であり、特定の製品の開発プロセスについては推測に過ぎません。特定の製品が頻繁に故障しているように見えるのは、特定の製品のユーザが圧倒的に多いことによるバイアスかも知れません。また、この記事に関してもう一つお伝えしたいことは「評判は頻繁に変化しうる」ということです。ソフトウェアもハードウェアも現在ちょうど新しいバージョンに変わるタイミングですので、いろいろな方の評価を御確認の上、ご自身でご判断ください。本記事の誤りをご指摘いただいた場合は、お詫びして修正をするつもりですが、本記事をお読みになったことで不利益が生じたとしても責任は負いかねます。御了承ください。
-
Ubuntu 8.04 (vmware) + rails 2.3.2
Ruby on Rails 2.3.2 を使える環境を作る手順。何度も同じ失敗をしたので、備忘録として書きます。
使用したのは Ubuntu 8.04 日本語リミックスの VMware 仮想マシン(VMware Player 2.5.1 on Windows XP)。
安易に 8.10 にアップグレードしたら open-vm-tools がおかしくなり、eth0 を認識しなくなったので、8.04 のまま使うことにしました。HGFS は使えないのですが、ホストOS(Windows XP)とのあいだでコピー&ペーストができるので便利です。
- 2009-08-12 追記:8.10 にアップグレードした際の不具合の解消方法をhttp://ja.nishimotz.com/vmware_player に記載しました。
apt-get でインストールされる gem はバージョンが古いので、このままでは後の作業がうまく行きません。
/var/lib/gems/1.8/ にインストールされるのは古い gem の挙動、/usr/lib/ruby/gems/1.8/ にインストールされるのが新しい(望ましい?)gem の挙動のようです。
- 2009-08-12 追記:Debian パッケージの gem をそのまま使うと /var/lib/gems 以下にインストールされる、ということらしいです。Ubuntu 9.04 の /usr/bin/gem1.8 (gem 1.3.1) においても /var/lib/gems に実行ファイルが生成されることを確認しました。
$ sudo apt-get install ruby rubygems $ gem -v 0.9.4 $ which gem /usr/bin/gem
- 追記 (2009-05-20) Ubuntu 9.04 の rubygems1.8 はバージョン 1.3.1 でした。
手作業で gem 1.3.1 を入れる。
$ sudo gem install rubygems-update-1.3.1.gem $ sudo /var/lib/gems/1.8/bin/update_rubygems ... RubyGems installed the following executables: /usr/bin/gem1.8 If `gem` was installed by a previous RubyGems installation, you may need to remove it by hand.
古い /usr/bin/gem と新しい /usr/bin/gem1.8 が共存しているので、手作業で対応。
$ gem -v /usr/bin/gem:10:Warning: Gem::manage_gems is deprecated and will be removed on or after March 2009. /usr/bin/gem:23: uninitialized constant Gem::GemRunner (NameError) $ gem1.8 -v 1.3.1 $ pushd /usr/bin; sudo mv gem gem.org ; sudo ln -s gem1.8 gem; popd $ gem -v 1.3.1
gem 1.3.1 を使って rails を入れる。
$ sudo gem install rails Successfully installed rake-0.8.4 Successfully installed activesupport-2.3.2 Successfully installed activerecord-2.3.2 Successfully installed actionpack-2.3.2 Successfully installed actionmailer-2.3.2 Successfully installed activeresource-2.3.2 Successfully installed rails-2.3.2 7 gems installed ... $ rails -v Rails 2.3.2
アプリケーション hoge を作って、sqlite3 で rake test を通す。
$ rails hoge $ cd hoge $ rake test rake aborted! no such file to load -- sqlite3
sqlite3 環境が足りないから rake test が通らない。下記サイトを参考に対処。
- http://d.hatena.ne.jp/koumiya/20080511/1210510985
- http://d.hatena.ne.jp/roadmanprog/20071113/1194974452
$ sudo apt-get install ruby1.8-dev swig libsqlite3-dev $ sudo gem install sqlite3-ruby
migrate して test する。
$ rake db:migrate (in /home/nishi/hoge) $ rake test (in /home/nishi/hoge) /usr/bin/ruby1.8 -I"/home/nishi/hoge/lib" -I"/home/nishi/hoge/test" "/usr/lib/ruby/gems/1.8/gems/rake-0.8.4/lib/rake/rake_test_loader.rb" /usr/bin/ruby1.8 -I"/home/nishi/hoge/lib" -I"/home/nishi/hoge/test" "/usr/lib/ruby/gems/1.8/gems/rake-0.8.4/lib/rake/rake_test_loader.rb" /usr/bin/ruby1.8 -I"/home/nishi/hoge/lib" -I"/home/nishi/hoge/test" "/usr/lib/ruby/gems/1.8/gems/rake-0.8.4/lib/rake/rake_test_loader.rb"
test が通ったので、server を動かしてブラウザから確認する。
$ script/server
Welcome aboard You're riding Ruby on Rails! About your application's environment Ruby version 1.8.6 (i486-linux) RubyGems version 1.3.1 Rack version 1.0 bundled Rails version 2.3.2 Active Record version 2.3.2 Action Pack version 2.3.2 Active Resource version 2.3.2 Action Mailer version 2.3.2 Active Support version 2.3.2 Application root /home/nishi/hoge Environment development Database adapter sqlite3 Database schema version 0