Home > 技術全般 Archive
技術全般 Archive
SIerの技術力とイノベーションのジレンマ
- 2007-04-17 (火)
- 技術全般
F’s Garage:rubyとかPHPとかPerlとか。
void GraphicWizardsLair( void ); // AmazonはSIerな方面もWeb2.0も強いのに、なぜかSIer分野はblog界隈で注目されないよね
を読んで、話がずれてきているかもしれないけど最近良く思うことを書いてみる。
確かにSIer方面な技術って表に出てこないなー。
それどころか、そもそも技術が無いと思われてたり、職業プログラマは趣味プログラマに負けてるといった話も出てくるし。
話が出てこないのは、NDAの問題とかオープンにして行く気がないという意識の問題とかも確かにある。
それに加えてSIerの技術の真価は裏側の仕組みで、触れる機会そのものも一般的には少ないからっていうのもあるんじゃないかな。
例えば、ミッションクリティカルなシステムのそれなりに大規模のシステムのインフラを構築するとか、安全に運用をまわすノウハウとか、そういった技術はSIerは強いと思う。(もちろんWeb2.0といわれる企業でも、一部の大手はSIer以上に裏側にそういうのに長けた人たちがいるはずだけど)
複雑な業務フローを分析してシステムのグランドデザインをできる人も確かにいる。
こういう技術は比較的小さなシステムを相手に仕事している人や趣味プログラマが触れることは少ないし、動くものを見て「すげー」という機会も少ない。
つまり、話題にしにくい上に関係の深い人も少ないし、派手さが無くって面白くない。
そして、SIerの中の人はみんなそういったものに触れるかというと、そんなことは無い。
特にフロントエンドのアプリケーション開発をしている「SE」と呼ばれる人は、期限通りに要求されたものを作る管理技術は学ぶけど要素技術はそれほどできなくても仕事はできることが意外と多い。
また、プロジェクト規模が大きくなればなるほど歯車として動くようになるので、システム全体を把握できなくて偏った知識になってしまうこともある。
そうなると、Webに公開するプログラムを作ったり、レンタルサーバーを借りて設定したりといった技術はそのへんの趣味プログラマに負けてしまう。
この辺の話が誇張されながら広まるので、SIer(or 職業プログラマ)の技術力に疑問符がつくのだと思う。
ただ、そのアプリケーション開発の進め方のせいで、設計がまずいものができたり、要件を柔軟に変更できなくなったり、細かい話もすぐに契約・スケジュール・お金の話になったり、というのがあるのは確か。
そして、チープな開発が徐々にSIerの足元に迫っている気がする。
でも、今の仕事のやり方でお金が儲かっていて、Web2.0的なチープな開発に切り替えられず、今ある技術を武器にしてミッションクリティカルな大規模開発にばかり目が行ってしまう・・・、というのがSIerのイノベーションのジレンマなんだよな。
- Comments: 0
- Trackbacks: 0
画面遷移なしでファイルアップロードする方法
- 2007-04-17 (火)
- 技術全般
画面遷移をせずに画像ファイルをアップロードさせたいと思った。
で、普通にAjaxでできるだろうと思ってコードを書き始めてハッと気付いた。
multipartで送るためにファイルを読もうとしても、Javascriptからじゃローカルのファイル読めないじゃん。(当たり前ですが、セキュリティのためにできなくなっています)
ということで以下のサイトにあるようにiframeを使う方法で実装した。
Rubyist - yamazのRails日記 - Ajaxっぽく画面遷移なしでファイルアップロードしたい! Railsで画面遷移なしでファイルアップロードを行うから引用
formタグにはtarget属性というのがあって,リクエストを処理するブラウザのウインドウ名が指定できます.
Aタグのtarget="_new"とかで新しいウィンドウを開くみたいなノリだ.
またそのターゲットはname指定されたiframeでもOKなので,iframe内で処理をすることによって遷移なしのファイルアップロードが実現できている.
今回の例では'frame'というname属性をもったダミーIframeタグを準備しているので,これがブラウザ上で見えて嫌な人はstyle="display:none;"などで隠すとよい.
RoRの話だとちょっと分かりにくい(単純に知らないともいう)ところがあったので、PHPで簡単なサンプルを作ってみた。
画像をアップロードすると、phpファイルが置かれているのと同じディレクトリに画像を保存して、フォームの下に画像が表示される(はず)。
※画像やファイル名のチェック、エラー処理などは全く考慮してないので注意!
upload_test.html
⇒ iframeのstyle=display:none;について注意が必要、追記参照
-
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
<html xmlns="http://www.w3.org/1999/xhtml">
-
<head>
-
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-
<title>画面遷移なしでファイル(画像)アップロード</title>
-
</head>
-
<body>
-
<form action="./upload.php" method="post" enctype="multipart/form-data" target="upload_frame">
-
<input type="hidden" name="max_file_size" value="1000000" />
-
<input type="file" name="upload_image" />
-
<input type="submit" value="画像アップロード" />
-
</form>
-
<div id="container"></div>
-
<iframe name="upload_frame" style="display:none;"></iframe>
-
</body>
-
</html>
upload.php
-
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
<html xmlns="http://www.w3.org/1999/xhtml">
-
<head>
-
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-
<title>画像アップロード(iframe内)</title>
-
</head>
-
<body>
-
<?php
-
$upload_dir = './';
-
$filename = $_FILES['upload_image']['name'];
-
move_uploaded_file($_FILES['upload_image']['tmp_name'], $upload_dir.$filename);
-
?>
-
<script type="text/javascript"><!--
-
var container = parent.document.getElementById('container');
-
image = parent.document.createElement('img');
-
image.src = './<?php print($filename);?>';
-
container.appendChild(image);
-
//--></script>
-
</body>
-
</html>
ちなみにimgタグをcreateElementする際にparentを付け忘れると、Firefoxでは動くがIEでは動かないので注意。
(ちゃんと実装するときは親側に関数を用意してキックするほうがよいと思う)
これでファイルアップロードの時も、もう少しjavascriptをごにょごにょするといろんなことができそう。
※追記 2007/04/17 15:20
アップした直後によくまとまったサイトを見つけた。
画面遷移なしでファイルアップロードする方法 と Safariの注意点 (groundwalker.com)
どうやらSafariだとiframeのstyleにdisplay:none;を指定してはダメらしい。
iframe の style に display:none; を指定するサンプルコードを見かけるが Safari の場合 display:none; だとファイルアップロードのスクリプトが新しいウインドウで走ってしまうので注意。
気をつけなければ。
※追記 2007/07/18
このままでは、自分でアプリケーションを作ったときに上手く使えなかったので補足エントリーを書いた。
補足 画面遷移なしでファイルアップロードする方法
この方法は、画像をアップロードした瞬間に即座にデータを確定するときにはそのまま使えるが、画像とコメントなどを同時に編集して、次の画面でデータ確認やデータ登録完了させようとすると問題がある。
戻る対応をしていないので、確認画面や完了画面から戻るボタンで戻ると、アップロードした画像が消えてしまうから。
- Comments: 0
- Trackbacks: 0
いままでの技術的な遍歴 最近の話
- 2007-04-05 (木)
- 技術全般
引き続きその後の遍歴をまとめておく。
2005年に、せっかくネットの企画部門に来てるんだからブログをやってみよう。
一応技術の分かる人としてきてるんだから、レンタルサーバー借りてMovableTypeインストールしてみよう。
独自ドメインも取ってみよう。
なんか面白くなってきたからカスタマイズしてみよう。
php化するといいらしい。
XHTMLとCSS、面白い。
という感じでブログを立ち上げた。
ダイエットやトレーニングの話を、SEOも気にしながら更新していた。
最初は個人で情報を出してアクセスが来るという感覚は全く分からなかったけど、1日に100人以上のアクセスになってくると面白くなってきた。
ネタ切れ気味なこともあり、6ヶ月程度で更新が止まったままになっちゃったけど、ここでネットの楽しさ+自分で作る楽しさを再認識した。
(ちなみに最近でもGoogle Analysticsで見ると日に70人前後来ているようで、結構驚きです)
この辺がかなり転機になったかなーと思う。
普通にSEとかプログラマーとかいう職業だとしても、自分でサーバーを借りたり、自宅に立てたり、何かを作って公開したり、という人は少数派のはず。
それがやってみると、自分でサーバーを借りて何か作って公開するという敷居がこんなにも低いのかとすごい驚いた記憶がある。
プロマネがどうとか、インフラ担当がどうとか、上流工程がどうとか言う間に普通に動くものが公開できちゃう。もちろん規模が小さいからできることもあるけど、楽しみながら勉強にもなる。
これじゃー(意識の低い)職業プログラマは趣味プログラマに技術的に負けて当然ですよ。私も含めてだけど。
その後、PHPでちょっとしたものを作ってみたり、オブジェクト指向っぽい開発をしてみたり、Javascriptで遊んだりした。
次はPHPだけじゃ物足りなくなってきて、Pythonを触ってみたりMochiKitを触ってみたりしています。
フレームワークはDjangoとか。
ここで Ruby on Rails とか Prototype.js って言わないところがひねくれてる気もしますが、良しとしましょう。
これから色々勉強した話とか感じたこととか悩んでる話とかアップしながら、考え方も文章も技術もレベルアップしていきたいなーと思う。
- Comments: 0
- Trackbacks: 0
いままでの技術的な履歴 社会人編
- 2007-04-04 (水)
- 技術全般
会社に入ってからは、結果的には逸注した案件の提案などに関わった後、ちょっとした在庫管理システムなんかを作った。画面はExcelVBA+Oracle。バッチはPL/SQL。
関連会社が作ったのがダメダメで、学生時代のVB経験を活かして画面系はほとんど作り直した。
それからWebっぽい仕組みなんかもちょっとしたシステムを作って、HTMLを覚えた。
Oracle Application Serverなるものがあって、PL/SQLでWebシステムを作るという今ではあまり見られなくなったこともやった。
本格的にWebシステムを作り始めたのが2年目の後半から。
勉強しながら全体アーキテクチャーを検討したり、開発標準を作ったり、いろんなことをした。
技術的にはC言語のCGI+Oracleだった。
Javaを動かすためののアプリケーションサーバーは、値段も高く、まだまだ不安定だという結論だった気がする。
プロジェクトもそこそこの規模だったので、マネジメントも勉強した。
Apache、Oracle、負荷分散、チューニング、DBのコネクションプーリング、いろいろなことをそこで学んだ。
でもそのころに思っていたのが、「やっぱり上流工程とかマネジメントだよ、技術は基本だけ抑えてればいい」だった。
それからは、プロジェクトの中でいろいろ仕事したり、お客様の支援でRFPを作ったり、開発チームのリーダーをしたり・・・。
そして転機が訪れたのが3年前。
なんとお客様の企画部門に常駐して、ビジネスから一緒に作るというコンサルちっくな仕事をしだした。
Webのビジネスを検討して素早く立ち上げたいが、企画側にシステム知見がないので困る局面が増えているから・・・というのが私が企画部門のお手伝いを始めた理由だった。
(システム部門は現行のシステムを立ち上げたりお守りしたりするので手一杯だった)
そしてそれからの話が、このブログの最初のエントリーというわけである。
これからは取りとめも無い話を進めますが、あとで自分で振り返るためにも今までの遍歴と今の考え方などをまとめておきました。
- Comments: 0
- Trackbacks: 0
いままでの技術的な履歴 学生時代編
- 2007-04-02 (月)
- 技術全般
一応、今までの履歴をまとめておこうかな。
いわゆる優秀な「ナナロク」世代が、マイコンだとかベーシックだとかそういうのからITの世界に入ったというのを聞くとちょっとうらやましい。
というのも、大学に入るまでに触ったことがあるのはゲーム機とワープロ専用機(懐かしい!)だけ。
大学に入ってから初めてコンピューターの世界を知った。
Sunのワークステーションを使って、Pascalの授業もあった。
今思えば、条件分岐とかループとかの概念、本当に単純なUnixコマンドはそこで覚えたし、それなりに「ふーん、面白いな」と思ったこともあった。
とはいってもやっぱりやる気の無かった当時の自分には苦痛で苦痛で・・・。
なんといってもはなから自分で作るのはあきらめていて、人の書いたソースを丸写ししてるだけなのに動かない。
当然(?)人差し指しか使わない劇遅タイピングなのに加え、「0」と「O」とか、「1」と「l」とかをtypoしていると全く発見できなかった。
今思うとよっぽど頭を使ってなかったんだな。0とOなんて意味が違うんだから普通間違わねーよ!
そこで情報科の先輩から教えてもらって覚えた最大の必殺技は、他の人のファイルを自分にコピーしてくるというひどいものだった。
そんな状態だったのに、4年になって卒論を書かなきゃというときに自分でプログラムを書く必要に迫られてしまった。
やらないと卒業できないのでやるしかない。
とあるアルゴリズムを改良して、計算速度がどれくらい向上するかというのが研究テーマだった。
なのにそこで選んだ言語はVisualBasic。
理由は簡単そうだから。
しかしそこで奇跡が・・・というほどのことも無いんだけど、いろいろ考えて実装していると「こりゃなんか楽しいぞ」となってきた。
徹夜で実装したり、夜中に非力なPCを走らせておいたら次の日にはOSがハングしていて泣きそうになったり・・・そういうのも楽しく感じていた。
結果的にたいしたアルゴリズムは作れなかったけど、なんとか卒業もできた。
それからSIerに就職して今に至るんだけど、就職してからの履歴はまた次のエントリーで。
- Comments: 0
- Trackbacks: 0
Home > 技術全般 Archive
- Search
- Feeds
- Meta