トップ 最新 追記

十日日記


2007-05-01

Link 誠実な2冊

英語勉強力 青谷正妥『英語勉強力』(DHC、2005年)を読んだ。この本は、効率のよい英語学習を行なうために学習理論に即して具体的な手法を述べていくという、理論と実践とを統合させた本である。著者は京大国際交流センターの教官で、まあ知っている人は知っているだろう。私が持っている名刺のなかで丸い形をしたものは、後にも先にも青谷先生のものだけだ。

この本には難点はいくつかある。ひとつは編集のラフさで、行き当たりばったりの感が否めない。(たとえばVOAに関する記述。)また、理解を助けるための図版がまったくないのも気にかかる。特に第2章の知識体系の話や四重螺旋の話は、ダイアグラムを示すなどして視覚に訴えるべきだ。一定の知能水準をもたないと楽には読み通せないだろう。決して万人向けの本ではない。著者の思いが溢れすぎていて読みづらいことも欠点のひとつだ。1冊の本にこんなに入れあげると腎虚にならないか心配である。

もちろん美点もあって、たとえばこの手の本にしては例外的に索引が充実している。しかしそれよりも、付属CDや本文に表れている著者の誠実さを買いたい。著者の英語による講義がCDに録音されていたり(しかも間違いもそのまま収録してあったり)、TOEICもTOEFLも満点だがネイティブのような言語運用力は持てないと正直に書いてあったりするのがよい。ディクテーション可能な尺はせいぜい30秒というのは、本当にそのとおりだと思う。この本は「限界」を語っている点で、類書にはないマトモさを有している。

楽々ERDレッスン 羽生章洋『楽々ERDレッスン』(翔泳社、2006年)も、誠実さが第一の美点になっている書籍だ。この本の主張の具体的な論点は、列にUnique IDを導入しろという点にある。教科書的にはコードに意味を持たせてはならない云々となるのだけれど、現実にはコード自体に意味があることのほうが多い(例:ナンバープレートの3桁の番号)。

Unique IDの導入はたしかに美しくはないけれども、副作用は考えにくいし、すぐに実行できることなので、まことに実用的なものだ。実際、Webアプリのデータベースでは積極的に行なわれていることではなかろうか。

Tags:

2007-05-02

Link 通時的・共時的に英文法を見る

根本理解!やり直し英文法 鈴木寛次・三木千絵『根本理解!やり直し英文法』(大修館書店、2007年)に目を通した。鈴木氏の著作と言えば『発想転換の英文法』(丸善、1997年)が印象に残っていて、今度の本もその延長線上にあるというので買ってみた次第だ。本書は、文法規則を通時的・共時的に説明しようと試みている。

一応は文法項目別に記してはいるのだが、章ごとに「初級」「中級」「発展」とそれぞれ節を立てて分けている。思慮深い配慮だ。だいたいこんな本を買うのは文法オタクに限られるわけで、そういう人間にとっては「中級」ないしは「発展」だけ読めば十分といえる。だから、編集部主導でつけられたであろうこの書名は罪深い。本書は「やり直す」ためではなく、読み物として楽しむための英文法書だ。やり直すなら、ふつうの受験参考書のほうが安くて取り組みやすい。

ここで、私が付箋を貼った部分をいくつか紹介しておく。

英語で重要な文型は第三文型であり、自動詞と他動詞との区別をつけることは重要だ。だが実は、時代とともに他動詞的になる傾向がある。たとえばcomplain that...がそうで、このthat節は他動詞のように見えるが伝統的には自動詞扱いをしてきたという。つまり、

He complained (of it) that he did not have enough money.

のように「of it」が省略されていると考えるらしい(p.48)。同様な例にinsistがあると同書では触れられているが、agreeも同じかもしれない。

また、条件を表わす副詞節において未来表現を用いず直説法現在で代用する点については、次のように述べられていた。

昔はこの副詞節に無意志未来のshallやwillを入れたが、やがてshallやwillが使われなくなり、仮定法現在を用いた。さらに今日の直説法現在になった(p.82)。

doの発生については、以下のように述べられている。

元来、助動詞のdoは進行形と同様に、突然変異的に使用されるようになった。俗語的会話文すべてにdoをつけて言葉遊びをしていた。北ドイツの言葉である低地ドイツ語では、今日でもその原形が残っている。……(中略)……今日でもアイルランド英語では、すべての動詞に無意味のdoをつける習慣が残っている(p.103)。

ときて、次の文がつづく。

"I done called for a shelter, I done called for help. There ain't none. No one answers." she said.

これはハリケーン・カトリーナの被害者の言葉をAP通信記事から引用したものだそうだ。なんというか、社会階層がにじみ出た表現ではないか。

ネタ的に面白いのは、動名詞と現在分詞との微妙な関係。

a sleeping bag(寝袋)/ a sleeping dog(寝ている犬)

で、違いは強勢にある。動名詞の前者はsleepingに強勢があり、現在分詞の後者はdogに強勢がある(p.227)。

前置詞では、intoの誕生が面白い。

古期英語の時代にはinしかなかった。その代わり、「静止」を表す時は今日の間接目的語に相当する与格(dative)を、「運動・方向」を表す時は今日の直接目的語に相当する対格(accusative)を使用して区別していたのである(p.242)。

受動態について。

I wrote him a long letter.

のような授与動詞(第四文型を取る動詞)を受動態にする場合、heを主語にするかletterを主語にするかの2通りの選択肢が理論的には可能だ。しかし、現実にはheを主語に立てるのは「不自然な英文」とされる。その理由は、「古期英語の時代には間接目的語は受動態の主語になりえなかった」からだという(p.284)。つまり先の例で言えばhimは与格にあたるので、これは目的語にはならなかったのだそうだ。「ドイツ語にも他のゲルマン語にも間接目的語を主語とする文は存在しない」とのこと。

もうひとつ同書で興味深いのは、現在の英和辞典には載っていない新しい用法(しかし歴史的推移を鑑みれば自然な用法)が詳述されている点だ。これらの出典も、上と同じく主としニュース記事である。それもかなり新しい(ここ数年の)ものだ。そういうわけで、英語学習者(英語学習に投資する人)にはまったく勧められないが、趣味者(英語学習を消費する人)には声を大にして推奨したい。

