django

CNETのエントリー:How Google’s App Engine stacks up with Amazon’s EC2の中のイメージ(左参照)のGoogle App Engineの中にPython & Djangoとある。Djanogって何?最近他でも見かけたことがある、変な名前だなー。ちょっと調べてみた。DjangoはPythonバージョンのRubyOnRailsであるようだ。要するにPython用MVCウエブ・フレームワーク。Webアプリケーションをささっと書けるらしい。結構流行っているようだ。これで又、Pythonを勉強する理由が出来てしまった。

Django is a high-level Python Web framework that encourages rapid development and clean, pragmatic design.

The Joel Test

前から読みたいと思っていた、Joel on Softwareを読み始めた。出だしから中々良いです。ソフトウエア開発に関して、今まで、当たり前の事だけど、言葉として上手に整理出来ていなかった事がいくつかあった。それらの事を彼の言葉を借りて再確認している状況。今日中々良いと思えたものThe Joel Testに付いて。

The Joel Test

  1. Do you use source control?
  2. Can you make a build in one step?
  3. Do you make daily builds?
  4. Do you have a bug database?
  5. Do you fix bugs before writing new code?
  6. Do you have an up-to-date schedule?
  7. Do you have a spec?
  8. Do programmers have quiet working conditions?
  9. Do you use the best tools money can buy?
  10. Do you have testers?
  11. Do new candidates write code during their interview?
  12. Do you do hallway usability testing?

これはJoelが考え出したソフトウエア開発チームの質をはかるテスト。

  1. ソースコードバージョン管理システムを使っているか?
  2. 1ステップでアプリケーションをビルド出来るか?
  3. 毎日コードをビルドしているか?
  4. バグ管理システムを使っているか?
  5. 新機能を追加する前にバグを修正しているか?
  6. スケジュールは絶えずアップデートしているか?
  7. コードを書き始める前にスペックは書いているか?
  8. プログラマーが仕事に集中できる環境であるか?
  9. 最高のツールを使っているか?
  10. QAエンジニアはいるか?
  11. 仕事の面接で候補者にコードを書かせているか?
  12. ユーザービリティ・テストをしているか?
僕が働いてきたソフトウエア会社は、どこも、1番、4番、10番は満たしている。しかし、その他の部分は会社に寄って違う。7番に関しては、ソースコードが仕様書だとか言って、いきなりコードを書き始める事もある。6番に関して、いざ開発が始まるとスケージュールのアップデートなどは後回しになってしまう。インタビューでは、僕が今日の面接官は出来る人だったなと感じた人は、インタビューの中で、実際のコードもしくはpseudoコードを書かせていたなー。上記の12リスト当たり前の事だけど、当たり前に出来ていないので、この本の中でJoelが上手に説明してくれていて大変役に立つ。この本は読むのが楽しい。
(*)この本はJoelのブログを元に書かれています。

あるソフトウエアエンジニアの歴史

The American Dream: 17 Years of Engineering Software

MIT Pressから発行されているアルゴリズムの本:Introduction to Algorithmsのイメージが表示されているという理由だけで読み始めたこのReadWriteWebのエントリー。このエントリーはAlex Iskoldsさんの17年間にわたる(学生時代込み)、ソフトウエアエンジニアとしての歴史。なぜか、偶然にも、彼のキャリアと自分のキャリアで似ている部分が多々あるので、大変気になって。彼のキャリアの歴史は1994年4月にゴールドマンサックスでassociate programmer analystとして始まる。それは偶然にも僕と似ている。僕も同じ1994年4月、日本の証券会社のシステム部門でSEとしてキャリアを始めた。ゴールドマンサックスで彼は、C言語、UXIX、Windows X, Motif, Sybase, SQLなどの技術を使って金融システムの開発をする。僕も、全く同じで、C言語、UXIX、Windows X, Motif, Sybase, SQLなどの技術を使って証券の取引システムを開発していた。彼は当然アメリカで。僕はその頃は日本で。Alexは次の会社でC++とかObjected-Oriented Programmingを学び、開発に従事していた。偶然にも僕も2社目の会社でC++、Objected-Oriented Programmingを学び、開発をしていた。その後、Alexは長い間、Java、J2EE関連の仕事をする。僕もBostonのスタートアップでJava、J2EEに触れ、それにはまった。Alexは2006年からWeb関連の新しい技術(JavaScript、PHP、もろもろ)に飛び込む。自分もWeb関連技術に移行中。Alexは2社も会社を起業していて、多分サクセスフルな人生を歩んでいると考えれるので、その部分は自分とは違う。が、同じ年の同じ月に、C言語、UNIX、X Windowからキャリアを始めた事が妙に気になった。

