現在のソフト開発

これからは、読んでいった本たちを下記に記録することにした。
http://books.google.co.jp/books?uid=2470253315235477062

今週は、ソフトウェア入門‎という本を読んでみた。
内容的には、入門と言うよりは歴史的な観点が強いなと感じた。

#本日のブログには、ソフトウェアの用語がいっぱい出てきます。

この本の中にも触れられていたことだけども、現在のソフトウェアと言うのは、
完全にゼロから物を作るということは無い。
必ずと言っていいほど、ライブラリやクラスというものを利用して、開発する。

例えば、HTTP通信を行うネットワークプログラムを書いても、
ネットワークの通信部分は、APIを経由して行っている、HTTPプロトコルに
したがったり、TCP/IPのプロトコルを知ることなく開発が出来るのは、
ここが隠蔽化されているからである。

参照)APIとは 【Application Program Interface】 - 意味・解説 : IT用語辞典
    HTTPとは 【HyperText Transfer Protocol】 - 意味・解説 : IT用語辞典
    プロトコルとは 【protocol】 - 意味・解説 : IT用語辞典
    TCP/IPとは 【Transmission Control Protocol/Internet Protocol ...
    

この隠蔽化と言うのは、このように快活効率を上げてくれていて非常にいい部分もあるのであるが
逆に、この隠蔽かされた部分の中で不穏な動作をしたときには、非常にソフトウェア開発者として
困る時である。

例えば、ネット関連機器の調子が悪く瞬間的にコンセントの電気の供給がなくなり
瞬断した場合には、どのように動作するのだろうか?

例えば、通信の応答が返ってこないという場合には、どういう対応したらいいのか
と言うことを調べると結構時間がかかる。
通信のタイムアウト時間を設定するにはどうしたらいいのか??
こんなことで悩んだり調べたりする。

調べていくと、WinInetを利用している場合には、
InternetSetOption という関数でセットできることがわかるが、
このリンクを読んでいくとこのオプションはタイムアウト関連のものだけでも
下記のオプションがあることがわかる。

INTERNET_OPTION_CONNECT_TIMEOUT
INTERNET_OPTION_CONTROL_RECEIVE_TIMEOUT
INTERNET_OPTION_CONTROL_SEND_TIMEOUT
INTERNET_OPTION_DATA_RECEIVE_TIMEOUT
INTERNET_OPTION_DATA_SEND_TIMEOUT
INTERNET_OPTION_DISCONNECTED_TIMEOUT
INTERNET_OPTION_FROM_CACHE_TIMEOUT
INTERNET_OPTION_LISTEN_TIMEOUT
INTERNET_OPTION_RECEIVE_TIMEOUT
INTERNET_OPTION_SEND_TIMEOUT

そんで、これだけのものを調べていくのも一苦労...

とはいえ、ゼロベースで全部作るよりははるかに効率がいいんだけど、

これをきっかけに、「WindowsとLinuxはどちらが低コストか」という問題を思い出した。

「LinuxよりWindowsのほうが安上がり」:米調査レポート:ニュース ...

どちらが安いかはケースバイケースだけども、とりあえず、下記の指針が成り立つのではないか
と感じる。

・Linuxを奥深くまで利用する必要があるかどうか
 無い場合には、Linuxの方が安価である

と思う。

例えば、
・パソコンで、大手サイトのインターネットの記事を読んだり、
(基本的なオープンでかつ有名な技術しか利用していないようなサイトしか見ない)
・メールの送受信だけ
・エクセルやワードの基本的な機能しか利用していない

というような場合においては、Linuxの方が安価になると思います。

一方、Linux上に自社のシステムを導入したりするということになった場合には、
おそらく、いろいろな問題が出てきてものすごく時間がかかっててしまうのではないかと
感じる。
Windowsのドキュメントはやはりしっかりしているし、調査用のツールも
充実しているし、その他もいろいろネット上にも転がっているので、それだけでもだいぶラクです。

最近は、いろいろ奥深く知る必要が出てきたりして、このようなことを感じるのであります。

Google様の恩恵をものすごく受けており、とても助かっています。

0 件のコメント: