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