« 2010年4月 | トップページ | 2010年6月 »

2010年5月

Ubuntuのインストール方法、いろいろ

■VirtualBoxがどんどん遅くなる
ノートパソコンのデフォルトOSをUbuntuにするには幾つかの方法があるが、

  • Edyの決済に使うPaSoRiが、Windowsでないと使えない
  • 何かあったときにWindowsの再インストールが面倒だ

という理由で、VirtualBoxの上でUbuntuを動かすという方法を採用していた。
最初のころはサクサク動いていたのだが、使っているうちにだんだん遅くなってきて、ついに体感的に我慢できない遅さになった。
Ubuntuを入れ直したり、VirtualBoxを再インストールしてみても良くならないので、Windows側に問題があるようだ。

■USBでUbuntuを起動する
Windowsを再インストールしても、また同じ状態になるのは容易に想像できるので、次はUSBにUbuntuをインストールする方法を試してみた。
使ったのはバッファローの標準タイプのUSBメモリであるRUF-C8GSだ。
この方法はうまく行き、VirtualBoxで動かしていた時とは比べ物にならないくらいサクサク動く。

■出っ張るのが危険
しかし、この方法にも問題はあり、USBメモリがノートパソコンから出っ張る。
この出っ張りを何かに引っ掛けると、ノートパソコンが壊れてしまいそうだ。
そこでもう少し小さなUSBメモリを探したところ、同じバッファローから発売中のマイクロUSBメモリを発見した。
RUF2-PS8Gがそれだ。
このUSBメモリは本体から5mmしか出っ張らない超小型タイプだ。
早速取り寄せてみたら、本当に小さい。
これがUbuntuインストールメディアの決定版だと思った。

■遅い
しかし、あちらを立てればこちらが立たず。
天は二物を与えず、というが本当だ。
このマイクロUSBメモリはデータ転送速度が非常に遅い。
Ubuntuの操作中も、すぐに引っかかる。
これでは使い物にならない。
ということで、このマイクロUSBメモリはデータ保存用途になり、Ubuntuのインストールメディアは元のRUF-C8GSのままと決まった。

■USBメモリの寿命
しかししかし、この方法にも問題がある。
それも大きな問題だ。
USBメモリには書き込み回数の上限があり、使っているうちに寿命を迎える。
使い方にもよるだろうが、Ubuntuをインストールして使うと3ヶ月くらいで壊れるという話もある。
もともとテスト的な試みなので、どのくらいでUSBメモリが壊れるのか試してみたい気もする。

■やはりハードディスクが良いのか?
さらなる方法として、外付けハードディスクにUbuntuをインストールする方法もあり、こちらは適当なポータブルハードディスクを探しているところだ。

■昔ながらの方法が一番良いのか?
とはいうものの、Windowsを残しつつ、UbuntuをデフォルトOSにする方法としては、古典的だが、素直にデュアルブートにするのが一番良いかもしれない。



| | コメント (0) | トラックバック (0)

スタンダートテキスト"ANSI Common Lisp"

ピアソン・エデュケーションの"ANSI Common Lisp"は良いテキストなのだが、練習問題に正解がついていないのが、玉に瑕だ。
安易に正解に頼らない、「勉強かくあるべし」という姿勢はとても良いと思うが、難しい問題もあるのでやはり正解は欲しい。

どんな練習問題があるかというと、例えば4章の第一問は、

正方の配列(大きさが(n n)の配列)を引数としてそれを90度、時計回りに回転させる関数を定義せよ。

