読者です 読者をやめる 読者になる 読者になる

よーやまブログ(PHPと自動化と語学と資格)

PHPと自動化と語学にハマったWebプログラマー。主にWebネタ、MySQL、Linux、Apache、語学をやるよ

【超訳】「ハッカーになろう」を頑張って要約してみた

ハッカーになるには

どうも、yohyamaです。

 

プログラマーとして生きる以上、常に勉強することが大事です!

勉強と言えばと主にインプットですが、それ以上にアウトプットも大事ですよね。

アウトプットすることで初めて、知識が定着して理解が進むのです。

 

 

今回の対象「ハッカーになろう」

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

How To Become A Hacker: Japanese

こちらのサイトを超訳します。

 

以下、超訳

 

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

 私はいくつかの有名な文書の著者なので「超スゴイハッカーになるにはどうしたらいいの?」とよく聞かれるんですけど、そういうことを扱う本やWeb文書が無いことに気づいたので、書きました。

この本の最後に「よく聞かれる質問(FAQ)」をまとめたので、私に質問する前に2回は読んでおいてね。 

 

 

ハッカーって何?

ハッカーになるには大事なことは2つ。

熟練プログラマやネットワークの天才たちのコミュニティに貢献していること。そのメンバーからあなたがハッカーと呼んでくれること。

ハッカーとクラッカーは違う。ハッカーはものをつくります。クラッカーは壊す。

ハッカー的心構え

  1. この世界は解決を待っている魅力的な問題でいっぱいだ
  2. 同じ問題を二度解くような無駄はいやだ
  3. 退屈と単純作業は悪
  4. 自由は善
  5. 心構えは技能の代用にはならない

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

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

 ハッカーであることはとてもおもしろいのですが、そのためには相当な努力が必要です。その努力をするには意欲が必要です。ハッカーになるためには自分の技術をみがき、知性を働かす訓練して、問題を解決することにゾクゾクするような喜びを感じるなきゃダメ。

 

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

情報を共有することは大事。そうすることで無駄な時間を取ることが無くなる。

3. 退屈と単純作業は悪

退屈な部分はできるだけたくさん自動化してしまいたくなるようにしましょう。

例外的に、退屈に見えるようなことをすることがあるけど、これは好きでやっているのです)

4. 自由は善

ハッカーらしく行動するためには、検閲や秘密、そして責任ある大人に無理強いするような圧力やごまかしの使用に対し、本能的に敵意を感じるようにしなくてはなりません。そしてこの信念を実行に移す用意が必要なのです。

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

 ハッカーになるには、上記の心構えをある程度身につけなければなりません。ハッカーになるには知性、実行力、献身、そして大きな努力が必要です。

 ですから、姿勢や態度は信用せずに、あらゆる技能を尊重することを学びましょう。

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

基本的なハッキング技術

  1. プログラミングを身につけること。
  2. オープンソース UNIX 類をどれか入手し、使いかたと動かしかたをおぼえること。
  3. World Wide Web の使い方を学び、HTML を書くこと。
  4. まともに英語ができないならば、身につけること。

身に着けるべき基本的なものがツールキットがあります。

これらは時代とともに変わります。

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

当然ですが、これは根本的なハッキング技術。なにも知らないなら、Python から始めるのがオススメ。

前はJavaが良いと思ってたけど気が変わった。本気でやるならCを勉強しようぜ。

あとはPerlLISPかな。ただ、言語をつまみ食いするだけならダメ。真のハッカーになるなら、新しい言語を数日で習得できなきゃダメよ。

プログラミングを学ぶ上で、役に立つのはコードを読む、コードを書くこと。

あとピーター・ノルヴィグの、「十年がかりでプログラムを学ぼう」という小論の「プログラミングで成功するレシピ」はマジおすすめ。

 

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

Linux かフリーの BSD UNIX 類か OpenSolaris のどれかを入手し、それを自分のマシンにインストールし、動かして。

