コンピュータの最近のブログ記事

NEC・レノボ提携

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

先日知り合いから、NECとレノボがパソコン事業で提携交渉を進めていると聞いて、一瞬耳を疑った。別に知り合いを信用しない訳ではないが、改めてGoogleで検索してみると、確かにそうであった。そこで、読売新聞の記事をベースに私なりにまとめてみる。

NECといえば、その9800シリーズが1990年代の前半、日本ではパソコンの代名詞で、少なくとも国内では、IBM、富士通などの競合メーカの追随を許さなかった。

その支配を少しでも突き崩そうと、IBMは、PC/AT互換環境で日本語表示を実現するDOS/Vというアーキテクチャを考え出した。当時のハードウェア性能では、専用日本語表示ROM領域をもたず、それをRAM上に展開するDOS/Vは、いまいちパフォーマンスに難があったが、それでも、富士通だけでなく、コンパックなどの米国企業も、日本市場に参入するために、DOS/Vアーキテクチャを利用した。

当時日本でPCの寡占状態であったNECは、98アーキテクチャがDOS/Vと全く互換性がないという理由もあって、なかなかDOS/Vに踏み切らなかった。もしかして、DOS/Vなんて所詮子供だましで実用にならないと軽視していたのかもしれない。

それでも、日本市場での圧倒的強さがあったので、1990年代、NECはパソコンで世界2位のシェアを占めていた。当時の世界1位はたしか、IBMであった。

ところが、IBMのPC/ATアーキテクチャ公開路線が功を奏したのか、雨後の筍のように、DOS/Vアーキテクチャのマシンを製造・販売する会社が続々と現れてきて、ムーアの法則による指数関数的なハードウェア性能の向上と相まって、DOS/Vマシンは活況を呈してきた。

そのような新興企業のほとんどは米国であって、コンパック、ゲートウェイその他、最早社名も覚えていないような多くの会社が現れてきた。台湾でもエイサーが気を吐いた。個人的には当時、サスティーンという無名の米国メーカーのパソコンを買ったことがある。いまその会社はどうなっているのだろう。

そういう新興DOS/V陣営の小回りのよさについていけず、IBMはじりっじりっと、パソコンのシェアを落としていった。大企業だとどうしても、高コスト体質になってしまうのである。NEC然りである。98アーキテクチャにしがみつくことが時代遅れだと悟るのが遅すぎた。

結局、パソコン分野で利益を出すことができないと判断したIBMが、中国企業のレノボにパソコン事業そのものを売却して、実質的にパソコン事業から撤退したことはよく知られている。2005年のことであった。

それでは、今世界のパソコンの台数ベースのシェアはどうなっているのだろうか。読売新聞の記事から引用してみる。

順位メーカーシェア(%)
1ヒューレット・パッカード19.7
2デル12.6
3エイサー12.6
4レノボ8.2
5東芝5.2
6アスース(台湾)4.1
7アップル3.7
8サムスン電子2.1
9ソニー2.1
10富士通1.8
11方正科技(中国)1.2
12NEC0.9


これをみると、レノボはよく健闘しているといえる。IBMからPC事業を買収した際に継承したシェアをほとんど失っていないか、寧ろ微増しているかもしれない。一方のNECの体たらくはどうしたことか。ほとんど消えかかっているではないか。実際NECは、東芝の堅実性も、ソニーのファンシー性も、富士通の先進性も全く出せないで、特徴のないパソコンを出すにとどまっている。

すると、今回の提携も、NECがレノボに頼み込むような形なのだろうか。その提携の内容は、次のとおりである。

  1. NECのパソコン生産・販売子会社にレノボが出資するか合弁会社を新設
  2. NECとThinkPadのブランドは、それぞれ維持
  3. NECの山形県の工場は維持

こうして、製品開発を一緒に行い、部品や資材を共同で買うことで、製造コストを引き下げ、販売価格が下がっても利益を出せる体質をつくる狙いがあるという。それが果たしてうまくいくかどうか、傍目には疑問であるが、NECは、三菱重工などともに、日本の宇宙開発に深く関与している会社なので、少なくとも技術力の蓄積はある。レノボはそこに期待したのだろうか。あるいはレノボは、日本市場にさらに食い込むために、東芝や富士通などに声をかけたが相手にされず、相手にしてもらえたのが、パソコンで閉塞しているNECだった、というストーリーもありえる。すると、もしNECにも振られたら、次の候補は、上記ランク表の外の、エプソンだったりしたかもしれない。