ついでに。mustの古来の現在形をいつも忘れるので書いておこう。moteである。

Tags: 言語

2007-05-03

Link 薄く小さく高発熱?

PlayStation2(SCPH-50000)が壊れたので、新しい型番(SCPH-77000SS)のものに買い替えた。私自身はゲームをまったくしないのでPlayStationにも興味はないが、以前のものにくらべて圧倒的に小さいことは素人目にもわかる。70000番台の製品が出た当時のニュース記事を読むと、容積を1/4にしたとある。

Wikipediaの記事その他にもCPU・GPUをワンチップ化したとあるので、消費電力も低下したのだろうと想像していたのだが、話は違うようだ。壊れた機械には100V-32Wと書かれているのだが、今度の機械は45Wだそうで、逆に増大している。電源を外付けのACアダプタにした影響かもしれないが、この事実を取り上げたニュース記事は存在しないようだ。私はちょっと理解できていなくて、たとえば平均消費電力の差なども知りたいと思う。

Tags:

2007-05-04

Link AddErrorHandlerの紹介

Delphi 2007の特徴は、それがWin32専用アプリを作成する点だろう。マイクロソフト社製のRADツールを見ても、Win32アプリを作れるVB6はWindows XP以降の視覚スタイルに対応しないし(そもそもサポート期間が切れている)、VB2005は.NET専用だ。つまりDelphiは最新のWin32アプリを作れる唯一のRADツールという地位を獲得したわけで、ニッチな生存戦略をとったことになる。

値付けも絶妙で、ネット接続を前提としないなら無料のTurbo Delphi Exlorerでよいが、HTTPやFTPなどを容易に扱いたいならTurbo Delphi Pro(4万円)を必要とする。さらに外部のMySQLに接続したいならDelphi 2007 Pro(7万円)が要り、OracleやSQL ServerとなるとEnterprise(24万円)が要求される。Enterprise版の強気な価格設定は、立ち位置を自覚しているからだろう。

ところで今さらながらに知ったのだが、VBScriptには「On Error GoTo」構文が存在しない。かといって「Try ... Catch」構文があるわけでもなく、実はエラー処理に関する構文は、全スルーする「On Error Resume Next」と、それを解除する「On Error GoTo 0」との2つだけだ。だから現実的なエラー処理は、If Err.Number <> 0 Thenなど使って行なうことになるだろう。

いっぽうVB6のエラー処理は、On Error GoTo ErrorHandler:を主要な関数に漏れなく挿入する以上の方法を私は知らない。ひとつひとつ書くのが面倒だと思ってWebをあたって見つけたのが、標題にある「VB AddErrorHandler 1.0.37」だ。嬉しいのはソースコードがついてくる点で、そのために日本語化も簡単にできる。

追記。視覚スタイルの件は誤り。マニフェストファイルを作れば可能だが制約があり、公式にはサポートされないというのが正しい。

Tags: 言語 PC

2007-05-05

Link WDSのシェル統合をオフにする

WDSWindows Desktop Search 3.0はそれなりに便利に使っているが、大きな不満が1点ある。それは、Explorerで「検索」ボタンを押すことによって表示される通常の検索画面をWDSが上書きすることだ。単にファイル検索したいだけなのに、WDSのムダな画面に乗っ取られてしまう。

右の画面を見てほしい。カタカナの「デスクトップ」ボタンが長すぎて入力領域がほとんどない。以前の検索画面に戻すには、「ここをクリックして検索コンパニオンを使用します」を押さなければならない。状態を記憶しないので、毎回同じことをする必要がある。

驚くべきことに、この統合をオフにするオプションがWDS 3.0にはない!(2.xのころはあったらしい。)次のように、レジストリを設定する必要がある。私はこの方法を、How To Default To Search Companion With Windows Desktop Search 3で知った。

[HKEY_CURRENT_USER\Software\Microsoft\Windows Desktop Search\DS]
"ShowStartSearchBand"=dword:00000000

上のように設定して、ようやく見慣れた検索画面に戻すことができた。

Tags: PC
本日のツッコミ(全2件) [ツッコミを入れる]

Link Weariurcerfaw [Hello. And Bye Marry. IT was nice to see you at this sweet..]

Link SorOxiniirrax [Hello. And Bye Marry. IT was nice to see you at this sweet..]


2007-05-06

Link WDSとスクリプト

hishidaさんのblogで知ったのだが、Scripting Windows Desktop Search 3.0というTechNet ScriptCenterの記事がある。この記事によると、Windows Desktop Searchには専用のADOプロバイダが用意されていて、SQLの文法で検索が可能になっている。次のようなスクリプトを書いてみて、実際にレコードセットが取得できるのを確認した。

Option Explicit

Dim cn: Set cn = CreateObject("ADODB.Connection")
Dim rs: Set rs = CreateObject("ADODB.Recordset")

With cn
    .Provider = "Search.CollatorDSO"
    .Properties("Extended Properties") = "Application=Windows"
    .Open
End With

rs.Open "select System.FileName from systemindex where Contains('横山ノック')" , cn

If Not(rs.BOF = True And rs.EOF = True) Then
    rs.MoveFirst
    Do Until rs.EOF
        WScript.Echo rs.Fields.Item("System.Filename")
        rs.MoveNext
    Loop
End If

rs.Close
cn.Close
Set rs = Nothing
Set cn = Nothing

作業しながら連想したことが2つある。ひとつは、この記事の著者たち(Scripting Team)がWDSについて詳細不明と書き倒している点。仕様が公開されていないのかもしれないが、マイクロソフトの社内連絡は大丈夫かと不安にさせられる。もうひとつは、WMIと同じようにSQLが使えるのは、ファイルシステムにSQL Serverを組み込もうとしたWinFSの名残なのだろうかという点。Coplandに頓挫して“アピアランス”(外観)でメジャー更新した当時のMac OS 8が頭をよぎる。

