Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
 How To Become A Hacker: Japanese
[go: Go Back, main page]

ハッカーになろう (How To Become A Hacker)

Valid XHTML 1.1!

著者 Eric S. Raymond
   esr@thyrsus.com
   Date: Date: 2004/10/28 Revision 1.27

翻訳 山形浩生 <hiyori13@alum.mit.edu> + 村川泰 + Takachin


I. なぜこんな文書を書いたか

 わたしは Jargon File の編集者なので、しばしば熱心なネットワーク初心者から「ウィザード級の大ハッカーになるにはどうやって勉強すればいいの?」といったようなお尋ねメールを頂きます。ところが不思議なことに、こんな大事な問題を扱った FAQ や Web 文書 はみあたりません。というわけで、自分なりのヤツを。

この文書をオフラインで読んでいるなら、最新版は次のところにあります。 http://www.catb.org/~esr/faqs/hacker-howto.html

なお、この文書のさいごには「よくきかれる質問(FAQ)」がついています。この文書についてわたしに質問を送りつけるまえに、まずそれを――二回は――読んでください。

 本書の翻訳はいっぱいあります: ブルガリア語, シナ語 (簡体字), シナ語 デンマーク語, オランダ語, フィンランド語 ドイツ語, ヘブライ語, Hungarian, Italian 日本語, ポーランド語, ポルトガル語 (European), スペイン語, トルコ語, and スウェーデン語。 ちなみにこの文書はときどき変更されるので、これらの翻訳は程度の差はあれ古くなっているかもしれません。

本文書を飾る、9目升目に5つの点の図は、グライダーというものです。これはハッカーたちを何年にもわたって魅了してきたライフゲームという数学なシミュレーションに見られる、驚くような性質を持った簡単なパターンです。ハッカーとはどんなものかについての、いい視覚的なエンブレムだと思います――抽象的で、一見すると謎めいていますが、でも独自の入念な論理を持った大きな世界への玄関口となっているのです。グライダーエンブレムについてはここを参照してください。


II. ハッカーって何?

 Jargon File には「ハッカー(hacker)」という言葉の定義が山ほどあがっています。そのほとんどは、技術的な熟達や。問題解決、限界を克服することといったような話と関係した内容です。でもハッカーになる方法を知りたいなら、ホントに関係ある定義は2つしかありません。

 熟練プログラマやネットワークの天才たちのコミュニティないしは共有文化というものが存在しています。その歴史は初期のタイム・シェアリング・ミニコンピュータや黎明期の ARPAnet の実験にまで遡ることができます。この文化に属する人々が「ハッカー hacker」という言葉をうみだしました。ハッカーたちはインターネットを築きました。ハッカーたちが UNIX オペレーティングシステムを今日のような形にまで作りあげました。ハッカーたちが Usenet を運営し、World Wide Web が使えるようにしたんです。あなたがこの文化の一員で、それに貢献し、その文化のほかの人たちがあなたを知っていて、しかもその人たちがあなたをハッカーと呼んでくれるなら、あなたはハッカーです。