一方でNECにおいて、パソコン事業の売り上げは約2500億円で、全体の7%程度に過ぎず、営業利益はかろうじて黒字だが、お荷物になっている可能性もある。すると、NECは、IBMがしたように、パソコン事業をレノボに売却して、パソコン事業から完全に撤退する可能性もあるとみる。レノボはここ5年で、そうやって取り込んだリソースを活用するスキルをマスターしたと思われ、もしNECから事業売却を受けても、なんとか自家薬籠中のスキルを駆使して乗り切れるのではあるまいか。ともかく、前途多難で利益の薄いパソコン事業で頑張るのは大変である。

羊歯のグラフィック

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

先日、ローレンツのアトラクタにおいて、簡単なカオスの描画を示したが、もうちょっと審美的なグラフィックを示す。それは、羊歯の葉を計算により表示するアルゴリズムに基づくもので、奥村晴彦『C言語による最新アルゴリズム事典』技術評論社,1991に書かれていたコードを利用している。

ところで、羊歯といえば、クラシック・ギターの名作曲家、フェルディナンド・ソルに「もしも私が羊歯だったら」の主題による序奏と変奏、という曲があって、ロマンチシズム溢れる曲は何度聴いても飽きない。

その羊歯のグラフィックとは、次のようなものである。

単なる計算だけで、羊歯の葉が、かなりリアルに再現されるとは興味深い。どんな計算なのかと興味をもたれる方もいらっしゃるかもしれないので、例によって、C++ビルダのメインの部分のソース・コードを以下に示す。奥村晴彦氏のコードを流用しているので、私のオリジナリティはほとんどゼロであるが、せめてもと、色を変えた三種類の羊歯を用意し、紅葉と微妙な色合いを出してみた。

そもそもが、a[] ~ f[]という配列が謎だし、その後の計算も、自明な再帰呼び出しになっているわけでもない。コードは、ローレンツのアトラクタよりもはるかに見通しがよくない。しかし、部分が全体と相似なので、フラクタルと呼んでもいいだろう。こういう羊歯みたいな構造は、大抵の生物の一部に見られるので、神はフラクタルがお好き、ということになるのかもしれない。

//---------------------------------------------------------------------------
#include <vcl.h>
#include <math.h>
#include <stdlib.h>
#pragma hdrstop
#include "Main.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
double left = -5,bottom = 0, right = 5, top = 10,
              a[] = { 0, 0.85, 0.2, -0.15 },
              b[] = { 0, 0.04, -0.26, 0.28 },
              c[] = { 0, -0.04, 0.23, 0.26 },
              d[] = { 0.16, 0.85, 0.22, 0.24 },
              e[] = { 0,    0,    0,     0   },
              f[] = { 0,    1.6, 1.6, 0.44   };

#define N ( sizeof(a)/sizeof(a[0]))
#define M ( 25 * N )
#define ABS(x)       (x) > 0 ? (x) : -(x)
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
 int i,j,k,r,ip[N],table[M];
double x,y,s,t,p[N];

 s = 0;
 for ( i = 0; i < N; i++ )  {
   p[i] = ABS( a[i]*d[i] - b[i]*c[i] );
   s += p[i];  ip[i] = i;
 }

 for ( i = 0; i < N-1; i++ ) {
   k = i;
   for ( j = i+1; j < N; j++ )   
     if ( p[j] < p[k] ) k = j;
   t = p[i];  p[i] = p[k]; p[k] = t;
   r = ip[i]; ip[i] = ip[k]; ip[k] = r;
 }

 r = M;
 for ( i = 0; i < N; i++ )   {
    k = (int) ( r*p[i] / s + 0.5 ); s -= p[i];
    do { table[--r] = ip[i]; } while ( --k > 0 );
 }

 x = y = 0;
 for ( i = 0; i < 300000; i++ )   {
  j = table[rand() / ( RAND_MAX / M+1)];
  t = a[j]*x + b[j]*y + e[j];
  y = c[j]*x + d[j]*y + f[j];
  x = t;
  Canvas->Pen->Color = clGreen;
  if ( i >= 10 )  {
    Canvas->MoveTo(x*100.0+500.0-1.0,-y*60.0+650.0-1.0);
    Canvas->LineTo(x*100.0+500.0,-y*60.0+650.0); }
 }

 x = y = 0;
 for ( i = 0; i < 300000; i++ )   {
  j = table[rand() / ( RAND_MAX / M+1)];
  t = a[j]*x + b[j]*y + e[j];
  y = c[j]*x + d[j]*y + f[j];
  x = t;
  if ( i%10 == 0 ) Canvas->Pen->Color = clGreen;
  else if ( i%17 == 0 ) Canvas->Pen->Color = clRed;
  else Canvas->Pen->Color = clYellow;
  if ( i >= 10 )  {
    Canvas->MoveTo(x*50.0+200.0-1.0,-y*40.0+600.0-1.0);
    Canvas->LineTo(x*50.0+200.0,-y*40.0+600.0);  }
 }

 x = y = 0;
 for ( i = 0; i < 300000; i++ )   {
  j = table[rand() / ( RAND_MAX / M+1)];
  t = a[j]*x + b[j]*y + e[j];
  y = c[j]*x + d[j]*y + f[j];
  x = t;
  if ( i%10 == 0 ) Canvas->Pen->Color = clYellow;
  else if ( i%17 == 0 ) Canvas->Pen->Color = clWhite;
  else Canvas->Pen->Color = clRed;
  if ( i >= 10 )  {
    Canvas->MoveTo(x*50.0+820.0-1.0,-y*40.0+600.0-1.0);
    Canvas->LineTo(x*50.0+820.0,-y*40.0+600.0);  }
 }

 return;

}
//---------------------------------------------------------------------------