Longhorn(Windows Vista)に何となく抱いていた感覚はCoplandだったのかと、いまさら気がついた。WPFやらXPSといった新技術(HTAはどうなったのだろう?)からはeWorldやOpenDocやQuickDraw GXを想像してしまう。それでも空中分解せずに乗り切っている点、マイクロソフトはすごいなあ。

Tags: 言語 PC

2007-05-07

Link VBSファイル内でJScript関数

最近は、迷子になりつつMSDNライブラリ(日本語|英語)やTechNet(日本語|英語)を読んでいる。白状すると、MSDNとTechNetとが別物であることを知ったのは先ほどのことだ。

たまたまWeb Team TalkingのWebへのアクセスコードを読んでいて、「すべてのグローバルJScript関数またはすべてのユーザー定義JScript関数は直接VBScriptコードで呼び出すことができます」という部分に出くわした。記事ではwsfファイル(もしくはasp)を前提とした書き方だったので、VBSファイルではどう書くのか気になった。それで見つけたのがVBScriptで、UTF-8でエンコードするにはどうしたらよいでしょうか?というhatenaの記事だ。

一般的には、ScriptControlのインスタンスを作成するらしい。この記事の回答に示されていた吉岡照雄さんのページにはサンプルVBSファイルが大量にあって勉強になるのだが、そのなかのjsArray.VBSにあった例として、次のものが挙がっていた。

'JScriptのArrayオブジェクトをVBScriptで使う
Set jsArray=SC.Eval("new Array()")

For Each File In Folder.Files
    jsArray.push File.Name
Next

jsArray.sort

For Each File In jsArray
    Push Folder,File
Next

WScript.Echo Join(Folder,vbLf)

Sub Push(Items,Item)
    ReDim Preserve Items(UBound(Items)+1)
    Items(UBound(Items))=Item
End Sub

VBScriptの配列はあまり充実していなくて、それならむしろADODB.Recordsetを使うのがいいのではないかなと妄想していたのだが、こんなふうにJScriptの配列が使えたとは。しかもVBScriptの中でFor Eachが機能している。

Tags: 言語 PC

2007-05-10

Link The sooner the better

語呂合わせというと歴史の年号が最も著名だが、年号よりは事柄を語呂合わせにしたほうが便利だと思う。以前どこかで見て感心したのは「聖徳太子あほ! 字ぃ書けん」という一文で、「飛鳥文化」「法隆寺」「十七条憲法」「冠位十二階」「遣隋使」とキーワードが揃っている。最後の3つがきちんと年代順に並んでいるのもよい。

印欧祖語には格が8つあったそうで、それらは主格・呼格・属格・与格・対格・奪格・具格・処格である。暗記すべく、語呂合わせをひねり出してみる。「主人を呼んで金属与え、対価奪って具を処分」。いまひとつだが、語呂合わせを考えているあいだに八格を知らず知らず憶えていて、もはや作る意味がなくなってしまった。

標題にある「The sooner the better」(早ければ早いほどよい)は、「the+比較級」と呼ばれる有名な慣用表現である。『現代英語語法辞典』(大修館書店)を寝しなに読んでいると、その名の見出しがあり、興味深いことが書かれている。

元来このtheは古代英語の助格(Instrumental case)の名残であって、2回使われる場合の初めのtheはby what(i.e. by how much)(...すればするほど)の意であり、後のtheはby that(i.e. by so much)(それだけよけいに)の意(p.1088)。

上の「助格」は「具格」のことだ。whyはwhatの具格で「by what means」みたいな感じだから、得心がいく。なお、「the+比較級」が1回きりの場合には、主節であるby thatのほうである。同書に挙っていた例文

The result is all the more disappointing because she had put in so much effort.

には「悔しさ」が表れていると思う。

Tags: 言語

2007-05-11

Link カスタマイズの日

JIS2004フォントだが、一部のビットマップが汚いという趣味の話以前に、アプリケーションの互換性に問題があるのを認識した。ひとつはInternet Explorer 6で、UTF-8で直接フォント指定すると文字が崩れることがある。いまひとつはAcrobat 5やIllustrator 10あたりの世代のアドビアプリで、たとえばPDFファイルを開くとMS明朝の部分が完全に豆腐(□)になっている。

こんなフォントをシステムフォントにするわけにはいかないが、さりとて印刷標準字体で印刷する欲求はあるかもしれない。約物の充実も評価できる。そこで、フォントの内部名称を「MS 明朝」から「HG 明朝L」と言わば本来の名前に変更して、JIS90フォントと共存させることにした。これにはttfname3を使うとよい。

ところで、Windows XP標準視覚スタイルの「Luna」で気に入らない点のひとつに「スタート」ボタンがある。スタートボタンの表示フォントはMS UI Gothic Bold Italic 12ptで、これによる問題は2点ある。ひとつは、MS UI Gothicには専用のBold Italicが存在しないためビットマップが醜いということ。いまひとつは週刊モバイル通信 No.122にあるとおり、スタートメニューに隙間ができてしまうことだ。

後者については漢字Talk 6を思い出す。漢字Talk 7以前のMac OSでは、Osakaフォントの欧文部分にはGenevaではなくHelveticaが使われていた。Helveticaは大柄だから、同じフォントサイズではメニューバーから溢れてしまう。そこで漢字Talkは、メニューバーの幅を英語版よりも広げていたのだ。行儀の悪いINIT/cdevでは、このせいで見た目に支障が出るものもあった。

視覚スタイルを使わない私には無関係な話ではあるが、話のネタにはなると思って改造法を確認する。今回の場合、スタートボタンの(1)文字列を変更する、(2)表示フォントを変更する――の2点に分かれるので、それぞれ調べてみた。(1)は容易だが、(2)は面倒だ。

(1)が収録されているのは、C:\WINDOWS\explroer.exeである。これをResHackerなどのリソース編集ソフトで開いて、String Table\37\1041の文字列を変更すればよい。詳しくは、XPのスタートボタンを変更しよう!を参照。ただし、リンク先を見てもわかるとおり、このままではMS UI Gothic 12pt Bold Italicで表示されているので、問題は解決していない。