訳注:ARPAnet ARPA ネットワークとは国防省の ARPA の研究委託を受けた大学や政府研究機関を政府関係の研究で相互に情報を交換するために構築されたもので、インターネットの技術的基盤になった。RFC 991

 ハッカー精神は、ソフトウェアハッカー文化だけに限られたものではありません。ハッカー的態度をその他エレクトロニクスや音楽などに発揮する人たちもいます――実はどの科学や芸術分野でも、一番高い水準ではこのハッカー精神が見られます。ソフトウェアのハッカーたちも、ほかの分野での似たような精神を察知して、それを「ハッカー(hacker)」と呼んだりします。さらにハッカー性は、そのハッカーが活躍する個別分野とは無関係に存在するという人もいます。しかしこの文書ではこれから、ソフトウェアハッカーの技術と態度、そして「ハッカー(hacker)」という言葉を生み出した共有文化の伝統に話をしぼります。

 ハッカーを声高に名乗る別の集団が存在しますが、彼らはハッカーではありません。これはコンピュータに侵入したり、電話のただがけしたりする人々(主に男のガキ)です。本物のハッカーはこの連中を「クラッカー(cracker)」と呼び、一切関わりを持ちたくないと思っています。本物のハッカーたちはたいてい、クラッカーは怠惰で無責任であまり賢くないと思っています。車の点火回路をいじってキーなしで車を始動できても自動車エンジニアにはなれないように、セキュリティ破りができてもハッカーにはなれないよ、というのがハッカーたちの文句です。残念なことに、多くのジャーナリストや著述家たちはだまされて、クラッカーについて書くのに `ハッカー hacker'という言葉を使い続けています。真のハッカーたちはこれをとてつもなく不愉快に思っています。

 基本的な違いとはすなわち:ハッカーはものをつくります。クラッカーは壊します。

 ハッカーになりたいならこの文書を読み続けなさい。クラッカーになりたいなら、alt.2600 ニュースグループを読んで、そして自分で思ったほど頭がよくないことがわかったときには、ブタ箱を 5 年や 10 年くらう覚悟をすること。クラッカーについてこれ以上言うことはありません。

III. ハッカー的心構え

 ハッカーは問題を解決し、物事を築きます。そして自由と自発的な助け合いを信条としています。ハッカーとして受け入れられるには、こういう姿勢態度を持つようなふるまいが必要です。そしてこの姿勢を持つかのようにふるまうには、本当にその心構えを信じるしかありません。

 でも、ハッカー文化に受け入れられたいがためにハッカーらしい心構えを身につける気なら、それは勘違い。ハッカーの心構えを本当に信じるているような人になるのは、あなた自身にとって大切なことなんです――学ぶのに役立ち、その意欲を持続させてくれるんです。すべての創造的な芸術と同様、熟達者になる最高の方法は熟達者の精神をまねることです。知識面だけでなく、感情的な面も含め。

あるいは現代の禅詩が言うように:

道をたどり
師をあおげ
師にしたがえ
師とともに歩け
師を見通せ
師となれ

 だからハッカーになりたいなら、以下の内容を何度も唱えて、それを信じ込むこと:

1. この世界は解決を待っている魅力的な問題でいっぱいだ

 ハッカーであることはとてもおもしろいのですが、そのためには相当な努力が必要です。その努力をするには意欲が必要です。優秀な陸上選手は、自分の肉体的な限界を越えて体を機能させるという肉体的な喜びが意欲の源です。同様に、ハッカーになるためには自分の技術をみがき、知性を働かす訓練して、問題を解決することにゾクゾクするような喜びを感じるようでなければいけません。

 あなたが生まれつきこのように感じないなら、ハッカーになるにはまずそのような人にならなくてはいけません。さもないとハッキングへの意欲が、セックスやお金や社会的な名声のようなつまらないことに惑わされてしまうでしょうから。

 (自分の学習能力に対する信頼も育てましょう。たとえ今の段階では大きな問題を解決するのに必要なすべてを知らなくても、その問題のほんの一部から取りかかって、そこから新しい事を学び取れば、次の部分の解決に十分なだけ学べて、そして次へ次へと進めば、いずれ大きな問題全体が解決できると信じましょう)。

2. 同じ問題を二度解くような無駄はいやだ

 クリエイティブな人材は貴重な限られた資源です。世の中にはたくさんの魅力的な新しい問題が解決を待っているんだから、車輪を発明しなおすような無駄なことをしてはいけません。

 ハッカーらしくふるまうには、他のハッカーたちが考える時間は貴重であると信じなければなりません。それをとことん信じて、情報を共有するのがほとんど道徳的な義務であると思えるようになりましょう。問題を解決し、その解答を提供すれば、他のハッカーたちは古い問題にいつまでも取り組みなおし続けずに、新しい問題を解決できるのです。

(作ったものをすべて無償で提供する義務があると思いこむ必要はありません。でもそうするハッカーが、他のハッカーたちから最高の尊敬を受けるのは確かですが。食費と家賃とコンピュータ代をまかなうのに必要なだけ自分の作品を売り込んでも、ハッカーの価値観と矛盾しません。ハッキングしている間、自分がハッカーであることを忘れない限り、家族を支えたり、あるいは金持ちになるためにであっても、ハッキングの技術を使うことはハッカーの価値観と矛盾しません。)

3. 退屈と単純作業は悪

 ハッカーたち(そして一般的にクリエイティブな人たち)は、退屈したり、くだらない反復作業をいやいやこなしたりする必要はないはずです。だってそういうときには、彼らしかできないこと、つまり新しい問題を解決するということが行われていないことになるからです。こういう無駄は万人にとって有害です。だから退屈と単純作業はつまらないだけでなく、本当に悪いことなのです。

 ハッカーらしくふるまうには、これを徹底的に信じ込んで、自分自身のためばかりでなく他のみんな(とりわけ他のハッカーたち)のためにも、退屈な部分はできるだけたくさん自動化してしまいたくなるようにしましょう。

(これには明らかな例外が一つあります。ハッカーたちは時々気持ちの切替えのために、あるいは技術を習得するため、またほかの手段では出来ない特別な経験を積むために、端からは反復ばかりで退屈に見えるようなことをします。しかしこれは好きでやっているのです――思考能力のある人なら、決して退屈を強制されるべきではありません)。

4. 自由は善

 そもそもハッカーたちは反権威主義です。あなたに命令できる人は、何かあなたが興味を持っている問題を解決するのを止めさせてしまえます――しかも、権威主義的な頭の特徴として、そのやめさせる理由もあきれるくらいくだらないものであるのが普通です。だから権威主義的態度に出会ったら、必ず戦わないといけないのです。そうしないとあなたや他のハッカーたちが窒息させられてしまいます。

(だからといってすべての権威と戦えということではありません。子どもには指導がいるし、犯罪者は拘束されるべきです。ハッカーは、命令に従うための時間以上にほしい何かを手にいれるためなら、ある種の権威を認めることに同意することもあるでしょう。しかし、それには制限のついた意識的な取引です。権威主義者が求める個人的な降伏などは提供しないのです)。

 権威主義者は検閲と秘密が大好きです。さらに自発的な協力や情報共有を怪しむのです。彼らは自分たちが管理できる「協力」だけを好みます。だから、ハッカーらしく行動するためには、検閲や秘密、そして責任ある大人に無理強いするような圧力やごまかしの使用に対し、本能的に敵意を感じるようにしなくてはなりません。そしてこの信念 に基づいて行動しなければならないのです。

5. 心構えは技能の代用にはならない

 ハッカーになるには、上記の心構えをある程度身につけなければなりません。しかしスポーツのチャンピオンやロックのスターになろうとしたら、心構えだけではどうしようもないでしょう。同じように、心構えだけでハッカーになれるわけではありません。ハッカーになるには知性、実行力、献身、そして大きな努力が必要です。

 ですから、あらゆる面で姿勢や態度は信用せずに、技能を重視することを学びましょう。ハッカーは、ハッカーもどきの相手をして時間を無駄にしたりはしませんが、技能には頭を垂れます。なかでもとりわけハッキング技能を崇拝しますが、その他どんな技能でもいいのです。ごく少数の人しか身につけられない、ハードルの高い技能は特によいもので、精神的な正確さ、技巧、集中力を必要とするハードルの高い技能での技能は最高です。

 技能がすばらしいものだと思える人なら、自分の技能をみがくのも楽しめるでしょう。そのための大きな努力や献身も、単調な骨折り仕事ではなく、一種のもっと強烈な遊びになるでしょう。そしてハッカーになるには、それが不可欠なのです。

IV. 基本的なハッキング技術

 ハッカーとしての心構えは重要ですが、技術はもっと重要です。心構えは技能の代用にはなりません。ハッカーの誰かが、あなたをハッカー呼ばわりしようなどと夢にでも思ってくれるには、まず身につけるべき基本的な能力ツールキット一式があります。

 このツールキットは時代と共にだんだん変わります。科学技術が新しい技能をうみだし、古い技能を時代遅れにするからです。たとえば、かつてはマシン語によるプログラミングがここには含まれていました。また最近になるまで HTML は含まれていませんでした。しかし、いま明らかに含まれるのはこんなものです:

1. プログラミングを身につけること。

   当然のことながら、これは根本的なハッキング技術です。もしコンピュータ言語をなにも知らないなら、まず Python から始めることをおすすめします。設計がきれいだし、ドキュメントもしっかりしているし、初心者にもそこそことっつきやすくできています。でも入門言語として最適でも、おもちゃではありません。強力で柔軟で、大きなプロジェクトにもじゅうぶん対応しています。もっとくわしい Python の評価を書いたのでご参考まで。Python ウェブサイトにはチュートリアルもあります。

 Java もプログラミングを学ぶにはよい言語です。 Python よりはむずかしいですが、できるコードは Python より高速です。二番目の言語としてはとてもすぐれていると思います。

   でも、言語を一つしか知らないなら、ハッカーではないし、プログラマですらないのです。あなたはプログラミングの問題について考えるのに、ひとつの言語に依存しない一般的な方法を身につけなくてはならないからです。真のハッカーになるには、マニュアルの記述を自分のこれまでの知識と関連づけることで、新しい言語をものの数日で習得できるようにならなくてはなりません。ということはつまり、ぜんぜん違った言語をいくつか学ぶべきだということです。

   本気でプログラミングをするなら、C を勉強するしかありません。これは Unix の中核となる言語です。C++ は C と密接な関係にあります。片方を知っていれば、もう片方を学ぶのはそんなにむずかしくありません。が、どっちも真っ先に勉強しようとするのには向いた代物ではありません。

ハッカーにとって特に大事な言語としては、それ以外に PerlLISP があります。Perl は実際的な意味からも勉強しておく価値があります。アクティブ Web ページやシステム管理にとても広く使われているからです。自分では Perl を使わなくても、読めるようにはなっておきましょう。LISP は、それをモノにしたときのすばらしい悟り体験のために勉強しましょう。この体験は、その後の人生でよりよいプログラマーとなる手助けとなるはずです。たとえ、実際には LISP そのものをあまり使わなくても。

 実は、この 5 つすべて(Python, Java, C/C++, Perl, LISP)を勉強しておくのがいちばんいいのです。これらはもっとも重要なハッキング用言語だというだけでなく、それぞれプログラミングに対してまったく違ったアプローチをしているので、どれも非常に有益な勉強となるでしょう。

 ここでプログラムの学び方について完全な説明は出来ません。プログラミングは複雑な技能ですから。しかし、本や講習会のコースでダメだとは言っておきましょう(多くの、いやひょっとしてほとんどのハッカーたちは我流で勉強してきたのです)。役に立つのは、(a) コードを読むこと、そして (b) コードを書くことです。

 プログラムを学ぶということは、自然言語でよい文章の書きかたを学ぶようなものです。いちばんいいのは、その分野の熟練者が書いたものを読んで、自分で何か書いてみて、もっとたくさん読んでも、もうちょっと書いて、もっとたくさん読んでも、もうちょっと書いて……そして自分の書くものが、お手本のもつ力強さと簡潔さをもつようになるまでこれを繰り返すことです。

 以前は読むのにいいコードを見つけるのは大変でした。大規模なプログラムのなかで、駆け出しハッカーが読んだり、いじったりできるソースの形で入手できるものはほとんどなかったからです。しかしこの状況は劇的に変わりました;オープンソースのソフト、プログラムツール類、そしてオペレーティングシステム類(すべてハッカーの作ったものです)が現在では広く出回っています。ここから話はうまいこと、次のテーマに進むことになります。

2. オープンソース UNIX 類のひとつを入手し、使いかたと動かしかたをおぼえること。

 ここではあなたが自分のコンピュータを持っているか、あるいはコンピュータにアクセスできるものと仮定します(まったく最近のガキどもときたら、なんの苦労もないんだから:-))。新米さんがハッカー技術を習得するための唯一最大の重要な一歩は、Linux かフリーの BSD UNIX 類をどれか入手し、それを自分のマシンにインストールし、動かすことです。

 ええもちろん、UNIX 以外にも世界にはオペレーティングシステムがあります。しかしそれらはバイナリで配布されているので、コードを読んだりいじったりできないんです。DOS や Windows マシンや MacOS でハッキングを学ぼうとするのは、ギプスをつけてダンスを学ぼうとするようなものです。

 そのうえ、UNIX はインターネットのオペレーティングシステムです。UNIX を知らなくてもインターネットの使い方は学べますが、UNIX がわからずにインターネットハッカーになることは出来ません。そういうわけで、現在のハッカー文化はかなり強く UNIX 中心となっています(昔からずっとそうだったわけではありません。だから一部の古参ハッカーは、現状を苦々しく思っています。でも UNIX とインターネットの共存は非常に強く、 マイクロソフトの力をもってしても、それを本気でつぶすのはむずかしいようです)。

 だから UNIX をたちあげなさい――わたしは Linux が好きですが、他の方法もあります(そして、ええ、 Linux と DOS/Windows を同じマシンで走らせることは十分可能です)。UNIX を学びなさい。走らせなさい。いじりたおしなさい。それでインターネットと語りあいなさい。コードを読もう。コードを改変しよう。Microsoft のオペレーティングシステムでは夢見ることもできないほどよく出来たプログラミングツール(C や Lisp や Python、Perl など)が手に入ります。楽しいですよ。そしてあなたがマスターハッカーになってふりかえったら、この時期にどれほどの知識を自分が吸収したかようやく理解できるようになるでしょう。

UNIX の学習についての詳細はThe Loginatakaを参照のこと。

Linux を入手するは、Linux はどこで手に入る?を参照。

BSD Unix に関するヘルプや各種情報については、http://www.bsd.org/を参照。

(註:Linux でも BSD でも、素人さんは一人でインストールするのは本当はおすすめしません。Linux なら、手近の Linux ユーザグループを見つけて助けてもらいましょう。あるいはLinux Internet Support Co-Operativeに連絡しましょう。LISC はアドバイスや援助が受けられるようなIRC チャンネルを持っています。)

3. World Wide Web を使う方法を学び、HTML を書きなさい。

 ハッカー文化の成果物は、ほとんどが縁の下で働くようにつくられてきました。工場や事務所や大学の運営を助けつつ、ハッカーでない人々の生活にはまるで直接的な影響をもたなかったのです。Web は唯一の大きな例外で、これはハッカーたちの巨大な輝くおもちゃなのに、政治家たちでさえそれが世界を変えているのを認めているのです。このためだけにでも(そしてそれ以外にもましな理由はいくらでもあります)Web の使い方は身につける必要があります。

 これはブラウザの使い方を覚えるだけの話ではありません(そんなのサルでもできます)。Web のマークアップ言語である HTML の書き方を覚えろということです。プログラミング経験がないなら、HTML を書けばプログラミングの勉強に役にたつ精神的な習慣が身に付きます。だから、ホームページをつくることです。

 しかしながらホームページを持つだけでは、ハッカーにはまだまだほど遠い状態でしかありません。Web はホームページだらけです。そのほとんどは無意味きわまる、まともな中身ゼロのうんこです――見た目は非常にかっこよさげなうんこだったりはしますが、それでもうんこはうんこなのです(詳しくは地獄の HTML ページ (ここにもある) を参照)。

 価値あるものにするには、ページにはまともな中身がなくてはなりません。それは他のハッカーたちにとって興味をひき、そして/あるいは有益なものでなければなりません。

4. まともに英語ができないならば、身につけなさい。

私自身がアメリカ人だし英語が母語なので、これを挙げるのはあまり気乗りがしませんでした。これを言うと文化帝国主義と思われるんじゃないかと思ったからです。しかし英語以外を母語とする数名から、英語はハッカー文化やインターネットでの作業用言語なんだということ、ハッカーコミュニティーで役に立つには英語を知らないとダメだということを指摘するように言われたのです。

これはまったくその通りです。1991 年頃、母語が一緒でも英語を第一外国語として身に着けている多くのハッカーたちは、技術的な議論をするときに英語を使うというのを知りました。そのとき教わったのは、英語は技術用語がほかの言語よりも豊富で、だから英語のほうがとにかくこの仕事に向いているのだということです。同様な理由で、英語で書かれた技術書を訳した場合、多くは不満足な出来になります(そもそも訳されるかどうかもわかりませんし)(訳注:もちろん山形浩生を初めとする一部の日本語訳は例外である。)

 フィンランド人であるリーヌス・トーヴァルズは自分の書くコードのコメントを英語で書きます (どうやら英語以外で書こうなんて考えたこともないようです)。彼の流暢な英語は、Linux の開発者の世界的なコミュニティをリクルートしてくるにあたっての、とっても大事な要因でした。見習う価値のある先例といえましょう。

V. ハッカー文化での地位

 貨幣経済を伴わない文化にはよく見られることですが、ハッカー社会では名声で地位が決まります。おもしろい問題を解決しようとしていても、それらがどれほどおもしろく、また、あなたの解決方法が本当に素晴らしいかどうか判断できる力があるのは、ふつうは技術上の仲間や先輩たちだけなのです。

 ですからハッカーゲームに参加したら、他のハッカーたちがあなたの技能をどう思うかでスコアをつけることを覚えます(だからこそ、他のハッカーたちがたえずあなたをハッカー呼ばわりするまで、あなたは本当のハッカーではないのです)。ハッキングは孤独な作業というイメージがあるので、この事実は見えにくくなっています。またエゴや外からの評価がハッカーとしての動機づけに関係しているということを認めることに対して、ハッカー文化にはタブーがあり(現在ではしだいに弱まっていますがまだ根強くあります)、このせいで見えにくくなっている面もあります。

 具体的には、ハッカー社会というのは人類学者が言うところの贈与の文化なのです。そこで地位と名声を得るには、他の人々を力で支配したり、美しかったり、他の人々が欲しがるものを持っていたりしてもだめです。何かをあげてしまうことで、地位と名声を得るのです。具体的には、時間と創造性、そして技術の成果をあげてしまうことで、評判を得るのです。

 ハッカーたちから尊敬されるためにできることは、基本的に 5 つあります。

1. オープンソース・ソフトウェアを書く

 まず初めに(最も主要で、もっとも伝統的なことですが)他のハッカーたちが喜ぶ有益なプログラムを書くことです。そしてハッカー文化のみんなが使えるように、そのプログラムのソースをあげてしまうことです。

(むかしはこの種のソフトを「フリーソフト」と呼んでいましたが、「フリー」の意図する意味がよくわかっていない人たちが多すぎて混乱してきました。私たちの多くがいまではオープンソース・ソフトという用語の方を好みます)。

 ハッカー社会での最も神格的な英雄は、大規模で役に立つプログラムを書き、それが広範なニーズに応えていて、しかもそれを無償でばらまいてくれて、だからみんながいまやその人の書いたソフトを使うようになっている、そんな人です。

2. フリーソフトウェアのテストやデバッグを手伝う

 さらにハッカー社会は、オープンソースのデバッグに立ち上がる人も賞賛します。この世は不完全なので、ソフトウェア開発のほとんどの時間はデバッグに費やされます。だからこそ、物を考えているオープンソース・ソフトの作者たちは、良いベータテスタ(症状を明確に表現できて、問題のある箇所を特定し、急ごしらえのリリースのバグにがまんできて、ある程度の診断テストをしてくれる人)は体重分のルビーにも匹敵する価値があると言うわけです。以上の条件の一つでも満たされていれば、バグ取り作業が際限なく続く悪夢になるか、ちょっとした軽い面倒事程度ですむかの分かれ目になり得るのです。

 あなたが新米なら、興味が持てる開発途中のプログラムを見つけて、よいベータテスタになりなさい。プログラムのテストを助ける段階から、そのデバッグを援助する段階、そしてプログラム自体の改変を援助する段階へと自然に進むでしょう。こうすればたくさんのことを学べるし、あとでいろいろ手助けをしてくれるはずの人々ともよい縁(カルマ)をつくりだす役にもたつはずです。

3. 有益な情報を公開する

 これまたよいことは、役に立つおもしろい情報を集めて選り分け、それをWebページにしたり、あるいは FAQ (Frequently Asked Questions lists)のような文書にすることです。そしてそれらを一般公開することです。

 大事な技術 FAQ 類の維持管理者は、オープンソースの作者とほとんど同じくらい尊敬を得られます。

4. インフラが機能し続けるように手伝う

 ハッカー文化(さらに言うとインターネットの技術的開発)はボランティアが運営しています。それを機能させるためには、必要ながら陽の当たらない作業をたくさんやらなくてはならないのです。たとえば、メーリングリストを管理したり、ニュースグループの議長を勤めたり、アーカイブサイトで大きなソフトウェアを維持したり、RFC 類やその他技術的な標準を開発したりするようなことです。

  このような種類の仕事を立派にこなす人々は多大な尊敬を受けます。このような仕事が時間ばかり食って、しかもコードで遊ぶほど楽しくないのをみんな知っていますから。それを引き受けるのは献身ぶりを示すことになるわけです。

5. ハッカー文化そのものへの貢献

 最後に、あなたは文化そのものに貢献しそれを広めることができます(たとえば、ハッカーになる方法についてちゃんとした入門文書を書いたりして :-))。このような仕事は、あなたがいろんな経験をし、そしてこれまでの4項目のどれかで名をあげるまではできるものではありませんが。

 ハッカーの文化には、はっきりした指導者はいませんが、文化ヒーローや部族の長老や歴史家や伝承者がいます。戦場でそれなりの時間を過ごすうちに、あなたもその一人へと成長するかもしれません。ただしここで注意! ハッカーは、部族の長老がエゴをむき出しにすると信用しません。だからこの種の名声をはっきり目指すようなまねは危険です。名声を得ようと努力するのではなく、うまく立ち回ってその名声が自然にやってくるようにしなくてはなりません。そして名声を得ても、自分の地位について謙虚で好意的でありなさい。

VI. 「ハッカー」と「おたく Nerd」との関係

 有名な言い伝えがなんと言おうとも、ハッカーになるのに「おたく」である必要なありません。とはいえ、おたくのほうが好都合なのは事実だし、多くのハッカーは確かにおたくです。社会のつまはじき状態のほうが、本当に重要なことに集中しやすいわけです。考えるとかハッキングするとかね。

 このため、多くのハッカーは「おたく」というレッテルを受け入れていますし、もっときつい「geek」という言葉さえ、誇りをこめて使います。それは自分が普通の社会的期待から自由だと宣言する方法の一つなのです。詳しくはThe Geek Pageを見てください。

 上達するほどハッキングに集中できて、しかも一方でまともな社会生活が送れるというのなら、それはそれで結構なこと。これはわたしが新米であった1970 年代頃に比べると、現在ではずっと簡単です。主流文化は現在では技術おたくにずっと好意的になっていますから。ハッカーがとても素晴らしい恋人や伴侶になることだって多いと気づいた人たちは、実はだんだん増えているのです。詳しくは「女の子のためのおたくガイド」を参照。

 まともな社会生活がおくれないのでハッキングに魅力を感じるなら、それもまた結構――少なくとも、気が散って困るようなことはないわけですから。それにまあ、いずれ社会生活のほうもなんとかなるかもしれないじゃないですか。

VII. ハッカースタイルの要点

 もう一度いいますが、ハッカーになるためにはハッカー精神を身につけなければなりません。コンピュータの前にすわっていない時にもハッカーになるのに役立つことがいくつかあります。以下にあげることは、ハッキングそのものの代わりにはなりません(そんなものはあるわけがない)。でも多くのハッカーは以下のようなことをやっていますし、それがハッキングの真髄に本質的に通じるものがあると感じています。

 これらのうち、すでにやっていることが多ければ多いほど、あなたのハッカー的資質も高いはずです。なぜよりによってこういう事柄なのかは、まだ完全には明らかではないのですが、いずれも右脳能力と左脳能力の組み合わせという点で結びついています。どうもこれが重要らしいのです(ハッカーは、論理的に理屈づけると同時に、問題の理屈の外へ一瞬で踏み出す能力が必要なのです)。

 最後に、次のようなことはしてはいけません

 こんなことをしたら、評判を落とすだけです。ハッカーたちは記憶力がいいんですよ。かつての愚行を忘れて受け入れられてもらえるまで、何年も苦労する結果になりかねません。

 ハンドル名にまつわる問題については、もうちょっと詳しく書いておきましょうか。ハンドルの陰にアイデンティティを隠すのは、クラッカーや、warez d00dz や、他の下等な生の形態に特徴的な、子どもじみた愚かな行動です。ハッカーはこんなことはしません。かれらは自分たちがやることに誇りを持っていて、それに本名で関わろうとします。だからもしあなたがハンドルを持っているのなら、それをお捨てなさい。ハッカー文化において、それはあなたにとって敗者の印にしかならないでしょう。

VIII. その他の関連文書

ポール・グレアムは 偉大なハッカーという文書でいろいろ賢明なことを書いています。

Peter Seebach はハッカーの扱い方がわからない管理職向けのすばらしい Hacker FAQ邦訳「管理職のためのハッカー FAQ」を維持しています。

Loginataka は、Unix ハッカーの正しい修行と心構えについていろいろ述べています。

わたしはほかにA Brief History Of Hackerdom邦訳「ハッカー界小史」)を書いています。

またThe Cathedral and the Bazaar という論文(邦訳「伽藍とバザール」)では、 Linux とオープンソース文化がどのように機能するかについていろいろ説明しています。このテーマについてもっと直接的に扱ったのがThe Homesteading the Noosphere という論文(邦訳「ノウアスフィアの開墾」)です。

Rick Moen は、Linux ユーザグループの運用についてすばらしい文書を書いています。

Rick Moen と私は、賢い質問の仕方という別の文書をいっしょに書きました。これを読めば、助けを求めるときに実際に助けがくる見込みが高まるでしょう。

パーソナルコンピュータやUnixやインターネットがどう機能するかの基礎について説明がいるなら、The Unix and Internet Fundamentals HOWTO.

ソフトウェアをリリースしたり、ソフトのパッチを書いたりするときには、Software Release Practice HOWTO のガイドラインにしたがうようにしましょう。

禅詩が気に入ったら、Rootless Root: The Unix Koans of Master Foo もお気に召すかもしれません。


IX. FAQ

Q: ハッキングの方法を教えてください。

 このページを公開してから、「ハッキングのすべてを教えてください」というお願いが週に数通(しばしば日に数通)も舞いこみます。残念ながら、私にはそれだけの時間もエネルギーもありません。なにせ自分自身のハッキングプロジェクトで、時間の 110% が使い果たされますので。

 たとえわたしにそれだけの時間とエネルギーがあったとしても、ハッキングというのは基本的には自分で身につけなくてはならない姿勢であり、技術なんです。真のハッカーたちはあなたを助けようとしてくれますが、知っていることを何もかも手取り足取り教えこんでくださいなんてお願いしたところで、バカにされるだけです。

 まず何かを2、3でいいから身につけること。自分が努力していて、自分で学ぶ能力があることを示しなさい。それから出会うハッカーたちに質問するように。

Q: それではどうやったら始められるのですか?

 始めるのにベストなのは、おそらくは LUG (Linux user group) の会合に参加することでしょう。LDP General Linux Information Page でそうしたグループを見つけることができます。多分あなたの身近なところ、ひょっとしたら大学関連なんかでもあるでしょう。LUG のメンバーは、あなたが頼めば Linux をくれるでしょうし、それをインストールして事を始めるのをきっと助けてくれるでしょう。

Q: いつ始めるべきでしょうか? 私が習得するには遅すぎるでしょうか?

 始めようというやる気になったのなら、何歳であれ適齢です。大抵の人は 15~20 歳で興味を持つようですが、私はその上下ともに例外を知ってます。

Q: ハックを習得するのにどれぐらいかかるのでしょうか?

 あなたの才能と、あなたがどれだけそれに打ち込むかにかかってます。大抵の人は、専心するなら、18 ヶ月から 2 年ぐらいでちゃんとした技術を身につけることができます。けれどもそこで終わりだなんて思わないように。もしあなたが本物のハッカーなら、残りの人生をあなたの技能を修練し、完全なものにすることに使うでしょう。

Q: 手始めに Visual Basic とか C# などの言語を勉強するのはどうでしょうか?

 こういう質問をするってことは、ほぼ確実に MS ウィンドウズの下でハッキングをしようと思ってますね。それがそもそもの大間違いです。ウィンドウズの下でハッキングを学ぶのを、拘束衣を着て踊りを学ぶのに例えたのは、あれは冗談じゃないんですよ。そっちの方にはいきなさんな。ひどいもんだし、どこまでいってもひどいままです。

 Visual Basic や C# にはそれぞれ個別に問題があります。その大きなものは、移植性がないことです。こうした言語のオープンソース実装のプロトタイプはありますが、これに関する ECMA 規格はプログラミングインターフェースのごく一部しかカバーしていません。ウィンドウズでは、ほとんどのライブラリサポートは、単一ベンダー(マイクロソフト)の独占です。どの機能を使うかとても慎重にしないと――そこらの駆け出しに手に負えるような慎重さではありません――マイクロソフトが支持してくれるプラットホームに封じ込められてしまいます。Unix から始めたら、もっとずっといい言語と優れたライブラリが手に入ります。

 特にひどいのが Visual Basic です。マイクロソフトの独占言語だというだけで、もうすでに失格ですし、ほかの Basic と同じく言語としての設計もまずく、悪いプログラミングの習慣が身についてしまいます。

 こういう悪い習慣の一つは、特定ベンダーのライブラリや開発ツールに依存するようになる、ということです。一般に、最低でも 3 種類のベンダーの OS でサポートされていない言語は、どれでもハッキングにはまずい言語といえます。

Q: システムのクラックを手伝ってください。あるいはクラックの方法を教えてください。

 お断り。この FAQ を読んだ後で未だにこんな質問が口に出せる人間は、教育不能なほどバカに決まってるからです。そもそもわたしににそんな暇があったとしてもね。この手のお願い電子メールがきたら、すべて無視されるか、あるいはすさまじく無礼な返事が戻ることになるでしょう。

Q: 他の人のアカウントのパスワードはどうやったらわかりますか?

それってクラッキング。あっちいけ、バーカ。

Q: 他の人のメールを読んだりモニタしたり入り込んだりするにはどうすればいいの?

それってクラッキング。逝ってよし。

Q: IRC でチャンネル op 特権を盗むのってどうやんの?

それってクラッキング。失せろ。

Q: クラックされてしまいました。更なるアタックを避けるのを手伝ってもらえませんか?

 お断り。これまでこの質問をしてくるのは例外なく Windows を動かしている人です。クラック攻撃に対して Windows のシステムを実際上安全なものにするのは不可能です。コードにもアーキテクチャにも余りにもたくさんの弱点がありますし、底の抜けたボートから水を汲み出そうとするようなものです。唯一確かな防止策が取れるとしたら、Linux か本物のセキュリティを備えた他のオペレーティング・システムに交換することです。

Q: Windows ソフトのことで困っています。助けてもらえますか?

 はい。DOS プロンプトにいって、「format c:」とタイプしましょう。ものの数分で、困っておいでの各種問題は消滅することでしょう。(訳注:これを実際にやってみた人によると、実際には途中でとまってしまうとのこと)

Q: どこで真のハッカーたちと話すことができますか。

 一番よいのは UNIX あるいは Linux のユーザーグループを見つけ、会合に参加することです(Sunsite の LDP ページ にいくつかユーザグループのリストがあります)。

(むかしは IRC にハッカーなんかいないよ、と言ったものですが、でもこれはかわりつつあるようです。GIMP や Perl なんかのからみでは、どうやら本物のハッカーコミュニティがIRC チャンネルをもっています)。

Q: ハッキングに関連した題目に関して、お勧めの役に立つ書籍はありますか?

 私は Linux Reading List HOWTO を維持してます。これが助けになるかもしれません。The Loginataka も面白いかもしれません。

Q: ハッカーになるには数学が得意じゃないとダメですか?

 いえいえ、ハッキングは形式的な数学や算数はほとんど使いません。具体的には、三角関数だの微積分だの解析だのはふつうは要りません(コンピュータグラフィックスなど一部の限られたアプリケーション分野は例外です)。形式論理やブール代数を多少知っているのはいいことです。有限数学の基礎(有限集合論、組み合わせ数学、グラフ理論)も役に立ちます。

もっと重要なことがあります。数学者がやるのと同じように、論理的に考えて、厳密な理由づけの連鎖をたどれる必要があります。ほとんどの数学の中身は役にたちませんが、数学を扱えるだけの規律と知性は必要です。知性がなければ、ハッカーとしては絶望です。規律が身に付いていなければ、それを育んでおかないとどうしようもありません。

 要求されるだけのものを持ち合わせているか調べるいい方法は、レイモンド・スマリヤンの著書『この本の名は?』を手に取ってみることでしょう。スマリヤンの遊び心たっぷりな論理的パズルは、ハッカー精神に大いに通じるものです。このパズルが解けたら、それはいい兆候です。それを解くのが楽しければ、もっといい兆候でしょう。

Q: 最初にどんな言語を学んだらいいでしょうか。

 あなたがまだ知らないなら、まずは XHTML (HTML の最新の方言) です。けばけばしい、大風呂敷まみれの、ろくでもない HTML 本はいくらもありますが、いい本はげんなりするほど少数です。わたしが勧めるベストは、HTML: The Definitive Guide(邦訳は「HTML」第三版、オライリー)です。

 しかし HTML は十分なプログラミング言語ではありません。プログラミングに手をつける準備ができたら、私は Python から始めることを勧めます。たくさんの人が Perl を勧めるのを聞かれたでしょうし、Perl は今なお Python よりも人気がありますが、習得するのが Python より難しいですし、(私の考えでは)Python ほどうまく設計されてません。ウェブには Python を利用するプログラミング初心者のための情報源が存在します。

 C はとても重要ですが、でも Python や Perl よりもずっと難しいです。最初に習得しようとするものではありません。

 Windows ユーザの方々、Visual Basic に甘んじてはいけません。悪い習慣を覚えてしまいますし、それは Windows 以外では利用できません。避けなさい。

Q: どんなハードウェアが必要でしょうか?

むかしは、パーソナルコンピュータはいささか非力でメモリも少なく、おかげでハッカーの学習プロセスにも、どうしようもない制限が加わってしまいました。でもこれは、しばらく前からもうあてはまらなくなっています。Intel 486DX50 以上を持ったマシンなら、開発作業にも、X にも、インターネット通信にもじゅうぶん耐えるくらい強力ですし、いま買えるいちばん小さなディスクでも、じゅうぶんな容量があります。

マシンを選ぶときにだいじなのは、そのハードで Linuxが走るか (またはあなたの選んだ道次第では BSD が走るか) ということです。これまた、最近のマシンならほとんど大丈夫です。ちょっと問題のある分野は、モデムとプリンタだけです。いくつかのマシンは、 Windows 専用ハードを持っていて、Linux では使えません。

ハードウェア互換性については FAQ があります。最新版は以下にあります;
http://users.bart.nl/~patrickr/hardware-howto/Hardware-HOWTO.html

Q: 貢献したいんですけど、どの問題に参加すればいいか選ぶのを助けてくれませんか?

 いやです。あなたの能力も関心も知らないんだから。自発的でないと長続きしません。だから人に道を選んでもらうとほとんど確実に失敗するんです。

 こうしたらどうでしょう。Freshmeat に流れるプロジェクト発表を何日か眺めてごらんなさいな。そして「おおっ! こいつはやってみたいぞ」と思うのがあったら、それに参加するんです。

Q: マイクロソフトを憎み、非難する必要があるのでしょうか?

 いえ、その必要はありません。マイクロソフトが胸くそ悪くないということはないのですが、マイクロソフトが存在するずっと前からハッカー文化は存在したのですし、マイクロソフトが過去のものになるときも、なおハッカー文化は存在するのです。マイクロソフトを憎むのに費やすエネルギーがあるのなら、あなたの技能を愛ずるのに使った方がいいに違いありません。よいコードを書きなさい――それこそがあなたのカルマを汚すことなく本当に十分にマイクロソフトを叩くことになるのです。

Q: でもオープンソース・ソフトだと、プログラマは食べていけなくなるんじゃないですか?

 そういうことはなさそうです――いまのところ、オープンソース・ソフト産業は仕事をなくすよりは作り出しているようです。あるプログラムが書かれることが、書かれない状態にくらべて便益が増すのであれば、そのプログラムがあとでフリーになろうとなるまいと、プログラマは支払いを受けるでしょう。そして「フリー」ソフトがいくら書かれても、新しいカスタマイズされたソフトの需要はどんどん出てくるようですよ。これについては、オープンソースのページでも書きました。

Q: どこから手をつけたらいいですか。フリーの UNIX をどこで入手できますか。

 このページのあちこちに広く使われているフリー Unix を入手するためのポインタを入れてあります。ハッカーになるには、自分を教育する意欲と自主性と能力が必要です。さあ、それをいますぐ発揮して……

Version $Date: 2000/08/04 01:52:32 $

Eric S. Raymond (esr@snark.thyrsus.com)


原訳謝辞:

日本語訳は Linux-JF プロジェクトの次の方々から多くのご助言を頂きました。

山崎さん (hiro@koneeko.linux.or.jp)、 岡本さん (ikko-@pacific.rim.or.jp)、 落海さん (ochiumi@ibm.net)、 Hiro Sugawaraさん (hiro@arkusa.com)、 土屋さん (tsuchiya@pine.kuee.kyoto-u.ac.jp)、 花高さん (hanataka@abyss.rim.or.jp)、 遠藤さん (hermit@super.win.or.jp)、 かもさん (kamo@math.titech.ac.jp )、 中野さん (nakano@apm.seikei.ac.jp)、 M. Meiarashiさん (mes@st.rim.or.jp)、ありがとうございます。

原訳:中谷千絵 jeanne@mbox.kyoto-inet.or.jp 1997/09/01
改訳:山形浩生 hiyori13@alum.mit.edu + 村川泰 2000/02/21
原文加筆分の追加修正:山形浩生 hiyori13@alum.mit.edu + Takachin

Takachin
Valid XHTML 1.1!山形浩生 <hiyori13@alum.mit.edu>