20
2000-12-01 京都研究会 1 プログラマの三大美徳について 西本卓也 京都工芸繊維大学 工芸学部 電子情報工学科 助手 http://www-vox.dj.kit.ac.jp/nishi/ [email protected]

opensource and accessibility (Dec2000) Part 2

Embed Size (px)

Citation preview

Page 1: opensource and accessibility (Dec2000) Part 2

2000-12-01 京都研究会 1

プログラマの三大美徳について

西本卓也

京都工芸繊維大学 工芸学部 電子情報工学科 助手

http://www-vox.dj.kit.ac.jp/nishi/

[email protected]

Page 2: opensource and accessibility (Dec2000) Part 2

2000-12-01 京都研究会 2

オープンソースとアクセシビリティ

• プログラマの三大美徳について考える

– 無精

– 短気

– 傲慢

• 出典: Programming Perl 改訂版

Page 3: opensource and accessibility (Dec2000) Part 2

2000-12-01 京都研究会 3

美徳1 「無精」

• 手抜きをせずに楽をするためには?

– 仕事の質は落とさないで、時間や労力を短縮する

• 問題を解くのではなく、問題を解くための道具を作る

– プログラムを書きたくなる動機

• 問題そのものを解くのではなく、より一般化された問題を解く

• 解法=ソリューションを再利用する

• 誰かのソリューションを再利用する=オープンソース

Page 4: opensource and accessibility (Dec2000) Part 2

2000-12-01 京都研究会 4

頭を使って時間と労力を節約する

• 6時間かかる単純作業があったとする

• Aさん:6時間かけてやる

– 頭を使うことを怠ると、時間がかかる

• Bさん:1時間かけてプログラムを書く→5分で実行する

– 頭を使うことにより、時間を節約する

• もちろん逆もあるので見極めが大切!!

– ようするにこれがセンス?? 知識と経験ですね

• そのプロセスを、知的快楽にしなくてはダメ!!プロダクトの時代からプロセスの時代へ

Page 5: opensource and accessibility (Dec2000) Part 2

2000-12-01 京都研究会 5

技術者の「ブラックジャック」モデル

• 手塚治虫「ブラックジャック」の行動パターン

– 技術的にチャレンジングであれば、タダでも手術する

– つまらない外科手術には法外な値段をふっかける

– 類似例:「750ライダー」

• 知的快楽のない仕事を減らす生き方

• そもそも仕事とは楽しいものなのか?

• 利益にならなくてもやりたい仕事があるのか?

– 条件によっては Yes!!

– ではその条件は?

Page 6: opensource and accessibility (Dec2000) Part 2

2000-12-01 京都研究会 6

「楽しさ」の認知的モデル

• チクセントミハイのフロー理論

• 「フロー体験 喜びの現象学」M.チクセントミハイ (今村浩明 訳) 世界思想社 1996

• カイヨワの遊びの理論を発展させ、独自の方法によって「楽しさ」を定義した

• 楽しさ=自己目的的な行為

• 流れているような感じ=フロー体験

• 心理的エントロピーを減らす→最適体験

Page 7: opensource and accessibility (Dec2000) Part 2

2000-12-01 京都研究会 7

フロー体験モデル

• 挑戦と技能が均衡した状態 → 楽しさ– 技能が低いと不安

– 技能が高いと退屈

– 能力を必要とする挑戦的活動が必要

• フローをもたらす体験

– チェス,山登り,ダンス

– 仕事:外科手術

– ネットサーフィン

– BBS・チャット参加

– 音声認識

フロー

退屈

不安

無感動

挑戦

技能 high

high

Page 8: opensource and accessibility (Dec2000) Part 2

2000-12-01 京都研究会 8

フロー体験の構成要素

• 課題を達成できる見通し

• 行為への意識の集中

• 明確な目標

• 直接的なフィードバックの感覚

• 深い没入状態

• 自分の行為を統制しているという感覚

• 自己と対象の融合(自己意識の消失)

• 時間経過の感覚の変化

Page 9: opensource and accessibility (Dec2000) Part 2

2000-12-01 京都研究会 9

成功するオープンソースとは

• 課題を達成できる見通しがあること

• 明確な目標、直接的なフィードバックが得られること

– 役に立たない未完成のソースコード →×

– 複雑すぎていじれないソースコード →×

– もしも Mozilla が Netscape 4.x からスタートしてたら…• 美しい製品ビジョンと、理解しやすいソースコードは、

プログラマを感動させる

• オープンソースシステム=芸術作品である

– 作品それ自身が指揮棒、プログラマは演奏者

Page 10: opensource and accessibility (Dec2000) Part 2

2000-12-01 京都研究会 10

プログラマにおける「無精」とは

• 仕事をしたくないのではない

• くだらない仕事をしたくない

• 憎むべきものは

– 不毛な事務処理・トラブル・もめごと

– 自分のやった仕事が無駄になること

– 門外漢に余計な口出しをされて邪魔されること

• 正しく分析し、正しく問題を解決することで、無精を貫く

• 理性的であればあるほどハッピーになれる

• 金をケチればケチるほどクリエイティブになれる

Page 11: opensource and accessibility (Dec2000) Part 2

2000-12-01 京都研究会 11

無精さが育てたUNIX文化

• テキストファイルは万能である

– あらゆる情報が、すべて、使い慣れた1種類のスクリーンエディタによって編集/閲覧できる

• テキストファイルを加工する豊富なフィルター

– 過去に作られた「一般性のある解法」

• 「車輪を再発明しない」

• グルー(糊)になるソフトウェアの存在 (Perlなど)

• 唯一の欠点:データ構造が階層化すると破綻する→ 階層構造を持つテキストファイル= XML

Page 12: opensource and accessibility (Dec2000) Part 2

2000-12-01 京都研究会 12

Page 13: opensource and accessibility (Dec2000) Part 2

2000-12-01 京都研究会 13

テキストファイルの差分

古いファイル 新しいファイル

差分(diff)

古いファイル

マージ(patch)

新しいファイル

差分ファイル

Page 14: opensource and accessibility (Dec2000) Part 2

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

Page 15: opensource and accessibility (Dec2000) Part 2

2000-12-01 京都研究会 15

インターネット、無精でいいのに。

• データ:二度と作り直したくない。使いまわしたい。

– テキスト情報・電子情報:いくらでも再利用できる

– Shockwave とか凝った画像とか、いらん。でしょ?

• プログラム:二度と書き直したくない

– Java なら「一度書けばどこでも動く」?ウソ。Java VM が変わればデバッグはやり直し。

– サーバでロジックを書いて、ブラウザはHTMLだけ。デバッグも1回ですむ → EJB / JSP

Page 16: opensource and accessibility (Dec2000) Part 2

2000-12-01 京都研究会 16

美徳2 「短気」

• 大切だと感じたものはすぐに手に入れるか経験しないと、一晩か二晩で平凡なものに変質してしまう。

– 村上龍「ラブ&ポップ」

• プログラマは短気でなくてはいけない

– いますぐ作りはじめること。でなきゃいつやるの?

– 誰かにやらせないこと。自分以外に誰がやるの?

– 勤務時間だけ仕事するのはアホである

– 休日に休むより仕事をやっつける方が安心する

– プログラマは金を使う暇がないのが当たり前

Page 17: opensource and accessibility (Dec2000) Part 2

2000-12-01 京都研究会 17

「短気」を支える開発環境

• ターンアラウンドタイムが短いこと

• 記述が簡潔であること

– Perl, Ruby, Java, Delphi, …• 開発環境を買わなくても、すぐ手に入ること

– フリーの開発環境はたくさんある。しかも高機能

– 使い方やノウハウもインターネットで見つかる

• あなたがプログラマになれないのは、「XXXXを買っていないから」「XXXXを読んでないから」ではなく、やる気がないからです。(語学と同じ)

Page 18: opensource and accessibility (Dec2000) Part 2

2000-12-01 京都研究会 18

オープンソースとは?フリーソフトとは?

• 作者に修正を依頼するのが待てない

– さっさと自分で直したい

– ソースファイル公開や配布の許諾を得るのが面倒

– お金を払う手続きが面倒

• プログラマの「短気」を本当に満たすためには?→ GNU Public Licence こそが偉大なソフトウェア

• フリーソフトの本質は「自由なソフト」

• 自分一人で使えない/直せない奴は金を払え

• 技術のある人間がとことん安く速く活動できる世界

アクセシビリティ

Page 19: opensource and accessibility (Dec2000) Part 2

2000-12-01 京都研究会 19

美徳3 「傲慢」

• とりあえず公開しよう = オープンマインド

• 大切な情報を保管する最良の方法は、あまねく広く配布することである

– 不完全だからといって隠さないこと

– かっこいい名前をつけること

• 自分が作ったもの、自分がほれ込んだものを売り込む

– ウェブでは、無精で短気な人も、傲慢になれる

• 「完璧にしよう」と思うな 自分で100%解いてはいけない

• ただし、バグフィックスにおいては「短気」であるべし!!

Page 20: opensource and accessibility (Dec2000) Part 2

2000-12-01 京都研究会 20

何のために働くか?

• 食うためではなく、地位と名誉と快楽のために仕事をすること

• 「労働」 それをしなければいけないからやること。「仕事」 それをしたいと思ってすること。

• と思っている人が食えるようなビジネスモデルに期待