June 04, 2007
MovaTwitterなどのアプリケーションは技術と言えるのか。
最近、Rubyの勉強が進まないのは何故だ?
などということについて考えてみた。
きっかけは、twitterでのやりとり。
僕:何かの技術に一心不乱にコミットしたいなぁ。 [モバツイ]
Sさん:@fshin2000 技術、定義してみていただけませんか?
僕:どんな技術か?ってこと?そうでなくて、僕が考えろってのなら、結構それは目から鱗 [モバツイ]
僕:確かに世の中の文脈でしかものを考えてないかもという気がしてきた。 [モバツイ]
Sさん:@fshin2000 「 何かの技術に一心不乱にコミットしたいなぁ。」っていったときの「技術」ってどんな意味なんだろう、ってことです。どんな「技術」ではなくて、何かのっていったときにどこできるのかな?ってかんじ。。。
Sさん:@fshin2000 なにかの言語をきわめたいなーとかいわれたら、それはわりと範囲がいめーじしやすいのですが、「技術」っていう単位はどこなのか、最近なやんでいてそれでたずねてみたわけです
僕:一昨日のレスですが「何かを実現するための方法」が技術かと。アプリは技術の実装。 [モバツイ]
Sさん:@fshin2000 なるほどー「何かを実現するための方法」に一心不乱にコミットしたいってことですね。具体的にいうと、言語をつくるとか、そういうことなんでしょうか?
僕:言語もあるし配信技術とかもありですよね。twitterのメッセージ ルーティング技術みたいな比較的高いレイヤーが性にあってるかも。 [モバツイ@macbook]
モバツイに@fshin2000で返事を書いてくれた人の発言を抽出する機能をつけたので、今までスルーしていたお返事メッセージを取りこぼしにくくなりました。(本家ってほとんどアクセスしないもので。)
さて本題。「技術」をwikipediaで調べてみる。
技と術
技と術(すべ・じゅつ)は人の能力・機能・動きを表す概念である。技は特定の目的を持ち、その目的を果たすための手段・手法であるが、これを体系的にまとめたものを術という。
日本語の技術とは文脈によってエンジニアリング(編み出す技術)、テクノロジー(編み出された技術)、スキル(技法と技能)のどれかひとつをさすこともあれば、いずれか二つの意味を持つ場合や、さらには、それらが一体となった意味としても使用されることもある。
インターネットに照らし合わせると、こんな感じか。
■テクノロジー
・OS、プログラミング言語やフレームワークなどの成果物
・各種プロトコル (そういえばプロトコルの本あったね。)
・ルーティング
・配信手法
・自然言語処理
・画像認識、音声認識
・ウイルス検索、スパムメール処理
・オブジェクト指向
・ユーザーインターフェースのデザインパターン
■エンジニアリング
・プログラミングスキル
・ライブラリ知識
・Linuxなどのオペレーションスキル
・フレームワークを作る活動に必要なスキル
・オブジェクト指向プログラミング
・アジャイル開発
・要件定義、プロジェクトマネジメント
・設計(ユーザーインターフェース、アーキテクチャ、ビジネスルール)
そう、「Rubyを勉強する」という文脈の活動がなかなか進まないのは、僕自身が、その先にテクノロジー目標を見いだせていないからだ。
つまり、それを勉強して何に生かせるか?が見えていないから。
また、仕事でコミットする場合は、エンジニアリングプロセスとして言語を学ぶことが正当化されるので、ものすごい勢いでがんばれる。
僕自身が言語を作りたい、とか、プラグインシステムを作りたい、とか、バッチシステムを極めたいとか、動画フォーマットについて云々とか、そういう具体的な目標を持たないといけないな。
テクノロジーとしての技術とは、それそのものが「特許に出せるのか?」という文脈で考えるとわかりやすいかも。
冒頭のモバツイッターは技術なのか?ここで書いた話としては、アプリケーション自体は技術とは言わない。
アプリケーションが解決するための手法に、テクノロジーが中核に存在する、と考える。
しかし、Webアプリケーションの中核技術とはHTTPプロトコルの実装であるphpやapacheであって、ほとんどのWebアプリは、それの派生モデルに過ぎない。
しかしモノを作るプロセスが、エンジニアリングという技術に含まれる。
乱暴だけど、そんなところ。