A Django site.
2月 4, 2008
» プログラマとってコミュニケーション力は重要

via dankogai:我々全員の知的生産性を10桁上げる方法

こういうのを見てると、やっぱりプログラマにとってコミュニケーション力は重要な能力はなんだなあ、と思った。

 


 

俺はハッキリ言って人間が大嫌いで、勉強会なんていかない。ブログもそんなに書かないし、はてな(ダイアリーやブックマーク)にはかかわっていない。

mixiなんてなにが面白いのかさっぱりだし、twitterなんて、意味がわかんない。なにがしたいの?という感じな人間。

もっと言えば、学生時代、体育祭や文化祭にすらほぼ出たことがない。飲み会にもほとんどいかない。そんな感じの人間。

こういう人間はプログラマに向いてないのかな。つーか人間的にダメですかそうですか。

 


 

やっぱり、人間社会で生きている以上評価は他人がしてナンボだと思うし、そうあるべきだと思う。

id:amachangやid:higeponは人当たりもいいし、謙虚で、勉強家で、前向きでということが一度も話したことのない俺でもわかっちゃう。それくらい人とコミュニケーションをとる能力が(現実、ネット問わず)優れているんだなあ、と思った。そして、どんどん上にあがっていく。

 


 
でも俺はそうはなれない。人当たりは最悪だし、俺程度の能力じゃ大したプログラマにはなれないな、とプログラマにすらなっていない後ろ向き男である。頑張って勉強会には行きたいなあ、とは思っているけど人が怖くていけない。コミュニケーション能力がある人からすれば、怖くないよ><という感じなんだろうけど、そっちがわの人間にはこっちがわの人間の事はわからないんだろうなあ。

 


 
俺はもしプログラマになるなら、ゴタクなしにプログラムのみを晒して、ネットの片隅で誰かが「これヤベーよ!」といってくれるような、それを見て「ニヤリ」とするだけのような、そんなプログラマになりたいな。ブログすらもたず、匿名でどっかのアップローダにポンッとプログラムだけ置いてるような感じだと最高にカッコいい。

皆に認められなくてもいい、誰か一人でも「ニヤリ」とさせられるプログラマでいたいなあ。・・・なんて。そんな無理なことは実践せず、ちゃんと人とコミュニケーションできるように頑張っていきたいと改めて思ったのでした。

1月 4, 2008
» 2007年振り返りと2008年

遅ればせながら、あけましておめでとうございます。