出来るソフトウエアエンジニアの10の習慣

Top 10 Traits of a Rockstar Software Engineer

  1. Loves To Code
  2. Gets Things Done
  3. Continuously Refactors Code
  4. Uses Design Patterns
  5. Writes Tests
  6. Leverages Existing Code
  7. Focuses on Usability
  8. Writes Maintainable Code
  9. Can Code in Any Language
  10. Knows Basic Computer Science
  1. コーディングが大好きである
  2. やり遂げる事ができる
  3. リファクタリングを心がけている
  4. デザインパターンを利用する
  5. 単体テストを書く
  6. コードの再利用をする
  7. ユーザービリティを大切にする
  8. メインテナンスしやすいコードを書く
  9. どんな言語でもコードが書ける
  10. 基本的なコンピューター・サイエンスの知識を持つ

どんな職業でも1番は重要だと思う。昔から「好きにはかなわない」といわれている。2番も凄く重要で、何事も最後までやり遂げ世に出さなければ、やってないのと/できないのと同じ。3-10はソフトウエア・エンジニアとしての重要な知識・技能・習慣などである。3番から10番に関してどれほどの知識があるか、実際実行しているかによって、ソフトウエア・エンジニアから作りだされるソフトの質に影響してくると思う。

ReadWriteWebで紹介されていた「Software Craftsmanship」は是非読んでみようと思っている。

物の立場にたってデザインする

デザイナーのスピーチを聞いてきたのでその中で重要だと感じた話

デザインをする上で重要な事:

  1. 中身と外見のバランス - 車だったら、エンジンの乗るスペースや、人の乗るスペースと車のデザインのバランスを考えなければならない。機能とのバランスも重要。
  2. 物の立場にたってデザインする - デザインされる物の立場にたって考える事によって、より良いデザインをする事が出来る
  3. デザインはアートではない - アートは自分の作りたいものを作る。デザインは目的を持って作る。

その他にも色々話されていたがこの3つが重要だと感じた。

Ideas are Cheap. Execution is hard.

Ideas are cheap

JoelのForumでも書かれているが、殆どの個人、企業がアイデアを持っていても、実行しないか実行できない。だから実行能力の高い個人、企業は成功する。もう一つ加えると、だからHackerは凄いのである。

カリフォルニアに移って来てからアイデア帳に書き込まれるアイデアの数は増えて来た。特別なアイデアというのはまだないのだが。多分色々な物、情報に触れる機会が増えたので、アイデアを思いつきやすい環境に自分を置けたのだと思う。問題はアイデアを実現する為のExecution(実行)。小さなアイデアでもプライベートの限られた時間に実現しようとするとそれなりに時間がかかる。中サイズのアイデアでも途中で息切れしてしまう。自分自身、Executionは難しいと感ずる今日この頃です。

世界一の研削盤を目指してきたら

世界最大級の望遠鏡レンズを研削でつくるマシンを開発した男たち

パラダイス鎖国 」を読んでから、毎日「パラダイス鎖国」状態を打開する為のソリューションを知らない間に探している。多分答えは一つではなく、様々な答えがあるのだと思う。日経BPで紹介されているナガセインテグレックスの方々が通って来た道が一つの答えとなるのではないか?自分達を信じ、一つの事(研削盤技術)を磨き続け、その世界で一番になる。その磨き上げた技術(力)が、一つのきっかけを通し、世界で認知される技術となった。内容は日経BPを読んでください。ナガセインテグレックスの方々がやってきた事は、日本が得意とする「改善&効率化」であり、「パラダイス鎖国」の中では「改善&効率化」では、現状は打破できないのではないかとの意見もある。しかし、「改善&効率化」を繰り返して行き、臨界点を超えたとき次のステージに到達する事ができるのかも知れない。

自分達、個人個人が、自分を信じ、自分が信じた物を磨いていく事が遠回りのようで、意外と近道だったりするものなのかな?多分、自分達に足りないものは、奇抜なアイデアではなく、自分(達)を信じることなのかもしれない。

