花京院の続き。
"プログラマーとして困る"というのはみみっちい話だけど2点ある。(両方個人的な話で、「俺は関係無いな」という人も沢山いると思う。)
プログラマーの価値が下がる
超大雑把に言うと、IT業界のエンタープライズ系・コンシューマ系は、
- 垂直統合型の時代
- 水平分業型の時代
- オープンソースの時代
- Googleの時代
って感じだと思う。1、2の時代はある程度鉄板ソリューションがあったんだけど、オープンソースが仕事にも使える様になってきて、プログラマにコーディングだけじゃなく、カオスな中からソリューション自体を選ぶ目利き的な事も期待されるようになった。
それが全部Googleでいいんでしょ?ということになるとIDEやフレームワーク、ミドルウェアなどもGAEに特化してきて今よりプログラマーの差異は小さくなる。(カオスな中をHackして一刀両断に問題解決するのが醍醐味だったわけだ)
多様性が減るとつまらない
プログラムは仕事と同時に趣味でもあるわけだけど、オープンソースが上手い具合にGoogleに誘導・操作されると多様性が無くなってつまらない。
同じジャンルに沢山のプレーヤーがひしめいて、パクりパクられ、鎬を削って、時には"誰得"的なものもあって、煮詰まりつつじりじりと全体のレベルが上がってきてある時、ポンッ!みたいのが面白い。
わがまま
要は業界が成熟してきたっつーことなんでしょう。黎明期を回顧する典型的おっさんなんですが、オープンソースでその成熟が思い切り予想外の方向にすっ飛んでいったのを見ると軌道修正されてGoogleに集約されずに行く方向は何か無いのかなあと思っちゃうわけです。
真面目に考えると、インフラをどうにかしないと変わりそうにないですな。SETIやFONみたいにP2Pか相互幇助なハードウェアリソースの上で動くレイヤーを開発する?難しそうだなー・・・。
関連:
Hpricotで良いなと思ってたのが、"クラス名と同名の関数にデフォルト動作をさせる"というやつ。
class Foo
def initialize
puts "new"
# code...
end
def fetch
puts "fetch"
# code...
end
def send
puts "send"
# code...
end
end
def Foo
foo = Foo.new
foo.fetch
foo.send
end
こんな感じでFooクラスにFoo関数を作っておく。
% irb -r foo
>> Foo()
new
fetch
send
=> nil
普通こういう場合Foo.run!とかを用意するけど、クラス名をとりあえず実行してみればいいというのは楽。変数と関数の2値を持てるところを利用してるんだけどシンプルで好きだ。
このパターンの名前みたいのあるのかな?
Life is yak shaving: GAEOに関するレポートを公開しましたTwiiterの知り合いでkomagata氏に、GAEO(Google AppEngine Oil)の調査をご依頼いただいたので、調査してましたがGoogle Codeにそのレポートと簡単なサンプルを載せてありますので、ご興味のある方は見てください。
Python迷子のkomagataです。
GAEで利用できるフレームワーク調査とGAEOのサンプル作成をnaokitsさんにお願いしてたんですが、とても分かり易くまとまっているのでGAEやPythonの大海原で溺れている情報弱者の俺の様な人はとても参考になると思います。特にGAEOは何か日本語情報少ないですからね。
フレームワークといってもdjangoなどのハードなのとは違ってwebappとかDatastoreとかをちょろっと薄皮かぶせた様なもんで、行数自体少ないのでソースを全部読むのもそれほど苦じゃない感じです。(pythonは特に他人のコード見易いですし、railsなんかより全然小さい。)
お仕事依頼したのは人助けみたいなものだけじゃなくて、
- python歴1週間未満だったジャパン価格の人日単価の俺が調査するよりiPhoneやGAE, Pythonに習熟しているnaokitsさんにお願いした方が遙かに合理的。
- 海外の方にtwitterのみで依頼するというスタイルは今後のためにも以前から試したかった。
- 会ったこと無いひとにリモートでの仕事依頼は何度もやってるのでリスクは感じなかった。
- プログラマーというだけで無条件で好きなのでそういう人の助けになりたい。
- 盗難にあったnaokitsさんも助かる、GAE, Pythonに詳しい人に調査してもらえて僕も助かる。という状態なのでやらない理由が見つからない。
ということでtwitterのTLでみた3分後ぐらいに依頼しました。正直、会ったこと無い人に何回も仕事依頼してますが、コード見れば一発で素晴らしい仕事をしてくれるかどうかはほぼ100%わかるし、今のところその通りになってます。逆に履歴書・職務経歴書は12%ぐらいしか参考にならない。
実際に依頼する手順としては依頼内容と金額と口座を聞いてネットバンクから振り込むだけ。まったく手間かかりません。
naokitsさんの仕事は上記の内容で確認して頂けると思います。それ系の仕事依頼したい人はiPhoneもOKなのでtwitterで気軽に依頼してみてはどうでしょうか。(naokitsさんのtwitterアカウント:naokits (naokits) on Twitter)
参照:
% sudo gem install holiday_jp -s http://gemcutter.org
% irb -r holiday_jp
>> pp HolidayJp.between(Date.new(2009, 1, 1), Date.new(2009, 2, 1))
[{:name_en=>"New Year's Day",
:week=>"木",
:date=>#<Date: 4909665/2,0,2299161>,
:name=>"元日"},
{:name_en=>"Coming of Age Day",
:week=>"月",
:date=>#<Date: 4909687/2,0,2299161>,
:name=>"成人の日"}]
日本の国民の祝日を返すgem作りました。ベタです。
参照
瀬戸内海の漁師の続き。
GAEが出た時、
「スケールするつってもそんな大量のアクセスこないしなぁ。月100万PVぐらいまでならさくらの7800円(専用サーバー)で行けるんじゃないのかな?」
なんて思ってた。そんな風に考えてて触ってすらなかった。花京院風に言えばコチコチのクソ石頭の持ち主だった。ところが一年半近く遅れて最近触ってみたところ、なんかスゲー簡単だし、ほとんどのWebサイトは無料で行けるぐらい無料ゾーンが広い。
どうやらGoogle様の意図は俺の思ってたのとは違うらしい。
高性能な分散環境にばかり注目していたが、GAEはある意味、"無料サーバー"なのだ。GAEには"0円"から"格安専用サーバー1台程度"までを全てリプレイスできちゃうような無料レンタルサーバーサービスという側面がある。"WordPressが動く広告も無い無料レンタルサーバー"があったらみんな使うだろう?MySQLとSQLiteの区別が付かない人がWordPressとPython製のGAE対応CMSの違いを気にするだろうか?
前提知識をゼロとすると、FTPと会社毎に違うコンパネ画面を使うよりGAEの方がよっぽど簡単じゃない?GAE上のオープンソースソフトに中国製が多い気がするんだけど、その辺りにメリットを感じてるんじゃないのかな。GAEは激安(無料)、超高品質(安定+無限にスケール)、簡単。安い・美味い・速いを冗談じゃなくて提供してる。
Google様は"際限なくスケールする必要のある大手サービス"だけでなく、儲からない"個人・中小企業のサイトや小さいサービス"も全てGAE上に乗せようとしている。何故そんなことをするんだろうか。(Amazon EC2はロリポユーザーをターゲットにしてないでしょ?)
"大手と個人・中小を全部カバーする"
要はmixiとアメブロとさくらとロリポのインフラがGAEになったら殆どのユーザーはGoogleにアクセスしてることになる。
何が起こるかっつーと、Googleはクロールとかまどろっこしいことしないでも自分とこのデータを解析すれば格段に高品質の検索サービスや広告配信サービスを提供できるようになる。
殆どのサイトがGoogle上にあったら他の検索エンジン勝てるわけないよねぇ・・・。同じ事やろうったってソフトはできても世界一安価なデータセンターはすぐには真似できない。出たばっかのころのGoogle Appsを会社のメインに導入するのって結構チャレンジャーって感じだったけど、今やITベンチャーでは使わないところには特別な理由が必要な感すらある。そんなノリで会社のページをGAE上に作るのに何の抵抗も無いって状態すぐに来そうじゃない?だって無料なんだし。
GmailとかGoogle Appsって何であんなにふとっぱらに使わせてくれるのかなとか思ってたけど、"ネット上の全サイトGoogle移行計画"の途中で出来た単なる副産物だったとしたら恐ろしいよねぇ。(そこまで最初っから決まってたとは思わないけど、80%ルールで、頭良い人ばっかりの会社で延々とプレゼン大会状態が何年か続いたら自然とそんな野望が出てきそうな気はするw)
「グループウェアだけじゃなく、会社のウェブサイトも無料でできちゃうのかー、そりゃいいね!」
って感じで大体の人には良いお話だと思う。しかし、プログラマーの俺としては困る部分もある。
つづく・・・
関連:
RubyのTimeはデフォルトで現在時刻を返すんだけど、Dateはデフォルトでユリウス暦元日を返すんですな。
% irb --simple-prompt -r date
>> Time.new
=> Mon Nov 16 21:34:22 +0900 2009
>> Date.new
=> Mon, 01 Jan -4712
俺の中では現代からいきなりスリーハンドレッドのレオニダスみたいなマッチョが剣と盾持って暴れてる世界に飛ばされたイメージ。
俺「紀元前4712年なんて随分昔ですよねえ?」
レオニダス「あ”ぁぁあ”あ”ぁぁぁあぁぁぁ”あ”ぁ”ぁぁぁ!!!!???」
俺「Date#todayというメソッドを作って、デフォルトは今日の日付を返してくれると便利だと思いませんか?」
レオニダス「うぃおあえをfなdfす;あsぢfばあlwfなうぇおうfないうぇbふぃうやwふぇやsdfb!!!!!!!!!」
|
デザイナーのmachidaさんと話していて、"エンジニアによってスキル・給料・モチベーションがバラバラで分かりづらい"的な話しを聞きました。
というよりもっとはっきり言うと、
「高い金取ってポンコツシステム作ってくスーツの奴は何なんだ。」
という事っぽい。
これは耳が痛い話ですが、下記のようにプログラマーには3種類居ると考えてはどうかと話した。
- 土日にコードを書く人:ホビイスト
- 平日にコードを書く人:インダストリアルプログラマー
- 365日コードを書く人:ハッカー
また、プログラミングには産業的な側面と文芸的な側面の両方があるので分かりづらい。
産業的な側面からみて土日も勉強しているのはとても熱心な人だということになるけど、文芸的な側面、例えば音楽をやってる人にすれば土日練習するのなんて当たり前。
僕らは現状のスキルが無くてもホビイストを探してる。求人市場にはスキルの高いインダストリアルプログラマーが沢山いる。
machidaさんを混乱させているものと従来の求人方法が上手く行かない原因は同じところにあるのかもしれません。
Wakame 1.0開発者の募集を締め切りました。 | やむにやまれずWakame 1.0ではデータセンタで供給すべきスケールアウトのためのインフラからユーザアプリケーションまで垂直に提供できるようになる予定です。
すべての開発者に、開発時から使えるプログラマブルなデータセンタと、運用を楽にするシステムオートメーションを。
クラウドっつってもAmazon EC2みたいのじゃなくてGoogle App Engineみたいに自動でスケールしないと意味無いですよね。要するにどんな規模になってもインフラ専属エンジニアが一人もいらない環境じゃないと意味無いと思うんです。(インフラエンジニアはユーザー企業側ではなく、クラウド提供側に移る)
専用サーバーが定額から従量性に変わっただけの現状の国産主要メーカーのサービスは意味が無い。国産主要メーカーがGAEみたいなのを提供するには、現実的にはパッケージが必要で、Wakame以外に僕は聞いたこと無いんですが、こういうパッケージは絶対必要だと思います。
その上でビル型のデータセンターでコンテナ型データセンターにコスト的に対抗しなきゃいけない。インフラに関わる人は、ソフト面、ハード面でこれに勝つ方法を必死に考えるか、瀬戸内海で漁師をやるか、ある程度真面目に考えないといけない。
僕らプログラマも今までの技術の大半をポイッと捨てて、色々覚えないといけないかもしれない。
来年か再来年の4月頃のWeb+DB Press恒例の新人特集はGAEさえ覚えればLAMPとか覚えなくていいよって事になってたら面白いですね。