LATEX

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

私は基本的に服装や髪型に無頓着で、独身のときは、一年中ほとんど同じ服で通していたことがあった。寒くなると、単にコートを羽織る程度である。それは、服装なんて粗末でいいというギリシャの賢人の教えに従っているというのは単なる衒いで、要するに面倒くさいのである。別に女性に興味がない訳ではなかったが、服装をきちんとして、それでもてなかったらどうする、最早言い訳がないではないか、それなら、服装を杜撰にしておいて、それだからもてないということにしておく方が気楽ではないかという姑息な思いも少しはあった。

そんな私だが、仕事、特に特許明細書のスタイルには特に拘る。文章の技術的内容も然ることながら、図面と、本文中に入れる数式などの形式に多大の注意を払う。

図面は、私の特許明細書の骨子であって、どのような図面をどのように配置するかで、何日も悩むことがある。図面は沢山あった方が分りやすいという信念があって、それで、会社の図面作成担当の方に多大な迷惑をかけている。しかし、私の明細書の品質の大きな部分が、その図面作成担当の方の、長年培った優れたスキルに依存していることは確かである。

また、数式も私のとてもこだわるところであって、それは私が数楽者であるからなのだが、特に私が担当している統計的発明では、数式こそ命なのであり、一行の数式が、数十行の文章にも匹敵する。

だから私は、特許公報を読んでいて、微分がdy/dxと全角で書かれていたりすると、それだけで読む気を失うほどである。まあせめて、半角であろう。本来は分数形式は、可能な限り分数でイメージとして書くべきと思っている。

そこで、数式は数式エディタに頼ることになるが、その1つのオプションは、MS-WORDの数式作成機能を使うことであろう。しかし、偏見であるが、私はどうもMS-OFFICE系のアプリが好きでなく、使いこなせないである。同様にOPEN-OFFICEに数式作成ツールがあるようだが、これも機能がよくわからない。

そこで注目したのが、ジャストシステムから販売されているカルキングJである。これはもともと、数式計算ツールであるが、数式エディタの機能もある。これはこれで便利なのであるが、カルキングJは、カルキングの簡易版であって、行列が3×3までしか作成できないとか、微分のXドットのような頭につく表記がうまくいかないとか、いろいろ制約があって、ときどきフラストレーションが溜まっていた。

するとやっぱり数式はLATEXなのかな、ということになる。LATEXは10年前に使っていて、その頃は管理職だったので、特許明細書を書くのではなく、マニュアルを遊びで作る程度であった。ところが、パソコンが変わり、LATEXは導入と設定がちょっと面倒なので逡巡していた、ということがある。

そこで最近、「LATEXはじめの一歩」土屋勝著、カットシステムを買って、これにはCD-ROMのインストーラーがついているので、LATEXの再入門となった。ただ、これはあくまでもとっかかりの入門書なので、定番ともいうべき改訂第5版 LaTeX2e 美文書作成入門、奥村 晴彦著、技術評論社も購入した。これさえあれば、大抵はなんとかなる。