最後ににナガセインテグレックスの方の言葉を載せます。

「何にもないところから、世界一になろうとバカみたいに言い続け、本気で信じてやり続けてきた。それが大事。自分が信じなければ、誰も信じてはくれません」

(追記) 自分は大学生時代、機械科だったので、自動化されていない旋盤で、マテリアルの表面を磨いていた経験がかなりある。僕にとって、それはかなりつらい作業だった。ナガセインテグレックスの方々の費やした努力は凄いものである事は簡単に想像できる。言葉で言えば、一行、「旋盤技術を磨いてきた」。でも、その中身は、マテリアルを旋盤に設置し、何度も何度もその表面を磨き、失敗したら、最初からやり直し、その繰り返しを何度何度もやったのだと思う。単調作業もかなりあるだろうし、重労働もかなりあったと思う。そのつらさから逃げなかった、ナガセインテグレックスの方々はかっこ良い。「ものづくり日本大賞」受賞おめでとうございます。

「パラダイス鎖国」を読んで-その2-自分について

パラダイス鎖国 忘れられた大国・日本を読み終えた。このエントリーは本を読んでいる間に考えた自分の事。前のエントリー「パラダイス鎖国」を読んで-その1-メモとはぜんぜん違う内容です。

本を読んでいる間に、僕も昔はパラダイス鎖国状態であった事を思い出した。全く海外に興味がなかった。では、どうして自分はパラダイス鎖国状態ではなくなったのか?

開国前(鎖国状態):高校生の時までは東京が僕の憧れの土地であった。海外を含め別の地域などには興味がもてなかった。大学生時代、その日その日を生きるのに精一杯だった。海外の事など考えようともしなかった。社会人最初の1、2年、海外の事を考えるような状況になかった。英語が出来なかったので、その影響もあると思う。海外旅行に行こうとも考えた事がなかった。

開国前後:社会人2、3年目の頃、バックパックを担いで日本からヨーロッパまで一年かけて旅した写真家の本を読んだ。その人の困難を乗り越えながら新しいものに出会う、彼のライフスタイルに憧れた。自分の知らない土地に憧れ始めた。自分の知らない人に出会ってみたくなった。友人二人が海外旅行を経験した。それを聞き、僕も人生で一度くらい海外旅行をしなければと思った。バックパッカーの聖地、タイ・バンコクのカオサンの安宿街に泊まってみたかったが、初めての旅行でそんな勇気もなかったが、バックパックを担いで1ッ週間弱だと思うがタイを旅した。パスポートを確認したらそれは、1995年9月24日だった。その頃はバック・パッカーに強い憧れを持っていた。テレビでは猿岩石がヒッチハイクの旅をして人気を集めていたと思う。

開国後:初めての海外旅行を経験すると、勢いがつき、ヨーロッパなどをバックパックを担いで旅して回った。バックパッカーと言っても、Max2週間の旅である。会社で休める範囲で行動していたので、連続2週間がMAXだった。パリで出会って一日だけ一緒に行動したマイアミに住んでいたアメリカ人の家とかにも泊まりに行った。この頃、英語の勉強も始めた。TOEICのスコアだけ見ると勉強の効果はなかった。仕事では、外資ソフトウエア会社に転職した。そこには最先端の技術が詰まっていると想像したから。そこで若干海外のエンジニアとのコミュニケーションが始まる。アメリカのソフトウエア会社に付いて書かれた本、ソフトウエア開発にまつわる話などを読み、影響を受け、アメリカでのソフトウエア・エンジニアのポジションに興味を持つ。そして、アメリカへ移住。

振り返ってみると、若い時の僕は意識的に鎖国していたわけではないが、結果として鎖国状態になっていた。理由として、その時期には自分が興味を持てる海外の情報が僕の所になかった。要するに、海外に付いて知らなすぎた。開国日は、初めての海外旅行だとおもうが、その行動を取った理由は、自分だって一度くらい海外旅行を経験しないととか、バックパッカーに憧れたとかそんなものだった。その後は、自分の興味に任せて拡大しつづけたのである。アメリカに移住したのは、アメリカに憧れたのではなくて、アメリカのソフトウエア・エンジニアというポジションに夢を持てたのが理由である。