(2)について。ファイルの所在はc:\WINDOWS\Resouces\Themes\Luna\luna.msstylesである。Beside Baysideというブログの記事を読むかぎり、先と同じようにString Tableを変更すれば万事解決しそうなものだが、そうは問屋が卸さない。このようにするとクラシックメニューに固定され、XPスタイルが選択できなくなる。

なぜそうなるのかは勝手な推測だが、おそらくuxtheme.dllが関与しているのだろう。このDLLは、使用できる視覚スタイルがマイクロソフト製であるかどうかを判定して他社製のスタイルを使用できなくしている。スタートボタンの表示フォントがFranklin Gothic Medium Italic 14ptになるよう変更したluna.msstylesは非純正と見なされているものと思われる。

対策は3通り考えられる。(a)luna.msstyleを純正品であるかのように見せかける。(b)uxtheme.dllにパッチを当てて純正判定を行なわないようにする。(c)表示フォントにFranklin Gothic Mediumを使用しているMS純正のluna.msstyle(英語版など)を使用する。(a)は方法を知らない。(b)は、uxtheme.dll パッチ当て(ハック)の方法に従えばよい。(c)は、たとえばRoyale Noirなどをインストールすればよい。

マトモなスタートボタンとりあえず(b)と(c)とに関しては、うまくいくことを確認した。どちらかを選ぶなら、(c)のほうがいいかもしれない。Windows XP Media Center Editionに搭載されているという「Royale」は、けばけばしいWindows XPの標準テーマよりはずっとマトモに見える。

Tags: PC

2007-05-12

Link メニューバーの白抜き対処法

メニューバーWindows XPの視覚スタイルを使っていると、視覚スタイルに対応していないアプリケーションのメニューバーが白抜きで表示されることがある(右図)。マイクロソフトのサポートページにも「Windows XP SP2 のテーマを変更するとアプリケーションのメニュー バーが白抜きで表示される」と載っているが、掲げられている対処法が「テーマをWindows XPまたはWindowsクラシックにする」という、およそ有効でないものになっている。

デザインの詳細メニューバーが白抜きになるのは、メニューの背景色を白色に設定しているからだ。〈画面のプロパティ〉-〈デザイン〉-〈詳細設定〉を見てみるとよい。視覚スタイルを有効にしていると設定は上塗りされるわけだが、ときどき化けの皮が剥がれて旧来の設定が顔を出してしまうわけである。“指定する部分”を「メニュー」にして、「色 1」を適切なものに変更すればよい。

しかし、上に書いた方法も実のところ対症療法にすぎない。真の問題は、一部アプリでメニューバーのオーバーレイ処理がなされなくなることだ。どうやったら発症するのか、あるいは回復できるのか私には不明だが、経験的には〈システムのプロパティ〉-〈パフォーマンスオプション〉でいちど「パフォーマンスを優先する」にしてしまうと、再度「デザインを優先する」にしてもメニューバーのデザインが戻せないことがあるのを確認している。

Fix the ugly menu bar after applying a custom themeに挙がっているレジストリ操作も、WindowsXPのColorSchemeについてにある操作も効果なし。より正確には、これらの操作によってメニューがフラット化しているのは確かだが、ポインターを重ねても色が反転しない。気にはなっているのだが、実施2日目にして視覚スタイル自体に飽きつつある。

Tags: PC

2007-05-14

Link AVERAGEIFの代替関数組合わせ

たとえ最新のExcel 2007ユーザーでなくとも、Excelを利用しているなら一読しておきたいマイクロソフトの資料がある。「Excel 2007におけるパフォーマンスの改善」だ。これを読むと、見た目以外に変化がないように感ぜられるExcelも、それなりに進歩を遂げていることがわかる。

たとえばキャッシュメモリの上限は、2000/2002/2003/2007で64MB/128MB/1GB/2GBと増大している。また再計算においても、新しいバージョンほど最適化された動作を行なうようである。Excel 2007では、ついにマルチスレッドに対応した。

しかしこの文書の白眉は、Excelファイルの動作をいかに軽快にするかという課題を、ワークシート関数、VBA関数それぞれのレベルで解説している点だ。わざわざ「計算時間の測定」という項まで設け、Win32 APIを利用した測定関数を紹介しているほどの凝りようである。配列数式の遅さが数字として表われているし、手練手管な超絶関数技巧よりも作業セルを使ったほうが高速なことも書かれている。

この文書で目を開かされた(Sukat, his eyes uncovered!)ワークシート関数を1つだけ挙げるとするなら、SUMPRODUCT関数である。この関数は本来は内積を求めるもので、単価と数量とが書かれた行列から価額を出すような場合に使うわけだが、現実には別の目的で使用される。Excel 2007で単一の関数として実現されているCOUNTIFS(複数条件でのカウント)やAVERAGEIF(SUMIFの平均版)をExcel 2003以下で実現するのに有用なのだ。

それを書いていると大変だから、Excel豆知識29-3Excelでお仕事の紹介記事を参照。(ちなみに、「Excelでお仕事」はすばらしいExcelサイトである。)要はSUMPRODUCTを使って論理演算を行なっているわけだ。

ところが今回の記事で初見だったのは、論理演算における表現である。Excelでお仕事の紹介記事にあるように、私がこれまで見てきた日本語の解説ページはすべて

=SUMPRODUCT((R3C1:R8C1=R6C)*(R3C2:R8C2=RC5)*(R3C3:R8C3))

このように引数1つで乗算を重ねている。上の例では、最初の2項が条件式で、第3項が数値の配列だ。これは、次のように書き換えられる。

=SUMPRODUCT(--(R3C1:R8C1=R6C),--(R3C2:R8C2=RC5),(R3C3:R8C3))

まず、乗算を重ねるよりも関数の引数を増やしたほうが速い。それにGUIで関数を組み立てやすい。これはまあよい。驚いたのは「--」である。負数を2回かけることでTrue/Falseを1/0にできるのだ! しかも「*1」を行なうよりも速いのだという。最初は何か意味のある演算子かと思ったくらいだ。

