POSIX原理主義 ― どこでも動く、20年動く、コピー一発デプロイ完了、なプログラムを産む理想郷への誘い
もしあなたが「これは是非YAPCで見たい!」と思ったら、ソーシャルメディアボタンを押して応援してみてください。選考の際に参考にさせていただきます
Tweetトーク概要
■デプロイやその後の保守に苦しむプログラマー・運用管理者へ
プログラム書いたけど、デプロイ(インストール)で躓いて半日ムダにしたとか、依存している言語やライブラリーのバージョンアップをしたら動かなくなって2,3日死にそうになった、などの痛い目に散々遭ってきた人々を救済する理想郷、
その名は「POSIX原理主義」。
この主義に改宗すれば、誰しも、
- どのUNIXマシンに持っていっても動く(空間からの解放)
- 10年、20年の長期に渡り、メンテナンスフリーで動く(時代からの解放)
- デプロイは、コピー一発、えっ終わり!?
という、今ドキの業界からするととても信じられない恩恵を享受できる。特に最初の2つを指して「時空を超えた可搬性」と呼ぶ。
■POSIX原理主義とは何か?
> POSIX(IEEE Std 1003.1)という規格に明記されているコマンドや仕様のみを用いてプログラムを書くという主義である。
この主義を実践するとなぜそんな理想郷が構築できるのか?
特徴1. POSIXには1ベンダー・団体の気まぐれが入り込めない
POSIXはもともと、多くの系譜に分派していた各UNIX系OSからなるべく共通している仕様を抜き出してまとめたものである。そして「(UNIXというOSに対する共通認識を維持する為)皆でこの仕様を守ろう」という性格が強い。ゆえに1つの団体やベンダーの思惑によりコロコロ仕様を変えることができず、非常にゆっくりとした進化をする。
すると、
- どのベンダー・団体のOSも、POSIXに書かれている仕様だけは必ず守ろうとする。→場所的可搬性 →OS引っ越しコワくない
- バージョンアップしても、POSIXに書かれている仕様だけは必ず守ろうとする。→時代的可搬性 →バージョンアップコワくない
という特徴が生まれる。
特徴2. 言語はBourneシェルスクリプトに固定される
POSIXに明記してある仕様だけを使おうとすると、言語の選択肢は自然にCかシェルスクリプトくらいしかなくなる(あれ、Perlは?)。Cには高速性という利点があるが、LLと呼ばれる各種言語が持つ手軽さが無い。それにsedやAWK等、POSIXにある既存コマンドを使いこなせばそこそこの速さは確保できる。なにせそれらはC言語で作られているのだから。(ねぇ、Perlは?)
LL言語にはコンパイル不要という大きな利点があり、しかもBourneシェルスクリプトならどのUNIXにも最初から必ず入っているので言語のコンパイルすら不要である。そのため、「コピー一発デプロイ完了」が実現できるのである。
■でも、POSIXの範囲じゃ何もできないでしょ?
いや、できる!
例えば、乱数発生、アドバイザリーロック、時間計算、RDB的データ管理、CGI、Cookie、セッション管理、CSV&JSON&XMLパーサーなど、およそ必要そうなものは自力で作った。チューリングマシンの要件を満たせるんだから理論的に出来るはず。その術を当日は時間の許す限り紹介しよう。
POSIX原理主義を実践して作ったアプリもあるぞ
できないのは、通信関係くらいで、Web API叩きやメール送信はPOSIX外のコマンド(curlやsendmail)に頼る。
ほら、できないことあるじゃん!
そこは原理と実利のトレードオフ。何が大事かといえば 弱点をしっかり認識し、その弱点を、手が負えるくらいに囲い込んでしっかり守ること。
Perlでだって、POSIX原理主義的思想は実践できる。要は 新機能に安易に手を出さず、長きにわたって使えた(使えそうな)文法・関数・モジュールのみで組むこと を心掛けるのである。
「便利だから」と、ハヤりものに飛びつくと、後々痛い目を見ることになる。
トーク詳細
会場 | TBD |
---|---|
開始時間 | TBD |
カテゴリ | その他 |
言語 | 日本語 |
同時通訳 | NO |
スライド字幕 | 日本語 |
時間 | 30 分 |
想定観客層 | レギュラー |
写真撮影 | 有り |
録画配信 | 有り |