LATEXで数式を作成し、特許明細書に取り込む手順は次のようになる。

  1. LATEXのソースファイルをテキスト・エディタで記述する、あるいは、発明者から貰う。数理系・情報処理系の研究者であれば、LATEXはデ・ファクトであり、コードをもらうのも容易である。このとき、複数の数式を一気に書けるので、一明細書につき1つのTEXファイルとなる。
  2. LATEX用専用ツールで、PDFとして生成する。
  3. Acrobatを使って、PDFをJPEGに変換する。
  4. イメージ・エディタでJPEGから切り出して、個々の数式ファイルとしてGIFで保存する。
  5. 特許明細書作成ツールで、個々に数式を呼び出す。ちなみに、私は専用特許明細書作成ツールを自作していて、su01.gif, su02.gifなどのように保存してあれば、自動的に【数1】、【数2】にはめ込まれる。

特許電子出願スペシャリストとしての私の若干の不安は、デフォールトでLATEXで作成した数式イメージが、解像度的に、電子出願に耐えられるかというところである。これはなによりも試してみるに越したことはなく、最近自分が書いた特許明細書に使ってみた。それは、数式が20個もある発明であるが、解像度的に問題は全くなく、また、能率も上がることを確認した。それで随分美麗な数式ができて悦に入っていたのであるが、当然に発明者はそんなこと意に介さない。彼らにとって、こういう数式が普通にあらわれていることは、自動販売機に100円入れて缶コーヒーが出てくる程度のことにすぎない。逆に、dy/dxだの、√(2^x+1)のような数式を書いたら、内心落胆しているに違いないのである、いちいち言わなくても。

LATEXにあまり馴染みのない人用に簡単な例を示す。まず、こちらが、TEXのコードの例である。一見面倒なようでも、前に書いたのを使い廻せばよい。
\documentclass[a4paper, 12pt]{jarticle}
\begin{document}
次のような1階線形微分方程式を考える。
\[
\frac{dy}{dx} = P(x)y + Q(x)
\]
すると、一旦、$ Q(x) = 0$とおいて、$ \displaystyle \frac{dy}{dx} = P(x)y $について解く
定数変化法を用いることにより、
\[
y = e^{- \int P(x)dx } \left[\int Q(x)e^{\int P(x)dx}dx + C \right]
\]
と解が求まる。
\end{document}

これは、次のような数式になる。

コピペ

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

インターネットが普通に使われるようになった10年くらい前から、学生のレポートでコピペが蔓延った。当然といえば当然でそれがレポートとして形をもったものを用意するための最も安易な方法だからである。一方、、当時大学の教授は、分っていても苦笑いしながら見過していたケースが多いような気がする。すなわち、特に研究指向の大学教授にとって、学生のレポートを読むというのは退屈な仕事で、すると、コピペされたレポートを適当にやり過ごすというのも一つの手だからである。

しかし、その程度があまりにひどくなってきて、毎日新聞の記事によると、情報工学系の大学の先生に、そのもてる技術を駆使してコピペを検出しようとする人が出てきた。例えば、阪南大学の花川典子教授である。すなわち、レポートの内容を、主要なインターネット・サイトを巡回して、自動的に比較し、コピペの惧れがある内容を検出する。学内の250台のパソコンが手分けして、各レポートから5つのキーワードを抽出し、そのキーワードを含む上位310のサイトを開いてレポートと照合する。そして、コピペの疑いがあるレポートの部分を赤く表示する。

花川教授はこの夏、前期の期末データとして電子データで提出された58科目5420点のレポートに対してコピペ検出の実験をしてみたところ、12時間半で処理を終え、4割にコピペの疑いがあるという結果を出したそうである。

キーワードで検出するので、多少語尾を変えても検出できるが、正しい引用を明記したレポートもひっかかる。従って、最終的には教員が目で確認する必要がある。

一方、金沢工業大学の杉光一成教授のアイデアに基づく、コピペルナーという製品もある。杉光教授は、もともと文系のバックグラウンド(慶應義塾大学法学部)であるが、法政大学大学院で電気工学を専攻し、知的財産の分野では著名人である。当然に関連の特許出願もあり、特開2009-205674は、学校法人金沢工業大学が出願人で、下記がその請求項1である:

【請求項1】
判定対象となる判定対象データの中で、文献データが引用されているか否かを判定するための引用判定支援装置であって、
前記判定対象データの中から、前記文献データの引用の有無の判定範囲を特定する判定範囲特定手段と、
前記文献データの中から、前記判定対象データとの比較範囲を特定する比較範囲特定手段と、
前記判定範囲特定手段にて特定された前記判定範囲の記述内容を、前記比較範囲特定手段にて特定された前記比較範囲の中から検索し、前記判定範囲の記述内容と前記比較範囲の記述内容の相互の類似度を算出する類似度算出手段と、
前記類似度算出手段にて算出された前記類似度が所定の閾値以上である場合に、前記判定範囲が前記比較範囲を引用していると判定する文献引用判定手段と、
前記文献データの前記比較範囲を引用している前記判定対象データの前記判定範囲を出力する出力手段と、
を備えたことを特徴とする引用判定支援装置。

ううん、この請求項1ではちょっと進歩性厳しいよね、と職業意識が働くが、これは229段落、42図もある労作である。その豊富なコンテンツをベースに減縮すればなんとか特許になるのだろう。

一方で、大学は、コピペに対する罰則を強化しようとする。例えば、一橋大は、授業履修のルールとして、コピペが不正な行為であることを明記した。コピペルナーも導入した。早稲田大は、コピペに対して最大3ヶ月の停学処分を課すとともに、その学期に履修していた全ての登録を無効にする。

一方、慶応大学は、引用部分を明確にするようにとルール付けする。それは私のブログと同じ方針である。私は便利なので結構引用してブログを書く。ただ、引用部分を明記して、なるべくオリジナリティを出そうとは努力している。

私の意見は、早稲田の基準は厳しすぎで、慶応程度でいいのではないか、というものである。というのは、前説に全く依拠しないオリジナルな仕事というのはなかなかないので、引用しつつわずかなオリジナリティを出すのが妥当だと思うからである。コピペを罪悪視しすぎては、角を矯めて牛を殺すことになりかねない、という甚だオリジナリティのない意見で締めくくるとする。

アグスネット

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

友人から紹介されたのだが、アグスネットという便利なサイトがある。どう便利かというと、URLを打ち込むと、下記の一連の情報が得られる。

  1. サイトのタイトル
  2. IPアドレス
  3. 最終更新日
  4. METAタグ情報
  5. サーバ所在地
  6. ドメイン情報
  7. 公開連絡窓口
  8. ネームサーバ
  9. 管理者連絡窓口
  10. 技術連絡担当者

基本的にはURLを入れるが、ジャンク・メールのドメインだけを入れても、うまくいくことがある。例えば、私のブログにBasten@dentistdirectory.comというメール・アドレスで、意味のない書き込みがあったことがあったが、アグスネットは、"dentistdirectory.com"だけからでも検索してくれて、サーバが、米国のシアトル付近にあることまで教えてくれる。また、「外部と接続するオブジェクト」という欄もあるが、これが何を意味するか、なにかのガイドを見ないとわからない。

調べた限りでは、"dentistdirectory.com"はまともなサイトであるようだが、そこにアカウントをもつ人がまともとは限らないので、そこはアグスネットの限界だろう。とはいえ、あるドメインが怪しいかどうか、ある程度の指針は得られるので、有用性は十分にあるといえる。

友人から教えてもらったWebサイトの日経パソコンの記事によると、セキュリティ・ソフトのガードが堅いのに、それにも拘らずコンピュータ・ウイルスが猖獗し、蔓延しているという。以下、私なりに要約してみる。

先ず、引用:

例えば、ドイツのウイルス検査機関「AV-TEST.org」によれば、2008年中には800万件近い新種ウイルスが確認されたという(図1)。 1997年から2004年までは、1年当たり十数万種で推移していたが、2005年には30万種超、2006年には100万種近くの新種が出現。2007 年には、2006年までに出現した数の2倍に当たる新種が、わずか1年で確認された。

記事によると、どんどん新種のウイルスが作成されている理由は、セキュリティ対策ソフトなどの性能向上のせいもあるという、すなわち、作ってもすぐに駆除されるので、ウイルス作者は、半ば仕方なく、新手を出すという次第である。

以前は、コンピュータ・ウイルスは、単なる悪戯として作成されていた。すなわち、コンピュータ・ウイルスは所詮遊びとはいえ、APIをフックしたりとある程度高度なプログラミング技術を必要とするので、プログラマにとってほどよいチャレンジである。例えば、画面の文字を崩す程度である。

ところが最近では、住所・氏名・銀行口座パスワードなどの個人情報の不正入手をはかったり、その情報を使って悪意ある人間が勝手に口座からお金を引き落としたりと、手口が悪化してきた。なんとそういうブラック・ビジネスは、300億円もの市場規模だという。

また、ウイルス作成ソフトは簡単にWebで入手できる。なにかのキーワードを入れてOKをクリックするだけで、そのキーワードに特有のウイルスになるので、その時点で「新種」である。