最後にSUMPRODUCTを使ったオマケの話をしたい。Excel 2007のAVERAGEIFはSUMIFとCOUNTIFとの組み合わせで実現できるという話を目にすることがあるが、それはちょっと怪しい。つまり

=SUMIF(検索範囲, 条件, 合計範囲)/COUNTIF(検索範囲, 条件)

のように使用する心づもりかもしれないが、これでは合計範囲にNULLがある場合には計算が狂ってしまう。エラーも出ない(危険!)。このようなときにも、SUMPRODUCTが使える。たとえば次のようにすればよいだろう。

=SUMIF(検索範囲, 条件, 合計範囲)/SUMPRODUCT(--(条件),--(ISNUMBER(合計範囲)))

ここでのキモはISNUMBERを使ってNULLでない(より正確には数値の)セルの数をカウントしていることだ。しかし文書にあるとおり、SUMPRODUCTの部分は作業セルとして別の箇所に出しておくのが賢明かもしれない。

Tags: Excel

2007-05-16

Link 事務用キーボード

PC/AT互換機に対して長年抱いている疑問に、キーボードが大きすぎることがある。酷いものでは、「インターネット」とか「メール」とか変なボタンで無駄なスペースを増大させているものもある。日本電気やソニーなどの製品で小振りにまとめたものもなくはないが、少数派だ。我が国の事務机の面積を考えると、とてももったいないと思う。

かといってHappy Hacking Keyboardのような変態的な配列では、事務利用者には使えない。かつて東大駒場の計算機センターはHHKを導入していたが、ごく一部の好事家を除いて大半の学生には不評だった。カーソルキーや10キーはあったほうがよいし、英語配列では個人のPCと配列が変わってしまう。

次のキーボードは偶然見つけたものだが、事務用キーボードとしていい線を行っている。それはエレコムのTK-UP01MAシリーズで、キーレイアウト図のような配列で幅383mmに抑えている。また、スタンドがついているので、写真のように自立させることができる。そして最も重要な点だが、2000円でお釣りがくる。Majestouch Miniも似た配列だが、価格が3倍なので大量導入がためらわれるのだ。

Tags: PC

2007-05-17

Link BunBackupを使う

ひとくちにバックアップと言っても複数種類あるが、今回とりあげているのは「書類を複製する」という単純なものだ。これまでは数年ほどRealSyncを使ってきた。機能的には十分なのだが、RealSyncはUnicodeファイル名に対応しない。Internet Explorerの「お気に入り」の各項目はWebページのtitleタグで保存されるのだが、海外サイトを中心にUnicodeの記号(「»」など)を使うところが増えてきて、面倒に思っていたところだった。

BunBackupは、開発者のブログを読んでソフトウェアの想定運用方針が近いと思えたため、導入してみた。たとえば「圧縮バックアップはお勧めしない」とか「バックアップ先はUSB接続HDDがお勧め」といった項目は、書類のバックアップ(システムでなく)として理解できる。

実際に使ってみた。バックアップ終了後に変更ファイルを別ウィンドウで表示するなど、RealSyncにくらべて若干うるさいところがある。高速にバックアップする機能を有効にしていると、CPU負荷もそれなりにある。それでも開発は滞りなく行なわれているようなので、これから常用することにする。

Tags: PC

2007-05-18

Link Microsoft Math 3.0を試す

Microsoft Math 3.0について書かれたITMediaの記事を見せられて評価を求められたのだが、そもそもこんな製品の存在を知らなかった。記事には次のようにある。

複雑な数学問題を図式化して説明する「Graphing Calculator」、初級代数から微積分までさまざまなレベルの問題を、問題ごとに適切な公式を見つけ、回答できるよう支援する「Formulas and Equations Library」、三角形の問題に絞った「Triangle Solver」、単位変換が簡単に行える「Unit Conversion Tool」、タブレットPCやモバイルPCで手書き入力した問題の回答方法を指導してもらうことができる「Ink Handwriting Support」など。

Graphing Calculatorといえば、昔PowerMacに搭載されていた「グラフ計算機」の末裔が思い浮かぶ。このソフトのGUIは画期的なもので私もWindows版のライセンスを購入したが、100ドルという価格は素人には少し高い。Microsoft Math 3.0の価格は19.95ドルだから、マ社は同ソフトを買収して安価に販売を開始したのかと考えた。しかし、この想像は外れていた。

Microsoft Math実際のMicrosoft Math 3.0は.NET 2.0アプリである。さっきから購入しようとしているのだが、「Error Number: SYS_000001」と出て先に進めないのだ。もっともFree Trialのページには「This product is for U.S. customers only.」とあるので、実際に購入できないのかもしれない。とりあえず無料お試し版をダウンロードして使ってみた。

メイン画面は右のとおりで、中高生向けにデザインされている。左のリモコンっぽい画像はスキンが変更できるようになっていて、パンク調のものから花柄まである。機能のほうは、GUIの完成度という点では「グラフ計算機」に遠く及ばない。たとえば右図に表示されている3Dグラフは、マウスで自在に回転させることができないのだ。グラフ計算機では関数グラフも不等式の領域表示も連立方程式の解も同じパネルで扱えたのだが、Microsoft Mathでは切り替える必要がある。

Triangle Solverよい部分もある。「Worksheet」というタブで過去の履歴が保存されるのは便利だ。履歴の出力結果には縮小版のグラフも付いてきていて、命令内容が思い出しやすくなっている。結論からいって、20ドルくらいなら払ってもいいのではないだろうか。(先に述べたように、日本で購入できるかどうかは疑問だが。)

Graphing Calculator以外の機能は、あまり大したことはない。Formulas and Equations Libraryというのは単なる公式集で、そこに好きな数字が代入できるようになっている代物だ。(なぜかアインシュタインの公式が含まれている。)MathWorldのようなものを期待してはいけない。また「Triangle Solver」は「三角形の問題」ではなく「三角比の問題」だった。

Tags: PC
本日のツッコミ(全100件) [ツッコミを入れる]

Before...

Link GregoryZet [Тамада на свадьбув Симферополе оригинальная программа]