それ以外にも色々なOSはあるけど、根底にある Unix にだけ専念すれば、色々学べるよ。

UbuntuLinux 新人にとって圧倒的に一番とっつきやすいよ。

 昔は、新人が一人で LinuxBSD をインストールするのはやめたほうがいいって書いたけど、最近のインストーラーはずっとよくなって、新人であっても一人で十分にできるおy。

3. World Wide Web を使う方法を学び、HTML を書くこと。

 HTML の書き方を覚えろということです。そしてページを持て。でも有益なもので無いと意味が無いよ。

 

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

英語できなきゃダメよ。

ハッカー文化での地位

  1. オープンソース・ソフトウェアを書く
  2. フリーソフトウェアのテストやデバッグを手伝う
  3. 有益な情報を公開する
  4. インフラが機能し続けるように手伝う
  5. ハッカー文化そのものへの貢献

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

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

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

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

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

 

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

興味が持てる開発途中のプログラムを見つけてデバッグを手伝おう。たくさんのことを学べるし、色々な人脈が出来るよ。

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

役に立つおもしろい情報を集めて一般公開しよう。

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

コミュニティの運営業務などの陽の当たらない作業をたくさんやることで貢献しよう。

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

ハッカー文化に貢献しよう。

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

ハッカーになるのに「おたく」である必要ないよ。確かに多くのハッカーはおたくだけど。

ハッカースタイルの要点

多くのハッカーは以下のようなことをやってるよ。

  • 母語できちんと文が書けるようになること(ハッカーの驚くほど多くは物書きとしても有能)。
  • SF を読むこと。SF 大会に参加すること。
  • 格闘技を学ぶこと。ハッカーたちの間で最も人気があるのは、テコンドー、各種の空手、カンフー、合気道柔術などです。西洋のフェンシングやアジアの剣道も、かなりの支持者がいます。
  • 本当の瞑想的な訓練を受けること。ハッカーたちの永遠のお気に入りは禅です。
  • 音楽を分析的に聞く耳を鍛えること。一風変わった音楽がわかるようになること。なにか楽器を上手に演奏したり、歌が歌えるようになること。
  • だじゃれや言葉あそびへの理解を深めること。

歴史的な記述:ハッキング、オープンソースフリーソフト

 1996年末にこの文書を書いたときには、まわりの状況の一部は今日とはかなり様子がちがっていました。こうした変化について少し述べておくと、オープンソースフリーソフトLinuxハッカーコミュニティとどう関係するのか混乱している人々にとって、少し話が明確になるでしょう。そういうことに興味がなければ、すぐに FAQ や関連文書の章を読み進んでください。

 これまで描いてきたようなハッカーエートスとコミュニティは、1990 年以後の Linux の台頭よりはるかに古いものです。

 いま「オープンソース」と呼ばれているものは、ハッカーコミュニティと同じくらいの歴史がありますが、1985 年までそれは、理論や宣言を持つ意識的な運動というようりは、無名の民俗的な慣習でした。1998 年以来、そして特に 2003 年頃から、「ハッキング」と「オープンソース(とフリーソフトウェア)開発」とはかなり同一視されるようになりました。今日では、こうしたカテゴリーを区別しようとするのはほとんど無意味だし、それが将来変わることもなさそうです。

 でも、昔からそうだったわけではないということは、是非ともご記憶を。

その他の関連文書

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

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

 プログラマになろう という文書があって、本文書と見事な対をなします。コーディングや技能セットにとどまらず、プログラミングチームの中でどう行動すべきかについて有益なアドバイスがあります。

  わたしはほかに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 もお気に召すかもしれません。