ただ、無料で公開されているウイルス作成ソフトは、機能が限定されている。ところがなんと、有料で高機能のウイルス作成ソフトもあるという。1本、数万円から数十万円。ご丁寧に、ユーザーサポートが付くという。当然かもしれないが、有料で高機能のウイルス作成ソフトにも不法コピーが出回っているという。

当然に、ウイルスは、数だけではなく質も変化している。感染経路、感染後の所作でより巧妙になっている。例えば、Webサイトにアクセスするだけ、ファイルを開いただけで感染するウィルスもあるようである。PDFなどそのターゲットのようで、そのせいかやたら、Adobeのサイトから、Acrobatのアップテートが飛んでくる。

ウイルスには、「ダウンローダー」と呼ばれる、ほかのウイルスをダウンロードするウイルスもあるようである。また、「ボット」と呼ばれる、踏み台として利用されるウイルスもある。

記事によると、大きな被害をもたらしている、現代の主要なウイルスは、下記の4つだという。

  1. Webウイルス
  2. USBウイルス
  3. PDFウイルス
  4. Winnyウイルス

日経パソコンの記事の記事のWebでの紹介はここで一旦終わっているので、これらのウイルスについて、追々自分でも調べてみたい。

文系プログラミング

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

私がまだ独身で、A型肝炎からなんとか復帰した頃のことである。それまであまり興味がなかったコンピュータ・プログラミングをやってみたくなった。もしかして、A型肝炎ウィルスによって精神が変質したのかもしれない。とはいえ、当時は、8ビット・パソコンと、テープ・ベースでBASIC言語をやるのが関の山の頃である。

当時の典型的なパソコンといえば、NECの88だったが、私の好みで、シャープのMZ2000を買うことにした。とはいえ、当時の私の1ヶ月の給料より高い。それは、パソコンが高かったのか、給料が安かったのかどちらかと聞かれたら、まあ両方です、と答えるよりない。

ともかく、秋葉原まで出かけていって、MZ2000を買った。貯金もほとんどなく、清水の舞台だったが、プログラミングに対する興味、そして、将来に対する投資のためであった。というのは、当時機械系の会社にいて、仕事が面白くなく、なんとしても転職しなくてはと思っていたのである。

具体的に何をプログラミングしたかったのかというと、当時のBASIC本には、カレンダの作り方など載っていたが、もう少し凝ったことをやってみたかった。例えば、数値計算である。具体的には、πの計算、常微分方程式、偏微分方程式などである。

πの計算では、多倍長計算を素朴に実装して、πを255桁まで計算した。遊びに来た友人に見せたら、呆れて何も言わなかった。常微分方程式では、数値計算の教科書を買って熟読し、ルンゲ・クッタの方法で、天体力学の初歩の問題、すなわち、惑星の二体問題や三体問題を解かせた。三体問題は本当はカオス的軌道になるはずなのに、精度が悪いのか、解が発散してしまった。偏微分方程式は、なにしろメモリ容量が少なすぎて、意味がある問題が表現できなかった。その他、複素関数の留数定理、人口知能の初歩など、8ビット・パソコン上のBASICインタープリターでできることとしては限界のようなことを試していた。ともかく、私がトレーニングとして目指したのは、がちがちの理系プログラミングであった。

そのとき、A型肝炎からの病み上がりだったのに、会社から帰ると、寝食を忘れてプログラミングした。睡眠時間は3時間程度で、食べるものもコンビニ弁当程度だった。よく倒れなかったと思う。こういう経験で、プログラミングの自信がかなりついた。

そして、運良く、今勤務していてる外資系コンピュータ会社に転職できた。MZ2000を買った効果でなくて、おそらく、英語を真面目に勉強していたせいだと思う。

そうして、外資系コンピュータ会社に入ってみると、意外にも、技術部門でないせいか、コンピュータに詳しい人はほとんどいなかった。ただ一人、私より2歳年長のMさんは、相当なプログラミング・スキルで、コンピュータ・グラフィックスの本をみながら、BASICでレイ・トレーシングのプログラムを書いていた。ううん、これには流石に降参だった。

Mさんは、BASICに飽き足らず、Prolog、Cと範囲を広げていった。Prologには流石についていけず、Cは、なんとかMさんに教わりながら、少しずつ覚えた。