Link Сreativmut [Была вчера в школе, хоть мы и терпеть не могли ее, когда т..]

Link Andrewswent [Существует такая услуга - добровольное медицинское обслужи..]


2007-05-19

Link Excel VBA互換のOpenOffice.org Calc

Microsoft Office System 2007について、新機能の搭載やマルチスレッドの導入など評価できる点もあるものの、UIの大幅な切り替えには賛同できない。操作性を元に戻したバージョンをOffice Classicとでも銘打って発売してほしいくらいだ。これは冗談ではない。実際、「Classic Menu for Office 2007」というアドインが販売されている。もはやOfficeはシステムに近いほど複雑化しているのだから、機能向上と使い勝手の向上とを交互に進めていけばよかったのに、無茶なことをしたものだ。

Novell OO.oところであまり(というか全然)話題を呼んでいないのだが、「OpenOffice.org CalcがExcel VBAをサポート」という記事には驚嘆した。従来、マクロの入ったExcelファイルをCalcで開くと、マクロはすべてコメントアウトされる。またOO.o BASICはVBAとはオブジェクトモデルが異なっているため、そのままのコードではまず動作しなかった。ところが同記事によれば、Novellを中心にExcel VBAへのネイティブ対応が進められているという。そこで、OpenOffice.org Novell Edition 2.0.4(Windows版)を実際に試してみることにした。

ご覧のとおりNovell Editionはアイコンが異なる。落ち着いた配色はGnomeを思わせ、悪くない。試しに、R1C1:R9C9まで九九の表を作る簡単なマクロをExcelで書いてみた。

Sub multiple_table()
    Dim i As Long, j As Long
    Dim m(1 To 9, 1 To 9) As Long

    For i = 1 To 9
        For j = 1 To 9
            m(i, j) = i * j
        Next j
    Next i

    Range("A1:i9").Value = m
End Sub

2次元配列を上のように内側からアクセスするのは、実はVisual Basic 6.0では最善ではないらしい。VB6では多次元配列は最終列しか要素数が変更できないことから想像がつくように、多次元配列のメモリ保管順序は(0,0)→(0,1)→(0,2)ではなく(0,0)→(1,0)→(2,0)のように進むそうだ。しかしここでは考慮せずに先に進む。

マクロの確認上のマクロを標準モジュールに保存してxlsファイルを作り、OO.o Calc(Novell)で読み込んでみる。すると、Excelと同じようにマクロの有効・無効を確認するダイアログが表示される。「Enable」にしてマクロを実行させてみると、たしかにそのまま動く。すばらしい。

いくつか試してみたが、参照設定を必要とするような非標準的なオブジェクトを使うものはダメなようだ。たとえばADODBやMSXMLなどからインスタンス化したものは受け付けてくれない。

Tags: Excel PC

2007-05-20

Link Google Maps API 2.3で少しずれる

1年ぶりにGoogle Maps APIを使ってみることにした。前はKsGMapを利用したのだが、もはや内容を忘れている。調査の段階からやり直すことにした。PHPでのラッパーとして「GoogleMapAPI-2.3」というものがあったので、今度はそれを使わせてもらう。

GoogleMapAPI.class.phpの使用例を覗いてみると、「addMarkerByAddress」という関数がある。これは住所を引数にとって位置情報を得るもので、こういうのをGeocode変換というらしい。幸いにも、一時中止など紆余曲折を経て2006年12月から日本国内の変換もGoogleで行なえるようになった。

function getGeocode($address) {
    if(empty($address))
        return false;

    $_geocode = false;

    if(($_geocode = $this->getCache($address)) === false) {
        if(($_geocode = $this->geoGetCoords($address)) !== false) {
            $this->putCache($address, $_geocode['lon'], $_geocode['lat']);
        }
    }

    return $_geocode;
}

上にあるとおり、GoogleMapAPI.class.phpでは、まずキャッシュに問い合わせるようになっている。このキャッシュはMySQLで保存されていて、キャッシュにデータが存在していなければGoogle(ないしはYahoo!)を使って位置情報を取得し、putCacheでMySQLに格納する。UTF-8ではなくEUC-JPを使っている場合には、この関数を変更することになるだろう。

地図のズレさて、私が未だに理解できない現象は、このキャッシュ機能を有効にした場合に発生する。どういうわけか、キャッシュが存在するときには西南西方向へ数メートル位置がずれて表示されてしまうのだ。図でいうと、右側がキャッシュなしの場合の位置情報、左側がキャッシュから拾った位置情報である。データベースからデータを拾ってGoogle Mapで表示させると左側を指すので、位置情報を取得した時点ですでに差異が生じていると考えられる。それにしても、キャッシュがない状態では問題ないのが解せない。またあとで考えよう。

Tags: web

2007-05-22

Link 再計算時間を測定するアドイン

ふと気づいたのだが、「風船」という名前は実に風流だ。英語のballoonはあからさまにballだが、それを「風に乗る船」に見立てる感覚は私には真似できない。『大辞林』を引いてみると、気球のことを昔こう呼んでいたらしい。紙風船は古くからあったように錯覚していたのだが、意外と明治期の産物なのかもしれない。むかしは鞠だったのかしら。ぜんぜん関係ないけれど、「花いちもんめ」の冒頭「たんす長持ち」の「長持ち」が家具なのだと知った。長持ちするのだと思っていた。

話を戻す。Excelの関数計算に要する時間を測定する方法については、「Excel 2007におけるパフォーマンスの改善」に詳しいと以前書いた。このところ海外の技術系ブログを覗くようにしているのだが、イギリスの「Methods In Excel」というブログで上記測定法を上品なアドインとしてまとめた「MIE Cal Tool」が提供されているのを見つけた。

ただし、残念なことにそのままでは動作しない。このアドインはExcel 2002以上(?)、それも英語版を前提とした作りになっているので、Excel 2000日本語版で使うには変更を施す必要がある。といっても、標準モジュール「mMenues」のAddButton()関数を変更するだけだ。私は次のようにしている。

