Upload
takuya-nishimoto
View
923
Download
1
Embed Size (px)
Citation preview
2000-12-01 京都研究会 1
プログラマの三大美徳について
西本卓也
京都工芸繊維大学 工芸学部 電子情報工学科 助手
http://www-vox.dj.kit.ac.jp/nishi/
2000-12-01 京都研究会 2
オープンソースとアクセシビリティ
• プログラマの三大美徳について考える
– 無精
– 短気
– 傲慢
• 出典: Programming Perl 改訂版
2000-12-01 京都研究会 3
美徳1 「無精」
• 手抜きをせずに楽をするためには?
– 仕事の質は落とさないで、時間や労力を短縮する
• 問題を解くのではなく、問題を解くための道具を作る
– プログラムを書きたくなる動機
• 問題そのものを解くのではなく、より一般化された問題を解く
• 解法=ソリューションを再利用する
• 誰かのソリューションを再利用する=オープンソース
2000-12-01 京都研究会 4
頭を使って時間と労力を節約する
• 6時間かかる単純作業があったとする
• Aさん:6時間かけてやる
– 頭を使うことを怠ると、時間がかかる
• Bさん:1時間かけてプログラムを書く→5分で実行する
– 頭を使うことにより、時間を節約する
• もちろん逆もあるので見極めが大切!!
– ようするにこれがセンス?? 知識と経験ですね
• そのプロセスを、知的快楽にしなくてはダメ!!プロダクトの時代からプロセスの時代へ
2000-12-01 京都研究会 5
技術者の「ブラックジャック」モデル
• 手塚治虫「ブラックジャック」の行動パターン
– 技術的にチャレンジングであれば、タダでも手術する
– つまらない外科手術には法外な値段をふっかける
– 類似例:「750ライダー」
• 知的快楽のない仕事を減らす生き方
• そもそも仕事とは楽しいものなのか?
• 利益にならなくてもやりたい仕事があるのか?
– 条件によっては Yes!!
– ではその条件は?
2000-12-01 京都研究会 6
「楽しさ」の認知的モデル
• チクセントミハイのフロー理論
• 「フロー体験 喜びの現象学」M.チクセントミハイ (今村浩明 訳) 世界思想社 1996
• カイヨワの遊びの理論を発展させ、独自の方法によって「楽しさ」を定義した
• 楽しさ=自己目的的な行為
• 流れているような感じ=フロー体験
• 心理的エントロピーを減らす→最適体験
2000-12-01 京都研究会 7
フロー体験モデル
• 挑戦と技能が均衡した状態 → 楽しさ– 技能が低いと不安
– 技能が高いと退屈
– 能力を必要とする挑戦的活動が必要
• フローをもたらす体験
– チェス,山登り,ダンス
– 仕事:外科手術
– ネットサーフィン
– BBS・チャット参加
– 音声認識
フロー
退屈
不安
無感動
挑戦
技能 high
high
2000-12-01 京都研究会 8
フロー体験の構成要素
• 課題を達成できる見通し
• 行為への意識の集中
• 明確な目標
• 直接的なフィードバックの感覚
• 深い没入状態
• 自分の行為を統制しているという感覚
• 自己と対象の融合(自己意識の消失)
• 時間経過の感覚の変化
2000-12-01 京都研究会 9
成功するオープンソースとは
• 課題を達成できる見通しがあること
• 明確な目標、直接的なフィードバックが得られること
– 役に立たない未完成のソースコード →×
– 複雑すぎていじれないソースコード →×
– もしも Mozilla が Netscape 4.x からスタートしてたら…• 美しい製品ビジョンと、理解しやすいソースコードは、
プログラマを感動させる
• オープンソースシステム=芸術作品である
– 作品それ自身が指揮棒、プログラマは演奏者
2000-12-01 京都研究会 10
プログラマにおける「無精」とは
• 仕事をしたくないのではない
• くだらない仕事をしたくない
• 憎むべきものは
– 不毛な事務処理・トラブル・もめごと
– 自分のやった仕事が無駄になること
– 門外漢に余計な口出しをされて邪魔されること
• 正しく分析し、正しく問題を解決することで、無精を貫く
• 理性的であればあるほどハッピーになれる
• 金をケチればケチるほどクリエイティブになれる
2000-12-01 京都研究会 11
無精さが育てたUNIX文化
• テキストファイルは万能である
– あらゆる情報が、すべて、使い慣れた1種類のスクリーンエディタによって編集/閲覧できる
• テキストファイルを加工する豊富なフィルター
– 過去に作られた「一般性のある解法」
• 「車輪を再発明しない」
• グルー(糊)になるソフトウェアの存在 (Perlなど)
• 唯一の欠点:データ構造が階層化すると破綻する→ 階層構造を持つテキストファイル= XML
2000-12-01 京都研究会 12
2000-12-01 京都研究会 13
テキストファイルの差分
古いファイル 新しいファイル
差分(diff)
古いファイル
マージ(patch)
新しいファイル
差分ファイル
2000-12-01 京都研究会 14
CVS=並行バージョンシステム
リポジトリ=貯蔵庫 作業ファイル作業ファイル
1.11.1+変更A
1.2
1.11.11.1+変更B
1.2+変更B
1.3
1.2
1.31.3
2000-12-01 京都研究会 15
インターネット、無精でいいのに。
• データ:二度と作り直したくない。使いまわしたい。
– テキスト情報・電子情報:いくらでも再利用できる
– Shockwave とか凝った画像とか、いらん。でしょ?
• プログラム:二度と書き直したくない
– Java なら「一度書けばどこでも動く」?ウソ。Java VM が変わればデバッグはやり直し。
– サーバでロジックを書いて、ブラウザはHTMLだけ。デバッグも1回ですむ → EJB / JSP
2000-12-01 京都研究会 16
美徳2 「短気」
• 大切だと感じたものはすぐに手に入れるか経験しないと、一晩か二晩で平凡なものに変質してしまう。
– 村上龍「ラブ&ポップ」
• プログラマは短気でなくてはいけない
– いますぐ作りはじめること。でなきゃいつやるの?
– 誰かにやらせないこと。自分以外に誰がやるの?
– 勤務時間だけ仕事するのはアホである
– 休日に休むより仕事をやっつける方が安心する
– プログラマは金を使う暇がないのが当たり前
2000-12-01 京都研究会 17
「短気」を支える開発環境
• ターンアラウンドタイムが短いこと
• 記述が簡潔であること
– Perl, Ruby, Java, Delphi, …• 開発環境を買わなくても、すぐ手に入ること
– フリーの開発環境はたくさんある。しかも高機能
– 使い方やノウハウもインターネットで見つかる
• あなたがプログラマになれないのは、「XXXXを買っていないから」「XXXXを読んでないから」ではなく、やる気がないからです。(語学と同じ)
2000-12-01 京都研究会 18
オープンソースとは?フリーソフトとは?
• 作者に修正を依頼するのが待てない
– さっさと自分で直したい
– ソースファイル公開や配布の許諾を得るのが面倒
– お金を払う手続きが面倒
• プログラマの「短気」を本当に満たすためには?→ GNU Public Licence こそが偉大なソフトウェア
• フリーソフトの本質は「自由なソフト」
• 自分一人で使えない/直せない奴は金を払え
• 技術のある人間がとことん安く速く活動できる世界
アクセシビリティ
2000-12-01 京都研究会 19
美徳3 「傲慢」
• とりあえず公開しよう = オープンマインド
• 大切な情報を保管する最良の方法は、あまねく広く配布することである
– 不完全だからといって隠さないこと
– かっこいい名前をつけること
• 自分が作ったもの、自分がほれ込んだものを売り込む
– ウェブでは、無精で短気な人も、傲慢になれる
• 「完璧にしよう」と思うな 自分で100%解いてはいけない
• ただし、バグフィックスにおいては「短気」であるべし!!
2000-12-01 京都研究会 20
何のために働くか?
• 食うためではなく、地位と名誉と快楽のために仕事をすること
• 「労働」 それをしなければいけないからやること。「仕事」 それをしたいと思ってすること。
• と思っている人が食えるようなビジネスモデルに期待