というもので、例として
>(quarter-turn #2A((a b) (c d)))
#2A((C A) (D B))

とある。
最初、何を言っているのか正直わからなかったが、

a b
c d

c a
d b

に、

a b c
d e f
g h i

g d a
h e b
i  f  c

に変換する関数のことらしい。
そこで、こんな解答を作ってみた。
一応動いているようだ。

(defun quarter-turn (a)
  (let ((nn (array-dimensions a)))
    (let ((n (car nn))
          (b (make-array nn)))
        (do ((i 0 (+ i 1))) ((= i n))
          (do ((j 0 (+ j 1))) ((= j n))
            (setf (aref b j (- n 1 i)) (aref a i j))))
      b)))

ANSI Common Lisp (スタンダードテキスト) Book ANSI Common Lisp (スタンダードテキスト)

著者:ポール グレアム
販売元:ピアソンエデュケーション
Amazon.co.jpで詳細を確認する

ANSI Common Lisp ANSI Common Lisp

販売元:楽天ブックス
楽天市場で詳細を確認する

| | コメント (0) | トラックバック (0)

UbuntuのUSBブートは実用的だ

モバイルノートで使っているVirtualBox上のUbuntu10.04が重くて使いにくくなったので、USBブートを試してみた。この方法ならデバイスが動きさえすれば、仮想マシンより軽く使えるはずだ。

モバイルノートはVaio TT53FBで、Core2Duoの1.4GHz、4GBメモリというスペックのマシンだ。

以前作っておいたUbuntu9.04のブート用USBを試したところ、あっさり起動できて、無線 LANもつながった。おまけにVirtualBoxで使っていた時よりはるかに軽い。

bluetoothマウスも使える。

この方法だと、VaioのハードディスクにインストールしているWindows7は元のままなので、どうしてもWindowsが必要になった時にも安心だ。

あとはもう少し小さめのUSBメモリがあれば、「何かにひっかかってUSBメモリが外れてしまうリスク」も小さくなる。

ボディーからにょきっと出ているUSBメモリはいかにも心配だ。

小さいUSBメモリと言えば、バッファローの小型USBメモリが評判が良い。

なにしろ、USBポートに挿すとボディーから5mm出ているだけなので、UbuntuをデフォルトOSのように使えるのが良い。

| | コメント (0) | トラックバック (0)

LinuxでもWindowsでもCommon Lisp

Ubuntu10.04にCommon Lisp環境を構築してみた。

今回使ったのは次の3つのソフトウェアだ。

 
  • SBCL
  • SLIME
  • emacs

  全て、Synapticパッケージマネージャで簡単にインストールできる。

Windowsの場合は、オールインワンパッケージのLispboxを使うのが簡単だ。

LISPの処理系がCLISPになるが、ダウンロードしたファイルを展開するだけで使えるのでとてもお手軽だ。

初めての人のためのLISP[増補改訂版] Book 初めての人のためのLISP[増補改訂版]

著者:竹内 郁雄
販売元:翔泳社
発売日:2010/03/10
Amazon.co.jpで詳細を確認する

対話によるCommon Lisp入門 POD版 Book 対話によるCommon Lisp入門 POD版

著者:栗原 正仁
販売元:森北出版
Amazon.co.jpで詳細を確認する

| | コメント (0) | トラックバック (0)

餅は餅屋

■単一スキルのソフトウェアエンジニア
とあるソフトウェアエンジニアの考えによると、最近の開発案件がうまくいかないことが多いのは、ソフトウェア開発企業がプログラマ候補ばかりを採用することと、入社後もプログラマ養成教育ばかりを行っていることが原因だと言う。

その結果、現代的なソフトウェア開発で重要性を増しているプロジェクトマネジメント、設計、テスト、プロセス設計などのプログラミング以外の部分が非常に弱くなっているというのだ。

■責任分担
これには、歴史的経緯というものが関係していると思う。
つまり、ソフトウェア開発企業の多くは、もともと機械メーカーや電機メーカーのソフトウェア製造部門だったものが子会社として独立した会社が多いため、設計、テスト、開発管理を親会社が行い、ソフトウェアの製造の部分だけを子会社が担当するという関係が固定化してしまったのだろうと思われる。

■失敗しないという思い込み

また、設計を徹底的に行って仕様化すれば、その仕様を実装したソフトウェアは完璧に動作するという思い込みと、苦労して作った仕様書やソフトウェアには欠陥が含まれないという思い込みが、そのような責任分担による開発を偏重する組織の思考の背後にあるのだろう。

■ソフトウェアの特殊事情
もちろん、そういった関係は機械部品や電気部品や金型でなら、うまく責任分担ができて良いのかもしれないし、そのような分野であれば、上の思い込みは正しいのかもしれない。

しかし、ソフトウェアは設計書通りに作れば良いとか、大量生産の歩留まりがどのくらいとか、そういう工業製品とは違う。設計はコーディングそのものと考え られるし、設計の最初の段階からテストを考える必要がある。その意味ではテストもコーディングそのものと言えるかもしれない。

さらには、ソフトウェアはいつも一品生産であり、工業製品と言えるのは、完成したソフトウェアをCD-ROMなどのメディアに焼くところだけであることを考えると、ソフ トウェアは工業製品ではなく、むしろ工芸品や芸術品に近い存在だと言うこともできるのではないだろうか。

■餅は餅屋

このように、機械部品や電気部品などのハードウェアとソフトウェアとは全く違うものなので、ハードウェアしか作ってことのない機械メーカーや電機メーカーにソフトウェアがうまく作れないのはむしろ当然だ。彼らが、自分たちの専門分野の枠組みでソフトウェアをとらえようとする限り、彼らがソフトウェアという概念を正しく形成することさえも困難かもしれない。

もしそうであるとするならば、彼らが自分たちで中途半端に設計やテスト、あるいは開発管理するのをやめて、ソフトウェア開発はソフトウェア専門メーカーに任せてしまうというやり方について検討を始めても良いのかもしれない。

■苦手なことを知る

企業は利益をあげるのが仕事だ。自分の知らない分野や苦手な分野に無理に入っていくことは、経済的には必ずしも良いことではないと気づくことも大切だ。

WOZ

| | コメント (0) | トラックバック (0)

Ubuntu10.04でのLISP環境構築

Ubuntu10.04にLISP環境を構築してみた。
今回使ったのは次の3つのソフトウェアだ。

  • SBCL
  • SLIME
  • emacs

全て、Synapticパッケージマネージャで簡単にインストールできる。
インストールした後、.emacsに下記を追加する。

; SLIME
  (setq slime-net-coding-system 'utf-8-unix)
  (setq inferior-lisp-program "/usr/bin/sbcl")
  (add-to-list 'load-path "/usr/share/emacs/site-lisp/slime")
  (require 'slime)
  (slime-setup)

1行目はLISPが日本語を使えるようにするために必要だ。
2行目から5行目までは、SLIMEのインストールガイドに書かれている通りだ。

このように環境構築はとても簡単だ。また、emacsとLISPの組合せは非常に軽快で、気持ちよくプログラミングできる。

周りにLISPを使っている人はあまりいないかもしれないが、Pythonのリスト処理や関数を気に入って使っている人なら、LISPもお気に入りの言語になるかもしれない。

WOZ

| | コメント (0) | トラックバック (0)

SmallBasic

■小さなBasic
マイクロソフトからSmallBasic言語が出ている。
GoogleのGo言語ほどには話題になっていないものの、ダウンロード数は多いという。

■特徴と売りは「簡単で手軽なこと」
@itの関連記事によると、VisualBasicに比べて言語仕様が小さくて、開発環境がシンプルなため、プログラムの見通しがよく、導入が容易なのが特徴なのだという。
また、一つのプログラムは一つのファイルに保存されるため、大きなソフトウェアを作るのには向かないが、ちょっとした仕事をする小さなソフトウェアを作るのには向いているだろう。

マイクロソフトによると、SmallBasicは初心者向けの学習用という位置付けだそうだが、日頃VisualBasicを使っている中・上級者にとってもWindowsでちょっとした仕事をするためのツールを作るのにも使えそうだ。

■競合は?
しかし、すでにPythonやRubyを使っている人にとっては、あまり興味を持てない言語かもしれない。それにPythonやRubyなら、WindowsだけでなくLinuxやMacOSXでも使えるので、より実用的だ。

■可能性を感じる
ただ、SmallBasicにはPythonやRubyにはない特徴が一つある。
それは、SmallBasicの開発ツールには、SmallBasicのコードを、VisualBasicのコードやSilverlightのコードに変換する機能があることだ。
これはマイクロソフトならではの機能なのだが、一度書いたコードが実質的にデスクトップでもWebでも動くというのは大きな魅力だ。
ここにSmallBasicの可能性を感じる。

WOZ

| | コメント (0) | トラックバック (0)

« 2010年4月 | トップページ | 2010年6月 »