オレポータビリテオレポータビリティィ
日本日本 RubyRuby の会の会青木 峰郎青木 峰郎
自己紹介 自己紹介 1/31/3
文系の大学生文系の大学生
専門は……哲学?専門は……哲学?
自己紹介 自己紹介 2/32/3
RubyRuby 関係者関係者標準添付ライブラリ標準添付ライブラリ メンテナメンテナ著書いろいろ著書いろいろ
自己紹介 自己紹介 3/33/3
著書著書 『ふつうの『ふつうの HaskellHaskell プログラミング』プログラミング』 『ふつうの『ふつうの LinuxLinux プログラミング』プログラミング』 『『 JavaJava を独習する前に読む本』を独習する前に読む本』 『『 RubyRuby ソースコード完全解説』ソースコード完全解説』 『『 RubyRuby レシピブック』レシピブック』 『『 RubyRuby をを 256256 倍使うための本 無道編』倍使うための本 無道編』
言語は言語はほぼ確実にほぼ確実にRubyRuby かか CC
./lib/bitchannel/syntax.rb:398:
[BUG] Segmentation fault
ruby 1.9.0 (2005-10-22) [x86_64-linux]
「開発環境」「開発環境」って何?って何?
自室(デスクトップ)自室(デスクトップ)
自室(キーボード)自室(キーボード)
部屋の様子(マシン)部屋の様子(マシン)
55 つのアーキテクチャつのアーキテクチャx86x86AMD64AMD64AlphaAlphaSPARCSPARCPOWERPOWER
77 つのつの OSOS
LinuxLinuxFreeBSDFreeBSDNetBSDNetBSD
Tru64UNIXTru64UNIXSolarisSolarisAIXAIXWindowsWindows
99 つのプラットフォームつのプラットフォーム Linux/x86Linux/x86 Linux/AlphaLinux/Alpha Linux/AMD64Linux/AMD64 FreeBSD/AlphaFreeBSD/Alpha NetBSD/AlphaNetBSD/Alpha
Tru64UNIX/Tru64UNIX/AlphaAlpha
Solaris/SPARCSolaris/SPARC AIX/POWERAIX/POWER Windows/x86Windows/x86
「こんなに「こんなにたくさんたくさんあってあってどうすんどうすんの?」の?」
ついでについでにRuby Ruby のテストものテストも
しているしている
前提:前提:マシン台数もマシン台数もプラットフォープラットフォームもムも多すぎる多すぎる
オレポータビリテオレポータビリティィ
俺俺(の)(の) portabiportabi
litylity
→ → オレポータビリテオレポータビリティィ が高い! が高い!
どんな環境でもどんな環境でも同じように開発でき同じように開発できるる
オレポータビリティオレポータビリティをを
高める戦略高める戦略
戦略(戦略( 11 ))必須ソフトウェア必須ソフトウェアをを限界まで削る限界まで削る
どこでも使えるどこでも使えるソフトウェアがソフトウェアがそもそも少ないそもそも少ない
たくさんソフトたくさんソフトウェアを使うとイウェアを使うとインストールがめんンストールがめん
どくさい!どくさい!
必ず使うソフトウェア必ず使うソフトウェアRuby Ruby CC コンパイラなどコンパイラなど zshzsh viviバージョン管理システムバージョン管理システム独自の開発ツール独自の開発ツール
使うもの使うもの(( 11 ))
RubRubyy開発版 + 安定版ぜん
ぶ
forall-ruby forall-ruby コマンコマンドド
システムに存在するシステムに存在する全バージョンの 全バージョンの rubyruby にに同じオプションを与えて実同じオプションを与えて実行行
使うもの(使うもの( 22 ))
CC コンパイラなコンパイラなどど
gcc, bison, flex, agcc, bison, flex, autoconf, make, utoconf, make, ……
使うもの(使うもの( 33 ))
zshzsh
使うもの(使うもの( 44 ))
vivi
複数ファイルを複数ファイルを編集するときは編集するときはジョブ制御でがんばジョブ制御でがんばるるCtrl-Z Ctrl-Z でサスペンでサスペンドドfg fg コマンドで復帰コマンドで復帰
使うもの(使うもの( 55 ))
バージョン管バージョン管理システム理システム
CVS か Subversion
使うもの(使うもの( 66 ))
独自の開発ツール独自の開発ツール ReFeReFe rdefsrdefs
ReFeReFe
RubyRuby のリファレンスマニュのリファレンスマニュアルをアルを検索するツール検索するツール
rdefsrdefs コマンコマンドド
ファイルに定義されているファイルに定義されているクラスやメソッドをクラスやメソッドを抜き出して表示する抜き出して表示する
独自ツールのポイント独自ツールのポイント
Ruby Ruby だけで書くだけで書くインストーラを付けるインストーラを付ける
戦略(2)戦略(2)カスタマイズしなカスタマイズしないい
いちいちいちいちカスタマイズカスタマイズしてられるか!してられるか!
カスタマイズしなくカスタマイズしなくてもても使う気になる使う気になるソフトウェアだけ使ソフトウェアだけ使う!う!
No configuration No configuration isis
Good Good configuration.configuration.
ノウハウをノウハウを作らないこと作らないこと
ががノウハウノウハウ
戦略(戦略( 33 ))ホームディレクトリのホームディレクトリの構造は全マシンで構造は全マシンで共通化する共通化する
各種設定を各種設定を減らすためにも減らすためにも
共通化が重要共通化が重要
Convention Convention over over
configuration.configuration.
UNIXUNIX のの /usr/usr を真似を真似るる
bin, etc, lib, bin, etc, lib, share, src, vshare, src, v
arar
自分で自分で作ったもの作ったものはは~/c ~/c に置くに置く
戦略(戦略( 44 ))徹底的に徹底的にバージョン管理バージョン管理
~/c ~/c 以下は 例外なく以下は 例外なくバージョン管理システバージョン管理システムムで管理するで管理する
戦略(戦略( 11 ))必須ソフトウェア必須ソフトウェアをを限界まで削る限界まで削る
戦略(戦略( 22 ))カスタマイズしカスタマイズしないない
戦略(戦略( 33 ))ホームディレクトホームディレクトリのリの構造は全マシンで構造は全マシンで共通化する共通化する
戦略(戦略( 44 ))徹底的に徹底的にバージョン管バージョン管理理
結論:結論:あたりまえのことあたりまえのことをを徹底的にやるのが徹底的にやるのがポイントポイント
ご静聴ご静聴ありがとうございまありがとうございま
したした