ところが、天は皮肉なもので、私からみて圧倒的な秀才であるMさんは、病に倒れ夭折してしまった。それで、よくも悪くも、コンピュータに関することは私にのしかかり、前に述べた電子出願プロジェクトで、嫌が応でも、まだまだ未熟なC言語を駆使してプログラミングせざるをえなくなった。こうして、私の長く哀しい文系プログラミングの歴史が始まるのである。以下、別稿とする。

素因数分解

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

急に、素因数分解のプログラムを書いてみたくなった。といっても、暗号解読用の数百桁の整数の素因数分解なんかじゃない。私にはそんなスキルはない。単に、せいぜい8桁程度の整数の素因数分解である。

実は最近、全くプログラミングをやっていないので、そのリハビリ用に書いてみたくなっただけである。当然ながら、素因数分解を計算するためには、素数を用意する必要がある。すなわち、素数を用意して、一番小さい素数である2から順番に割っていけばいいだけである。割り切れたら、同じ素数でもっと割り切れないか試して、割り切れなくなるまでそれを続ける。

というあまりにも素朴なアルゴリズムであるが、プログラミングしてみると、私のスキルでは、意外に面倒である。以下、Perlのソースコードを示す。

これの結果を、ここに示す。私はこういうのを眺めていて飽きないのだが、数楽者ならでは?だろうか。特に、下記のように、大きさのあまり違わない5つの素数で分解されるというのは、いかにも感じが出ているような気がする。
9000072 = 2^3 3^4 17 19 43
9000075 = 3 5^2 7^2 31 79


#prime_factorization
$N = 10000000;
$max = CALC_PRIME($N); # 10000000まで素数を計算
# 結果は、$PRN[$i]に入る。

# 9000000から9000100までの素因数分解
for ( $a = 9000000; $a < 9000100; $a++ ) {
printf "%d = ",$a;
Prime_Factorize($a);
printf "\n";
}


sub CALC_PRIME {
$N = shift;
$lim = sqrt($N);

for ( $i = 2; $i <= $lim; $i++ ) {
$k = 2;
$s = 0;

while ( $s < $N ) {
$s = $i * $k;
$PRIME[$s] = 1;
$k++;
}
}
$PRIME[0] = $PRIME[1] = 1;
#素数だけを抽出
$j = 1;
for ( $i = 2; $i < $N; $i++ ) {
if ( $PRIME[$i] == 0 ) {
$PRN[$j++] = $i;
}
}
return $j;
}


sub Prime_Factorize {

my $NUM = shift;
my $n = $NUM;
my $P;

for ($i = 1; $i < $max; $i++ ) {
$P = 0;
while (($n % $PRN[$i]) == 0 ) {
$P++;
$n = $n / $PRN[$i];
}
if ( $P == 1 ) {
printf "%d ",$PRN[$i];
} elsif ( $P > 1 ) {
printf "%d^%d ",$PRN[$i],$P;
}
}

return;
}

サイボウズ

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

ネットの書評かなにかを見て、青野慶久氏の「ちょいデキ!」文春新書を買った。青野慶久氏とは、グループウェアのサイボウズの社長である。

それでどんな生い立ちかと思ったら、1971年に愛媛県に生まれ、コンピュータ少年として育ち、地元の名門(野球も強い)今治西から、大阪大学工学部情報工学科卒。なんだ、そこそこエリートじゃん。

ところが、コンピュータのプログラミングにそれなりの自負があったのに、先輩の凄いコードをみて愕然とし、プログラマの道を諦めてしまう。これも謙遜のようだが、自分の能力をあっさり見切るというのは、できそうでできないことである。

大学を卒業すると、松下電工に入社し、なぜかエンジニアでなくて、営業企画部に配属された。そこでITオタクとして、コンピュータの導入を訴えるものの、伝統的な日本の会社である松下電工では、どうもなじめず、社内起業に応募して、ITカンパニーの走りのようなことをやったのが、後のサイボウズの原点となった。

で、いろいろな経緯があって、松下電工をスピンアウトし、同僚の一人だった高須賀氏を社長として、1997年に、サイボウズが発足した。結構若い会社である。因みに、大阪大学時代に、凄いと感心した先輩である畑慎也氏は、サイボウズの仲間となる。これも、なにかの縁である。

こうして努力の甲斐あって、2006年には、サイボウズは、東証一部上場に漕ぎ付けた。そんな経歴を青野氏は、謙遜を込めて、「北斗神拳」よりも「太極拳」と、訳のわからない言い方で表現する。それを、ちょっと仕事ができるという意味の、「ちょいデキ!」とも表現する。