Sub AddButton()
    Dim NewM As Variant, NewC As Variant
    RemoveButton

    Set NewM = Application.CommandBars("Worksheet Menu Bar").Controls.Add(Type:=msoControlPopup)
    NewM.Caption = "&CalTool"
    NewM.Tag = "CALTIME"
    Set NewC = NewM.Controls.Add
    With NewC
        .Caption = "Cal&Time"
        .OnAction = ThisWorkbook.Name & "!RunCALTIME"
        .TooltipText = "Open " & gcsMsgBoxHead
    End With
End Sub

メニューがアイコンではなくなるが我慢しよう。Excelに慣れると100文字を超える式を平気で作るようになってしまうが、現実に再計算にかかる時間を計測しておきたい。

Tags: Excel

2007-05-24

Link 変動要因分解

中国の外貨準備の有効活用に関する議論」のついでだったと思うのだが、「“確率”の定義」という題名に興味を引かれたので読んでみた。うーん。「確率論では、確率を『無定義語』とすることで、困難を回避している」というのだけれど、著者は「無定義語」の意味を取り違えているのではなかろうか。著者自身が述べているように、確率自体は3つの公理を満たす測度として「定義」されている。無定義語というのは、その用語自体は定義されずに他の公理や定義の中に登場するような類のものだと私は理解していたのだが。

閑話休題。日本国籍で販売されているインデックス型の外国株式投資信託を積立がわりに利用している。海外ETFを使わない最大の理由は納税面その他の面倒さで、手続きに要する時間も費用のうちと考えていることもあって、いまのところ乗り換える予定はない。1日に1回Yahoo! Quotesで価格を確認し、ひと月に1回購入する。この繰り返しだ。

日本国籍の投資信託は、Yahoo! Quotesで確認できるし円建てのため価格が把握しやすい利点がある。その半面、価格変動の要因が証券にあるのか為替にあるのかが隠蔽されてしまう欠点もある。そこで、価格変動要因を証券と為替とに分解できたら便利ではないかな、と考えた。

インデックス型の海外株式投信はMSCI KOKUSAIに連動させることを目標としている。MSCI KOKUSAIがどういうものなのかは、「世界の株式マーケット指数」を参照のこと。この指数の時系列データはMSCI.comでユーザー登録すれば得られる。為替のほうは簡単に入手できるから、あとは投資信託の基準価格の時系列データと合わせて回帰分析なりすればいい。

しかし現実は甘くない。あとで気がついたのだが、海外株式投信はインデックス型に連動させることを「目標としている」だけで、実際に連動しているかどうかは別問題だ。これも調べてみると、当たり前だが若干ずれている。これが確認できたのが2月末で、それから策を考えていたのだが、上のとおり「時間も費用」というわけで放り投げたままだ。わかったところでオプションが変わるわけでもないし。

Tags:

2007-05-25

Link CTUのせい

自宅の無線LAN環境を改善しようと試み、そのほとんどに失敗してきたことを書いてきた。現環境は、リンクシスWAP54G-JP V2を御用達の無線LANアクセスポイントとしている。リピーターを使わず、1台のみで動作させるようにした。そのほうが安定するようだ。

いまでも月に数回、PCを起動するとインターネットにアクセスできないことがある。私はずっとアクセスポイントがハングしたと思って電源を再投入しにいったわけだが、事実は異なっていることに先々月ようやく気がついた。アクセスできないのは、CTUの接続が切れているからだ。一括オンオフのマルチタップで電源再投入を行なっていたので、問題の切り分けが正しくできていなかった。反省するばかりだ。

CTUには「自動再接続」機能がもちろんあるのだが、NTT西日本自身が認めるように、再接続に失敗することがある。このときせめて時間をおいて再接続しなおしてくれればよいのだが、そのまま放置されるのだ。eoの光ファイバーではまったく問題ないし、フレッツだって通常の(プレミアムでない)光では支障ない。CTUの改善を待つしかないか。

Tags: PC

2007-05-27

Link イネ科花粉を発症する

雑木林の高枝に、ふだん目にせぬ鳥がいた。双眼鏡で観察する。細身で尾が長く、白黒の鳥だ。野鳥図鑑をあたってサンショウクイであることを知る。絶命危惧種らしい。さえずりも聞ける。最後がクイで終わる鳥は、ヒシクイ・ムシクイ……ほかにいたかな。

土曜日に散歩に出かけ、川沿いを3時間歩いた。完成されたウグイスのさえずりが聞けてよかったのだが、その代償として目がかゆくなり、くしゃみが出るようになってしまった。どうやら私はイネ科花粉症を発症したようだ。カモガヤの花が咲いていたので、まず間違いなかろう。

Tags:

2007-05-29

Link HTAはVBScript→JScriptの順

最低レベルのGUIでよい場合には、VBScriptを使うのが最も簡便だ。VBScriptはInputBoxとMsgBoxとを備えているから、インターフェイスを通じて最低限の入出力が行なえる。もう少し装備を増やしてチェックボックスやボタンなどのコントロールが使いたいなら、VBScriptにIEオブジェクトを組み込むか、もしくはHTA(HTML Application)を使うことになるだろう。

きのう偶然HTA Developers Centerを見つけたので、Extreme MakeoverPart 2という初心者向け入門記事を読んだ。

記事はためになったが、読みながら疑問に思ったことがある。それは、ウィンドウサイズについてまったく触れられていない点だ。HTAタグの要素として存在するかと思いきや、それも違う。どうやら、他のHTMLファイルと同じようにJavaScript(あるいはJScript)で制御しなくてはならないようだ。このときコツが2つある。

<script type="text/VBScript">
    Sub Hoge
        MsgBox "hoge"
    End Sub
</script>

<script type="text/VBScript">
    Sub Foo
        MsgBox "foo"
    End Sub
</script>

<script type="text/JScript">
    var htaWidth = 400;
    var htaHeight = 250;
    window.resizeTo(htaWidth, htaHeight);
    window.moveTo((screen.width - htaWidth) / 2, (screen.height - htaHeight) / 2);
</script>