「パラダイス鎖国」を読んで-その1-メモ

パラダイス鎖国 忘れられた大国・日本を読み終えた。このエントリーは自分の為のメモとして。

メモ1(ページ044辺り)

ハードウエア産業における2つのグローバル化公式

  1. 数の多いほうが勝ち
  2. グローバルブランドの確立と維持

ハードウエアの生産にはソフトウエアと違いコストがかかる。数を作れば作るほど一台当たりのコストが安くなる。そこに競争力が生まれる。ブランド力があれば少しくらい高くても買ってもらえる。この二つはソフトウエア及びインターネットビジネスにも当てはまる。ソフト及びネットビジネスは、コストは数に限らず、限りなく一定である。ソフトウエアであれば、お客さんに納品するコストは、CD一枚?送料?ダウンロードの為のホスティング代?ネットビジネスであれば、ウエブ・ホスティング代?ハードと比較すると限りなくゼロに近い。しかし、ニッチなものを除き、基本的にはマーケットシェアを取った1つ・2つの企業しか生き残れないので、ソフト・ネットビジネスでも、1の数は大事である。2は基本的にどんなビジネスにも当てはまると思う。お客さんはブランド力のある企業から商品を買いたいものである。ブランド力は信頼と言う言葉と置き換える事ができると思う。

メモ2(ページ056辺り)

高度成長期の日本企業は、欧米の技術を学んで自社開発し、高品質・低コストの製品を作り、先進国に輸出していた。しかし最近はそれをしない。(<-本の中に直接はこうは書いてない。自分の意見込み)

ソフトウエア・ネットビジネスに関してこれをしないのは、そうする事が難しいからではないかと考える。ハードウエアに関しては、韓国、台湾、中国からより高品質で低価格な商品がでて来る。しかし、インド・中国から低価格で高品質なソフトウエア・ネットビジネスが出て来たとは聞いた事がない。ソフトを開発する為の人員はインド・中国から供給されているが。日本も同様、ソフトウエア・インターネット関連ビジネスに関してはこうする事が難しいのではないか?たとえばオラクルより2倍速いデーターベースをオラクルの半額で売るなんてのはかなり難しい(殆ど無理?)。

メモ3 (ページ123辺り) メモ1の2つの公式は今の時代にあわなくなっている。そこで著者は下記のアプローチを提案している。

「試行錯誤戦略 (けもの道戦略)」

日々、試行錯誤して生きて行くというのもありかもと思えるが、絶えず試行錯誤するのも辛い時もあると思う。そこで、似てるけど、ちょっと違う僕の提案。イノベーションを生み出すために、Googleには「20%ルール」がある(Wikipedia: Google Innovation Time Off)。Yahoo!には「HackDay」がある(Wikipedia: Hack Day)。エンジニアは、絶えずイノベーションを起こそうと行動しているのではなく、普段は自分がやらなければならないことをやり、Googleの場合は20%を何か違う物に費やす時間があり、Yahoo!では、みんなで集まってHack(イノベート)する日があるのである。絶えずイノベーションを起こす事が仕事という人もいるとは思うが。この方法を個人に当てはめると、自分のプライベートの時間の20%を何か新しいものに費やすとか、月に一日、個人Hackの日を設定するなどして、新しい事を始めたり、学んだり、作ったり、考えたり、何か行動する時間を作ったりするのも、一つの手だと思う。

海部さんを見習って、この戦略にコピーを考えた。「個人イノベーション・タイム・オフ戦略」、「個人ハック・デイ戦略」。ちょっと今一だなー。

はてなスターをブログに設置

読者が少ないのに、怖いもの見たさで、はてなスターをブログに設置してみた。
設置方法は下記を参照

2007-07-07 はてなスターをブログに設置するには

このブログにはWordpressを使っているのと、Themeがカスタムなので以下の変更が必要だった。

  • タイトルのタグが<h3 class=”h1″>なので下記のラインをheader.phpに追加Hatena.Star.EntryLoader.headerTagAndClassName = [‘h3′,’h1’];
  • もう一つシングルエントリーのケースのタイトルタグは<h1>だったので、メインのタイトルとタグを同じにする為に<h3 class=”h1″>に変更。

またTheme変えてしまいました。
あと、Flickr Badgeもサイドバーに追加