一応、定番の2007年の振り返りと2008年の抱負といいますか、方針でもつらつらと。たぶん駄文なので、ここでsボタンを押して次の未読フィードにいくことをお勧めします。(何  
 
 


2007年

生活的に

まずは就職しましたね。割と大企業でして、仕事もそれほど忙しくなく、いい感じです。福利厚生は分厚いです。プログラマのバイトを始めてから、学生ながらほんとにそればかりをやるような、そんな生き方しかしてこなかったので今はすごく新鮮です。

いわゆるアフター5というやつですか。仕事は仕事で趣味は趣味、という。割と興味が発散するタイプなので、このほうが自分のやりたいことをできていいかもしれません。バイトしてるときはWEB系の知識ばっかり、って感じだったんですけど自由な時間ができたので全般的な知識がついてきたのではないかな、と思っています。

もっと技術的にチャレンジングなところに戻っていくのかもしれません。ただ、やはりそれだけチャレンジングな場所にいくと技術的に見るとやはり若干偏ってしまうんじゃないか、っていうのもあってもう少し独学で全般的に知識をつけたいな、と思っています。

技術的に

アウトプットとか

そんなにアウトプットしてないですが

  • お手軽Python Pluggableモジュール
  • javascriptのパーサコンビネータ
  • Python版Yahooテキスト解析APIライブラリ
  • Python版Lingr APIライブラリ
  • PythonによるNESエミュレータ

あたりですかね。NESエミュレータというとタイムリーにnaoyaさんがPerlで8ビットCPUを書かれていましたね。よければPython版もよろしくおねがいします(さりげに宣伝)。

ちゅーわけでですね、やっぱりPythonが多いですね。最近Railsはゲットーだなんちゃらと盛り上がってますけど、なぜかRails、Ruby界隈からはほぼ手を引いてしまいました。

最近自分の趣向というか、そういうのに気づき始めまして。Rubyよろしく、Railsよろしく急激に広まるモノって決してスーツ達の思惑だけじゃないんです。そういう「キャッチーさ」をもってるんです。なにか。でもですね、どうやら俺はそういうのが苦手らしいんです。どこかとっつきにくい、そういうものに惹かれるというか。Schemeとか、Perlってそういうタイプだと思うんですよ。そしてそういうモノのユーザーの底力って、やっぱりすごいなあ、と。

というわけでRubyから離れ日本では若干マイナーなPythonのほうにうつちゃったのかな、と(まぁ前にも書いているようにRubyのProcあたりがどうしてもキライってのもありますけどね)。

そしてPython以外ではScalaですよ。どう書くorgにチビチビ投稿しちゃってます。しかし、これだけ投稿してるのに、Scalaに関してほとんど書かない、という(笑 いい機会だから書いちゃおうかな。

なぜScalaか?

はじめはですね、そこまで深い意味はなくって。とりあえず今年はどの言語やろう、ってなったときにチョードErlangのおかげでActorを持つScalaが注目されまして。個人的に、単なる計算にしか使えない言語はキライで実用性(ネットからなんかとってきたりとか、ファイルいじったりとか)もないとあんまやる気にならないんです。

Erlangは・・・ねえ。もちろんやりましたよ。でも軽量プロセス以上のものを見出せなかった。一方ScalaはJAVAベースなので極端に言えばJAVAでやれることはほぼやれる。っちゅーかいっぱいいろんなものが詰まってるので色々おもしろそう、それだけ。

やってみた結果・・・いや、Scala面白いですよ。特に型に関して。今まで型推論ってOcamlかHaskellくらいしか触ったことが無かった。ジェネリックも正直そこまで深追いしてなかった。Scalaをやると型の奥深さに気づかされます。Scalaはアカデミックなベースをもっているってのもあって、文献も多くて学べることは非常に多かった(よくあるような紹介記事じゃなくてScalaのちょっと深い記事が読んでみたいよ、というかたは俺のブクマでもどうぞ。あんまりないですが・・・)。

Scalaの型について概観的にまとまっているのはコレかな。とっても面白いのでゼヒ。

あ、あとScalaのMLは絶対入ったほうがいい。関数型のバックグラウンドを持つ人が多く、関数型言語チックな議論、そして当然型について、結構良質な議論が多いですよ。

なんでもアリ

っという感じで型が一番なんですけどね、ほんと、なんでもありなんですよ。

JAVAのようなクラスもある、Haskellのような遅延評価も、関数合成も、パターンマッチも、モナドもある、モナドのための構文もある、型推論もある、でもダックタイピングもある、Ocamlのようなバリアントもある、Erlangの軽量プロセスのようなActorがある、Rubyのようなブロックも、ミックスインも、既存クラスの拡張もある、Pythonの__call__のようにクラスを関数として扱えたりもする。そしてJAVAのライブラリが使用できて、JAVAのクラスファイルを吐いて、チューニングしだいではJAVAと大差ないパフォーマンスをたたき出す。(ここであげた機能はあくまで「ような」もので元言語使いに言わせると色々文句おおいんですけど(笑))

ちょっとワクワクしませんか。

その他は・・・

結構言語よりの年だった気もしますが、若干低レイヤよりもあったかなあ、と。NESエミュレータなんかは割りとレイヤ低めですし、あとはですね微妙にFPGAに手を出してみたり(いやー秋葉が近いっていいですね)。他は・・・そうですね、一応ネットワークエンジニアの資格をとったりもしましたねえ。一応、一発合格でした。最近、ネットワーク周りでも技術的な記事を公開してくださる企業さんとかも多くてですね(書いちゃっていいのかな、Klabさんとか)、そういう記事をきちんと理解していく上でいい知識の整理になったと思います。WEBプログラマだとまぁ、keepalivedとかLVSの話とかですね。でも実は結構VRRPってなんじゃらほい、見たいな人も多いんじゃないかと。意外とネットワークって知らなくてもなんとなーく動いちゃったりするんであいまいになってたりすることも多い気がするんですよね。

2008年

そして2008年ですよ。とりあえず

  • なにか1言語勉強する(基本)
  • FPGAとかもっとやりたい
  • アルゴリズムにもっと強くなろう
  • Functional、手続き的、両方常に書けるように頭をキープしたい
  • 流行に流されない知識をつけよう
  • 音楽的なアウトプットも出していきたい

といったところですかね。俺、大学は文学部ですしずっと文系できたので計算機関連の知識ってここ3年くらいなんです。それまでPCは音楽を聞いたり、作ったりする道具だったんです。自分でいうのもなんですが、ここ3年、デキない文系アタマを酷使してそこそこのペースで勉強してきたな、と思っていたりします。もちろん、それでも全然、ほんとに全然ダメダメなんですけど。でもプログラミングのセンスもない、理系のアタマも持ってない、そんな奴が一応プログラムかいたりできるようになってるってことは結構がんばったのかもね、と。というわけで、今年は若干ペースを落として「充電」したいと思います。音楽はその充電に役立つと思います。  
 
 


というわけで、今年もこのブログにはちょくちょく技術系の駄文だったり、Scalaあたりの記事、WEBプログラミング関連の記事でも書いていくと思いますのでよろしくお願いします。

12月 18, 2007
» どう書く?orgは多言語クックブックになれるか

最近は手が空いたときにまとめてお題をとくようになってきました。どう書く?orgです。あいかわらず、Scalaです。はい。

そのどう書く?orgですが、今のままだとちょっと「多言語クックブック」にはならない気がしてます。クックブックってのが曖昧ですが、あくまで俺の中のイメージのクックブックです。

一般投稿が可になった時に、ちょっと感じてたんですがやっぱり最近ある傾向が顕著で。というのは数学パズル系とか、(数学的な、事務処理などではない)アルゴリズム勝負!なお題ばっかりなんですよね。プログラミング自体が好きな人ってやっぱり関数型言語界隈の方々だったり、数学的なバックグラウンド持っている人が多いですから。一般投稿が可になればまぁそういう方々がお題を投稿してくださることが多いのかな、と思ってます。

もちろん、頭使ってそういうアルゴリズム考えたりするのは楽しいんですけどね、そればっかりだとちょっと・・・。ならお前がお題考えろ、ですよね、ほんとすみません。

  • JPEGをGETして色反転して保存
  • アクセスログのIPアドレスを逆引き
  • ローカル変数の一覧を取得

こういうお題、結構好きだったんですよね。この言語ってどんなことできるんだろ、ライブラリとかそろってるのかな、っていういろんな側面を見せてくれるじゃないですか。

一方、数学パズル系とかだとほとんどがリスト処理とか、コレクションの処理になっちゃう。ぶっちゃけていえば、「その言語だから」っていうのが少なくなるって言うか・・・。大抵そのままほかの言語に移植可能だったり・・・。もちろん、Haskellだから、遅延評価だから、Lispだから、マクロだから、Cだからビット演算だから、とかはあると思うんですがね。

実用系のお題とパズル系のお題が3:7くらいだと一番個人的にはうれしいかなあ。  
 
 
 
そんな私は、最近、ボーナスがでた勢いで(音楽用)キーボード、エレキギターを相次いで購入。あれほど音楽はもうやめよっかな、と思っていたのに。機材を実家においてきたのに。ほんとに好きなものって、やっぱやめられないんですね。願わくば、俺にとってプログラミングもそうであらんことを。

11月 3, 2007
» やっぱり新規開発より保守が難しい

システム開発の話ではありません。

最近、やっぱりというかなんというか初音ミクに刺激されて音楽をもう一回やりたくなったんです。

中学高校と音楽ばっかりやっていたので、大学の4年間やってないくらいで忘れてないだろう、と思ってたんです。

でも、いろいろ忘れているわけですよ、実際。 


クラシック的な理論を習っていたので、感性優先で作りたいと思っても理論がわかってないと不安になっちゃう。というわけで、現在、和声法とか自由対位法とか復習しています。その次はFMとアナログでの音作りの感触を取り戻すことかな・・・

でもやっぱり基礎の基礎って絶対に忘れないもんだな、と思った。久しく使ってない知識だけど、トニイホロヘハ、ヘロホイニトハ、シミラレソドファ、ファドソレラミシ、これはしっかり覚えていた。


知識を保っていくことはほんとに難しい。人間の脳の記憶容量は普通に生きている限りだと無限に近い。storeにはあまり失敗しない。結局retrieveできなくなっていくのが問題だったりする。

それを大学の講義で習って、しばらくして自分用のメモを残すようになった。

今、昔書いた曲の譜面(ソース)をみても何でこういう進行にしたか、わからない。今回、勉強しなおしながらメモを残している。なんか、ドキュメントがないとわかんないやつになっちゃったみたいですごくむなしい。けど、やっぱりメモを残すのが一番効率がいい。記憶はそう簡単に消えない。retrieveする手がかりがあればいい。基礎とか、メモする必要はない。自分が忘れそうなことをうまく見抜いて、残していく。

これは幅広くやろうとしてしまう人の宿命だよなあ。言語にしても、実は自分用メモを見ないとまったく書けない、というレベルになってしまっているものもあるんだよねえ(HaskellとかSmalltalkとか・・・最近はどう書く?orgでコードを見るおかげでそこまでひどくないが)。


どう書く?orgと言えば主にScalaで参戦してるわけですが、ブログでほとんどScalaに言及してないな。まぁ、Scalaの記事とか読みたい人もあんまりいないだろうし、いいか。

11月 2, 2007
» ネットワークは地球の意識を覚醒させるか?

いまさら感があるけど。itojun氏逝去に思う。  
 


「ネットワークは地球の意識を覚醒させる」宗教じみているけど、実は俺は中学からずっとそれを信じ続けている。中学の時、ふと深夜につけたテレビでやっていた「serial experiments lain」という作品。そこにでてきたダグラス・ラシュコフのこの考えに、なぜか惹かれていた。

この話の要旨はこうだ。地球の人口は増え続ける。そしてやがて脳内のニューロンと同じ数に達する。そして脳内のシナプス結合と同じく、人間同士がネットワークで接続することによって「地球」という意識をも覚醒させる、と。

学習・記憶さえも、シナプス可塑性によるとされる。脳内のネットワークが、記憶を、意識を、人を作っていく。シナプスが、作られていく。神経回路が繋がっていく。それはとても自然なことで。

人間は本能的に繋がろうとする。距離が近いものとは直接繋がり、遠い人とも様々な手段を駆使してつながる。昔は手紙で。そして電話で。そしてインターネットが全世界をつないでいく。これはまさに、地球という生き物の成長である。我々が蓄積している情報、それは全て地球の「記憶」である。地球はまさしく、記憶をもっている。これは疑いがないこと。

じゃあ地球が意識をもっていない、なんてどうしていえるんだろう。我々の体の中にすんでいる菌たちは、自分の住んでいる「世界」が意識をもって行動している、なんて思いもしないだろう。これは人間も同じじゃないのだろうか。我々は無意識のうちのネットワークを形成することによって意識の一部になっているのではないか。

そして、もしこのまま人が発展をつづけ、宇宙規模でネットワークが構築されたらどうだろう。今度は宇宙の意識が覚醒するのだ。そしてそれはとても自然なこと。まさしく本能なんじゃないか、と思う。  
 
 


なーんて、ちょっとSFじみたことを考えていたりするので、IPv6には期待している。いくらNAPTがうまくいっても、それじゃダメなんだ、やっぱり。もっともっと繋がらないと。PCだけじゃない。人にかかわる全てのもの、地球上のモノたち全てが繋がっていかないと。

itojun氏とはもちろんかかわらせていただいたことはないけど、末端趣味プログラマーの俺でもIPv6といえばこの方だった。本当に惜しいと思う。ご冥福をお祈りいたします。

9月 17, 2007
» 手っ取り早く基礎を学ぶには

またまたマシン語がどーたらの話なんですが。

id:amachangが「マシン語やりたい!」といってるのをみて。

だって、普段パソコン使ってるけどパソコンのこと全然分かってないもん。

  • Windows も Mac も Linux も同じ CPU で動かせるのに、なんでバイナリが違うの?マシン語 = バイナリじゃない?
  • ハードディスクを管理してるのは、OS なのに(これが間違い?) OS のプログラムはどうやってハードディスクから起動されるの?

とかとか、僕正直パソコンのこと全然分かってないよ。恥ずかしいけど。

とのことらしいですが、俺は一芸あれば別に低レイヤ無理にしなくてもいい、ってタイプなんですが、まぁPHPとかJSが出てきてホント高レイヤで活躍してる人も増えて、基礎に不安をもっていたりするんだなあ、と思いました。

個人的にそういう人は情報処理試験技術者試験の「ソフトウェア開発者」あたりの解説本を買ってみればいいのではないだろうか?と思っていたり。

いわゆるアルファギーク界隈というものができて、そういう界隈ではへっ、資格なんてなんだよ、みたいな感じだと思うんだけど、まぁそれは正しい。暗記するだけでもなんとかなるから、実践力になるかは疑問だし。

ただ、一応国家試験だけあって、内容は確かです。過去問がタダで見れるので、一度できるかやってみたらどうでしょう。ソフトウェア開発技術者試験の午前がオススメです。


情報処理技術者試験:過去問


軽く内容を挙げてみると

  • 負数を2の補数であらわす32ビットの整数同士の加算
  • 乱数関数の値の分布
  • 単純マルコフ過程
  • 論理回路
  • DFA、NFA
  • BNF
  • コンピュータの処理性能が何MIPSか求める
  • 実効メモリアクセス時間を求める
  • メモリインタリーブとは?
  • DMAとは?
  • タスクスケジューリング
  • SAN
  • P2P
  • 待ち行列
  • 暗号化
  • TCP/IPの問題

などなど。まさに基礎という問題がそろっています。さぁどれだけ解けるでしょうか。まぁ解くの自体はやりかた丸暗記でいいと思うんですが。それでも問題の意味すらわからない、とかどう考えたらいいのかさっぱり、っていうのはマズいと思うなあ。

こんな感じの問題が出るので、解説本とかみると基礎をとりあえず幅広く見ることができるのではないかと。んで興味があるところを見つけたり、深追いしたいところがあればネットなりで調べたり、別の本を買ったりすればいいんじゃないかなあ。

そんな風に思うのです。

9月 12, 2007
» マシン語とか

最近の若いもんはマシン語をしらん、けしからん、みたいな話が盛り上がってますね。

そんな若くもないのですが(22歳)、中学のころにはWindows95があって、携帯電話を持っていて、高校生のころには既にADSLなどの高速回線を普通に使っていた、そんな世代の俺の考え。まぁ俺はプログラマでもなんでもないんだけど。

全体的な結論

全体的な結論を先に言うと、個人的にこういう原点回帰的な話というのはそんなに好きじゃない。もっと高次で活躍する人が増えてもいい、と思っているから。一人の人間の時間は有限で、それを高次レイヤにつぎ込んでもっとおもしろいことができるなら、そっちにつぎこめばいいんじゃないかな。俺はそれは全然アリ派。たとえば、音楽でいうと、DTMしかできないやつは音楽できる顔すんな、みたいなのが嫌い。DTMしかできなくてもいい曲かく人なんていっぱいいるし、それでいいと思う。なんていうか、努力とかよりも、感性にあこがれるタイプだからかな。上のレイヤからはいっても、きっと基礎を固めてちゃんとやりたい、それが必要だ、と思えば人は勉強する。だからあえて言うこと(必要だと言い切ること)でもないんじゃないかなあ。現に、だいたいコンピュータ技術者というものは最終的に下のレイヤへ下がっていく人が多いですよね。

マシン語とかについて

きっと議論を呼んでいるのは「絶対必要」みたいに断定してしまったからで、知っていればこんないいことがあるんだよ、という感じならみんな納得するんじゃないかなあ。

上に書いたように俺の世代ってのは中学ですでにWindows95があってVBやらVCやらDelphiがあった世代で。そんなに苦労しなくても見栄えのいいGUIアプリがかける環境があったわけで。当然意識しないとマシン語とかアセンブラには触れない。俺はたしかJAVAからプログラミングに入ったけど、別にマシン語知らなくても全然大丈夫だった。

んでさらにはWebアプリの台頭。Webアプリを書いているときにマシン語をしらないから、という理由で困ったこともないし、新しい言語を覚えるときに困った覚えもない。つまりプログラマでも書くプログラムによってはそんなに必要ない、ということ。そういう時代まで、先人達の努力でやってきた、ということ。暇があるなら低レイヤを覚えておくにこしたことはないけど、他に覚えるべきことがあるなら、そっちを勉強したらいいと思う。

ただ、知っといたほうがいろいろいいことがあるのも事実。なので覚えたい人はがんばりましょう、ということで。

同じことを書いてる人もいるけど、むしろアセンブラとかにこだわりを持っている人のほうが、「ひどい」コードを書くこともあるよね。処理効率を優先しまくって可読性を落としたりとか、何をやってるのかわからないのがイヤ、と自分で必要ないものまで書いたりとか。

俺と低レイヤ技術

とそんなことを書きつつ、実は低レイヤも好きな俺。すみませんすみません。個人的に低レイヤの(特にCPUとか。ネットワークとかじゃなく。)ことを勉強したいなら、エミュレータは一度書いてみるべきだと思う。一個8bitCPUのエミュレータを書いて、そのCPUの逆アセンブラを書いて、デバッガ作って、できれば自分でアセンブラを書いて、アセンブリ言語をマシン語に落として、そのコードを実行させてみれば、CPUの基礎はかなりわかると思う。データがそろってる8bitCPUならそんなに苦労することなくかけるので、一度書いてみてはいかが。アセンブリ言語の書き方も、割り込みがどーたらも、なんMhzとかってなんなの、とかサイクルってなにとかメモリってどうなってんの、DMAってなにがうれしいんだよとかそういやビット演算ってなんの役にたつの、とか色々一気に疑問が解決する。それがわかっていればあとは順をおってCPU関連技術を勉強していけば理解もはやい気がする。自分で命令セットまで考えてそのCPUをソフトで実装すればもっと完璧。

実装言語はなんでもいいんじゃないかなあ。手前味噌だけど、Pythonでもエミュレータを書こうと思えばかけるわけで、PerlでもRubyでもJavascriptでもいいと思う。動作速度よりも理解する過程が楽しいかと。ちなみに自分の書いたPythonでのNESエミュレータだとCPU(6502)とメモリ関連で、簡易逆アセンブラ込みで1000行ほど。速度を犠牲にすればもっと短くかける。

あと、これも書かれてるけどむしろネットワークとか、DBとかのほうがよっぽど低レイヤの知識が必要だよなあ。10BASE-Tと100BASE-Tでなんでつなげるリピータハブの数が違うのかとか、これならどれだけスループットが確保できるか、それをわかるためにもCSMA/CDはなんたるかとか、実際どうやってケーブル上で衝突を検出してんのかとか色々わかってないと困るしねえ。他のネットワーク技術でも一緒。生のパケット(orフレーム)を見なけりゃいけないことも多々あるし。ソフト使ってちゃんと設定がかけます、だけだと意味ない。OSIの層を上から下までカバーしないと。そういった意味でもネットワークっておもろい。

6月 23, 2007
» とにかく好きなものを作るということ、あるいは器用貧乏について

via つまらなくて役に立つ物を作るということ

たまにはma.laさんに釣られてみるテスト。

実は俺のプログラミングというかクリエイティブなことについての考えはシンプルで、「とにかく作りたいものを作る」それだけだったりする。まぁ結局その作りたいものがゲームだったり、XMLをパースしたりすることだったりするわけなんだろうけど。  
 


 
 
もっと突っ込んで言うと、作りたいものを作る、それだけなので別に何も残せなくても俺はぜんぜん気にしない。死ぬまでのなかで、あの人は○○を作った人だ、とかそんな人になりたいとは思わない。

事実、俺が個人で作っているものは好き勝手だ。

このブログに出してる成果物で言えば、あるときはRailsを触っていろいろやっていたり(まぁこれは仕事もあったが)、Javascriptをいじってテンプレートエンジンつくったりいろいろしたり、PythonでNESエミュレータを書いたり。

ma.laさんとは違ってゲームも作る。SDLを使って2Dのも作るし(Ruby/SDLやpygameではない。CあるいはC++、昔だとDXLibかなあ)、最近はIrrlichtも勉強していて3Dゲームも作りたい。

言語とかその他の面でも手を出しまくりだ。普段からC,C++,Java,Ruby,Python,Javascript,Schemeなどを書くし(作りたいものに一番便利な言語を使うだけ)、単に勉強として変な言語にも手を出す。

他にはReasonやハード音源を使って自作の曲をだしてたりもした(別名義)。一応小さいころから音楽はやっていて、しかもきちんと音楽理論も教えてくれるとこだったので、そこそこのクオリティだと思う。DTM特有の技術も、一通りの生楽器の奏法の再現法を勉強したり、エフェクトをいじり倒したりした。

画像もやる。そこまで絵心があるわけじゃないけど、いろいろなソフトを経てGimpに落ち着き、ある程度の画像処理ならできるし、ゲームのマップ作成とか位なら普通にやる(A5のインテュオスほしいなあ・・・)。前にも書いたけど、3Dにも手を出している。  
 


 
 
んで、そんなに手を出しまくってお前は何を残せたんだ、と言われたら「何も残してないよ」だ。何も誇れるものなんてない。結局どれも中途半端で役立たずだ。だから、俺はWEBプログラマでもなければ、ゲームプログラマでもなく、プログラマですらなく、ミュージシャンでもなく、絵描きでもない。

実はこれは結構悩んだ。というか悩んでる人は結構いるんじゃないかと思っている。世の中、スペシャリストスペシャリストで、仕事をしようにも俺みたいな器用貧乏タイプの人は困る。だから、無理に自分がほんとに好きなものはどれなんだ、とか何か残せているのか、とか自問したりする。

それに対しての俺の結論は、「器用貧乏で何が悪い」だ。楽しければそれでいいのだ。俺は作ることすべてが好きなんだ。たとえ何の才能もなくて何も残せなくても作る過程が大好きなんだよ。少なくとも、世の中がスペシャリスト優遇だからといって自分を抑えて、スペシャリストになって生きるよりは、不器用に器用貧乏で生きるほうが絶対楽しい。めざせ最強の器用貧乏。なにかひとつ、スペシャリストになるほど好きなものが持てる人は運が良かっただけなのだ。

 
 


 
 
ただ、器用貧乏じゃないとできないこともあるんだぜ、とは常々思っている。器用貧乏タイプの人はどうか、負けないでほしい。

5月 28, 2007
» プログラマの給与未来自給はそんなもんかも:プログラマとミュージシャン

via 雑誌記事 「日本のプログラマーの未来時給」を見て人生オワタ\(^o^)/

プログラマの未来自給は651円らしい。

個人的には「そういう職業なんだろうなあ」という感じ。

プログラマとミュージシャン

音楽をやっていたせいか、どうもプログラマとミュージシャンを重ねてしまう。

一般的にプログラマというと、プログラミング言語でなにか書く人。音楽でいうと楽器のプレーヤー。

ギターやってるなら、ベースもOKっていう人も多いはず。ついでにピアノなんかもできたり。もっといっぱい、ドラムもたたけるし、バイオリンもひけまっせ、みたいな人もいるかもしれない。そういう人はあんまりいないから目立つけど、実際はギターとベースくらいがいいところかなあ、と。プログラミング言語でもそうだと思う。

こういう幅広さで有名な人もいれば、その手の演奏者として名をはせる人もいるだろう。ギターがすげー人とか。Perlのすげーハッカーとか。

また、演奏者の中でも楽譜を見て演奏するだけの人もいれば、自分で曲を書く人もいる。プログラマでも確実にある程度の規模の設計をできる人はどれだけいる?10秒程度の音楽なんて誰でもつくれる。5分くらいのいい曲、かけるだろうか?

常に動向をおっているだろうか?小室哲也は嫌いな人もいるだろうが、あの流行への敏感さ、流行を生み出す力はすごいと思う。それでいてある程度の中心がある。「俺はこういう音楽が好きだから、これだけでいいんだ」ってなるのは当然否定しない。、でも最低限、聞いてみるくらいはしたほうがいいと思う。自分の好きな音楽に対しても新しいアプローチとかができると思う。俺はCやってるし、別にHaskellはやっててもどうでもいいよ、もしくはHaskellの存在なんて知りもしないプログラマがほとんどだろう。

基礎は固めているだろうか?「カッコいいから」って自己流でギター始めた人はどれくらいいるだろ。もちろんそれで上手くなる人もいる。そういう人は天才だからほっておいて問題ない。でも大体の人は変な癖がついて、よくない方向へいってしまう。ギターはバイオリンより入りやすい。適当にコードをならせばそれっぽくなる。でも、バイオリンと同じくらい奥が深いものだ。LLはCとかアセンブラより入りやすく、ちょっとやればそれっぽい物が作れる。でも奥深さは相当なもんだと思う。

結局、活躍しているミュージシャンはほんの一握りだ。たくさんの若者が音楽に魅せられて、バンド組んだりしてプロ目指してみちゃったりする。結局、スタジオ付のプレーヤーになるのが関の山で、平凡なプレーヤーとして終わる。しかも、いまやプレーヤーの代わりにはコンピュータがいて、それを上手く操れるやつのほうがえらかったりする。スタジオの録音のエンジニアとかになったほうがまだいいわけだ。プログラマよりSE。

さらにたちの悪いことに、一般ユーザーはそんな名演奏者を求めていなかったりするのだ。実際、喜んで打ち込みのJ-POPを聞いてるでしょ?(ちなみに俺はそれが悪いなんてぜんぜん言わない)。ドラムなんて名演奏者が一発で叩いたほうが速いに決まってる。でも誰かに打ち込ませたほうが安いし、ユーザーも満足なんだよ。PGでもそれは同じで、一般ユーザーは動けばそれで満足なのだ。だいたい、そのサイトがXHTML validかなんて誰が気にする?

有名なプログラマーや技術者はその数少ない売れてるミュージシャンだと思う。これは名曲だ!といわしめる曲とか、もしくは新しい音楽のジャンルを作るような革新さえ起こしそうな、そんな人たちだと思う。そういう人はやっぱりお金も貰えるだろうし、ある程度自由もきくと思う。でもやっぱり、音楽学校を出た人が全員一線級のプロになれないように、多くの人、情報系を出た人でさえそのような才能を持った人はすくない。ホントは熱いロックをやりたくてもそれをやる自由もなくJ-POPのバックでやったりするんだろう。プログラマって、つくづくそんなジャンルの職業なんじゃないかなあ、と思う。きっとこういう音楽に似た部分が俺をプログラミングに引き込んだんだろうな。