<head>
<title>Hoge and Foo</title>
<HTA:APPLICATION
     APPLICATIONNAME="Hoge"
     SCROLL="yes"
     SINGLEINSTANCE="yes"
>
</head>

<body>
<input type="button" value="Hoge" name="btnHoge" onClick="Hoge">
<input type="button" value="Foo" name="btnFoo" onClick="Foo">
</body>

1つは、ウィンドウサイズを変えて位置を変更させるJavaScriptはHTAタグよりも前に書いておく点。HTAのあとに持ってくると、一瞬画面左上にウィンドウが表示されてから移動するので、ちょっと見苦しい。

もう1つは、VBScriptをJavaScriptよりも前に書いておく点。このようにしないとエラーが発生する。以上を考慮に入れると、scriptタグはファイルの先頭付近に持ってくることになる。実は、昼間かんたんなユーティリティを作っているときこの事実に気がつかずハマってしまい、しかたなくVB6で作ったのだった。悔しいので自宅で調べてみて、ようやく判明した次第である。

HTA Developers Centerに置いてあるHTA Helpomaticは悪くない。これは各要素のサンプル集で、このアプリ自体がHTAで作られているのでソースを見ることができる。

Tags: 言語 PC

2007-05-30

Link 内周から記録

ディスク駆動装置の角速度(回転数)が一定だと、単位時間にアクセスできる情報量は必然的に外周のほうが内周よりも大きくなる。早い話、外周は内周よりも早くアクセスできる。ハードディスクは外周からアクセスするし、レコードも外周からだ。レコードではテンポの遅い曲を終わりに収録することで内周部分の情報量の少なさをカバーしている――というような記事をどこかで読んだ。

ところがCD-DAの読み取りは線速度一定で、内周から読み込んでいく。このためCD-Rの記録でも内側から書き込んでいくのだが、書き込み時は角速度が一定(少なくとも最内周から数分ぶんは)であるため、最初のほうは記録に時間がかかることになる。例えば700MBのうち40MBしか使わないときなどには最も速度が遅い状態で書き込んでいるわけで、なんとなく勿体ないと先ほどまで思っていた。

ひさしぶりにCD-Rを手に取ってみて、外周のほうが傷がつきやすいことに気がついた。中心は透明なプラスチックになっていて記録部分ではないが、外側はかなり端まで記録部になっている。もし外周から記録していたら、ちょっと傷ついた途端に読めなくなる危険が高まるだろう。CDの容量を使い切っていることはそんなにないから、外側数mmが傷ついても問題のないことが多い。よくできているものだと感心した。

Tags:

2007-05-31

Link gravitasの用例

とある単語練習帳を読んでいたら、「gravitas」の用例として次の文に出会った。

The head of the committee never failed to carry herself with the gravitas she felt was appropriate to her office.

私は未熟なため、こうした文に出会うといったん立ち止まってしまう。しかたなく、頭を分析モードに切り替えて解読する。これは連鎖関係節で、そのため関係詞が主格であっても省略されているのか。thatを挿入すると、

The head of the committee never failed to carry herself with the gravitas [that] she felt was appropriate to her office.

となる。

「gravitas」の訳語として『ジーニアス大英和』には、「きまじめさ、実直さ」と出ているが、これはどうかと思う。ODEを見ると「dignity, seriousness」とあるし、上の例文からも「威厳」のような雰囲気がある。「きまじめ」「実直」では、ちょっと軽い(「grav」の語源にそぐわない)。『リーダーズ』には「厳粛さ」と載っていて、こちらのほうが近いのではなかろうか。

この文は大学入試の英文和訳問題として使えそうだ。いやむしろ、機械翻訳にかけると性能差が如実に表われるかもしれない。そう思ってWebで使える機械翻訳数種に通してみたので、以下に結果を披露する。ひどい順に並べていこう。

決して、委員会の頭が、彼女が感じた厳粛さによって振る舞うことに失敗しなかった 彼女のオフィスに適切でした。(OCN)

委員会のトップは常に彼女がだった彼女のオフィスに適切感じたgravitasとの彼女自身を運んだ。(Google)

これらは0点だろう。Googleのほうはgravitasが単語帳にないようだし、carry onselfやnever fail toも訳せていない。OCNの「委員会の頭」というのもひどい。「かしら」と読ませたいのだろうか。

彼女が感じた厳粛さでふるまうために必ず失敗されない委員会の委員長は、彼女のオフィスにふさわしかったです。(Yahoo、Infoseek)

これは「was」を本動詞ととった誤りで、連鎖関係節が見抜けなかったようだ。残念ながら0点だろう。

委員会の代表は、彼女が彼女のオフィスに適切であると感じた厳粛と共に振る舞うのに決して失敗しませんでした。(excite)

carry oneselfが訳出できているのに、with句で失敗しているのは意外だ。本動詞自体は合っているので、構文解析は正しく行なえているのだろう。30点。

委員会の長は、必ず、彼女がオフィスに適切だったと思った厳粛で振る舞いました。(so-net、livedoor)

これがいちばんマトモだろう。構文解析は正しく、never fail toも適切に訳せている。「厳粛で」はどの翻訳も変だが、なぜだろうか。時制が変なのと、オフィスの誤訳が残っている。50点くらいか。

直訳すると下のようになる。

その委員長は、彼女自身が職務に適切だと感じた威厳でもって常に振る舞っていた。

私は次のように訳す。

その委員長は威厳正しくあるのが職務にふさわしいと感じ、彼女自身また常にそう振る舞っていた。

その委員長は常に威厳を失わなかったし、彼女自身委員長とはそういうものだと思っていた。

Tags: 言語


プロフィール

渡辺 慎太郎(na@10days.org)

分野別表示

Admin | Client | Dev | Excel | Linux | PC | PDA | Web | iPad | web | 家電 | 文具 | | 英語 | 言語 | | 音楽

月別表示

1999|07|
2003|05|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|

最近の記事

雨量情報 dictionary.com Yahoo google Yahoo! 路線情報 東京アメッシュ l-mura l-aka l-momo 目次 r-mura r-aka r-daidai r-kiiro asahi.com nogulabo r-sora r-midori r-midori r-momo