それは一体どんな内容なのか。例えば、「大きな目標よりも小さな目標。」「事実をそのまま冷静に受け止めよ。」「準備を頑張らなくていい。」「すぐやらなくても、できるときちょっとずつやればいい。」「モチベーションなくても、こつこつやっていこう。」「言いたいことは、礼儀を保ってきちんと言おう。」「仕事とプライベートを無理してわけなくていいじゃん」。こういう調子で、いろいろなヒントが続く。

すると、思ったのは、一つ一つは「ちょいデキ!」で、少し気の利いた人なら誰でもできるのかもしれないが、青野氏の凄いところは、こういう細かい努力のベクトルを揃えて、大きい流れにすることができることである。すると、「ちょいデキ!」の積分は、最早「ちょいデキ!」ではなく、「スゴデキ!」である。私だったら、一つ一つはできることもあるし、ほんの部分で、青野氏よりもできるところもあるかもしれないが、ベクトルが揃わないので、積分するとゼロになってしまいそうである。

あと、ちょっとベタだなあ、と思うのは、松下幸之助氏に入れ込んでいることである。少しでも松下電工にいたせいだろうか。私は個人的には、松下幸之助氏は偉いとは思うが、どうもあのおっさん、苦手である。なぜかと聞かれたら、偉そうにいうけど、結局ネポティズムに染まっているではないか、ということである。

もどって、他のページも、「部下を自由に働かせていませんか。」「失敗を深く考えていませんか。」など、部分的に深い内容の章もあるけれども、ずっと軽い乗りが続く。

こうして読み終わっても、結構印象薄かったりする。自分で凄いとアピールしないのがいい。元プログラマ指向で、実は経営者としてより才能があるというのは、ビル・ゲイツと同型であるが、ビル・ゲイツほどのインパクトは全くなくて、普通っぽい。なるほど、これが「北斗神拳」でなく「太極拳」なのか。自然体だけど、サイボウズ、やるじゃん、という感じである。

ゆかしメディアに、マイクロソフトの天才少年の記事があった、もちろん、ビル・ゲイツの生い立ちの話ではない。以下、引用:

世界最年少のマイクロソフトのシステムエンジニア、9歳のマルコ・カラサンくんが注目を集めている。

海外メディアによると、マルコくんはマケドニアに住む小学生で、コンピューターの天才と言われている。マイクロソフトの4種の認定証明書を保持し、すでにWindows7についての312 ページにおよぶ著書も出版している。天才ぶりはコンピューターに止まらず、3ヶ国語を流暢に話し、現在4つめとなる言語を習得中だという。

マルコくんは7歳の時に研究機関で脳の検査を受けたが、その時点で彼の脳は12歳以上の知能レベルに達していた。また特定分野に卓越した才能がある「天才」と呼ばれる人々は、得てして社会的協調性やコミュニケーション能力が低い傾向にあるが、マルコくんはオープンな性格で、高い社交性を持ちあわせているという。

マケドニア出身とは、アレクサンダー大王の血筋かい、と寒い冗談を言いたくなる。

ところで、どうしてこの子が天才なのか、私は理解に苦しむ。例えば、ニコラ・テスラと比べたとき、テスラは5歳にして明確に、創造への志向を示していた。

ところが、マルコくんがやっていることといえば、マイクロソフトの4種の認定証明書を取得したり、3ヶ国語をマスターしたり、と既存のパラダイムの範囲内をなぞっているだけである。それはいかなる定義をもってしても、超秀才かもしれないが、天才ではない。パラダイムに対する「破」がみえないのである。

また、高い社交性も、天才でなく、超秀才であることを示唆する。あるいは、マルコくんは本当に天才なのかもしれない。もしそうだとしても、天才を喧伝するのは、ダイクストラの構造プログラミングや、オブジェクト指向プログラミングに匹敵するような画期的なプログラミング・パラダイムを提唱してからでも遅くあるまい。

そういえば、別のニュースで、日本のマイクロソフトの法人が、日本マイクロソフトと社名を変更するとあったが、どうしてそんなことがニュースになるのか理解できない。マイクロソフトがメガソフトと社名を変更するなら分かるが。おっと、メガソフトは本当にあるソフトウェア会社だった。失礼。

ということで、マルコくんを天才として持ち上げるのは、マイクロソフト、余程話題にこと欠いているとみた。

このアーカイブについて

このページには、過去に書かれたブログ記事のうちコンピュータカテゴリに属しているものが含まれています。

次のカテゴリはスピリチュアルです。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。