FAQ

  1. Q: どうすれば自分がすでにハッカーだとわかりますか?
  2. Q: ハッキングの方法を教えてください。
  3. Q: なら手始めに何をすればいいでしょう?
  4. Q: いつ始めるべきでしょうか? 私が習得するには遅すぎるでしょうか?
  5. Q: ハックを習得するのにどれぐらいかかるのでしょうか?
  6. Q: 手始めに Visual Basic を勉強するのはどうでしょうか?
  7. Q: システムのクラックを手伝ってください。あるいはクラックの方法を教えてください。
  8. Q: 他の人のアカウントのパスワードはどうやったらわかりますか?
  9. Q: 他の人のメールを読んだりモニタしたり入り込んだりするにはどうすればいいの?
  10. Q: IRC でチャンネル op 特権を盗むのってどうやんの?
  11. Q: クラックされてしまいました。更なるアタックを避けるのを手伝ってもらえませんか?
  12. Q: Windows ソフトのことで困っています。助けてもらえますか?
  13. Q: どこで真のハッカーたちと話すことができますか。
  14. Q: ハッキングに関連した題目に関して、お勧めの役に立つ書籍はありますか?
  15. Q: ハッカーになるには数学が得意じゃないとダメですか?
  16. Q: 最初にどんな言語を学んだらいいでしょうか。
  17. Q: どんなハードウェアが必要でしょうか?
  18. Q: 貢献したいんですけど、どの問題に参加すればいいか選ぶのを助けてくれませんか?
  19. Q: マイクロソフトを憎み、非難する必要があるのでしょうか?
  20. Q: でもオープンソース・ソフトだと、プログラマは食べていけなくなるんじゃないですか?
  21. Q: フリーの UNIX をどこで入手できますか。

Q: どうすれば自分がすでにハッカーだとわかりますか?

以下の3つの問いを自問してみましょう:

  • コードをすらすらと書けますか?
  • ハッカーコミュニティの目的や価値観を共有していますか?
  • ハッカーコミュニティの立派なメンバーに、ハッカーと呼ばれたことはありますか?

 この三つすべてに イエスと言えるなら、あなたはすでにハッカーです。二つだけでは不十分です。

 

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

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

 

Q: なら手始めに何をすればいいでしょう?

 始めるのにベストなのは、おそらくは LUG (Linux user group) の会合に参加することでしょう。LDP General Linux Information Page でそうしたグループを見つけることができます。

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

いつでもOK。

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

 才能と、熱意次第です。大抵の人は、専心するなら、18 ヶ月から 2 年ぐらいでちゃんとした技術を身につけることができます。

Q: 手始めに Visual Basic を勉強するのはどうでしょうか?

やめとけ。

 

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

 お断り。

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

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

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

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

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

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

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

 お断り。唯一確かな防止策が取れるとしたら、Linux か本物のセキュリティを備えた他のオペレーティング・システムに交換することです。

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

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

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

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

 

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

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

 Python入門には、Python のサイトにある チュートリアル を参照。

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

 いえいえ、ハッキングは形式的な数学や算数はほとんど使いません。

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

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

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

 あなたがまだ知らないなら、まずは XHTML (HTML の最新の方言) です。(邦訳は「HTML」第三版、オライリー)がオススメです。XHTMLだけでは十分でないので、プログラミングに手をつける準備ができたら、私は Python から始めることを勧めます。

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

Visual Basicは他では使えないからやめとけ。

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

最近のマシンならほとんど大丈夫です。

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

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

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

 いえ、その必要はありません。よいコードを書きなさい――それこそがあなたのカルマを汚すことなく本当に十分にマイクロソフトを叩くことになるのです。

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

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

Q: フリーの UNIX をどこで入手できますか。

 このページのあちこちに広く使われているフリー Unix を入手するためのポインタを入れてあります。

 

以上、ここまで。

 

まとめのまとめ

後半失速気味でした・・・。

内容をさらにまとめると以下のようになりますね。

  1. コミュニティに参加し、貢献する。
  2. Python, C, Perl, Lisp, UnixLinux)を学ぶ。
  3. きちんとした文章書けるようにする。
  4. 格闘技を学ぶ。

 

自分の場合はUnixの理解がいまいちなので、Unixをこれから学ぼうかと思います!