2013年4月30日火曜日

集約(オブジェクト指向設計)


●ITヒント40 ‐ 複合
単純構造を複合構造に変更してみる

: 集約(オブジェクト指向設計)
 他のクラスを用いてクラスを定義する「継承」でクラスを設計するとプログラムのサイズが増えたり、大きなシステムを理解したり維持したりしにくくなりかねない。
 「継承」ではなく「集約」を使用します。「集約」とは、クラスの全体的または部分的な構成であり、集約クラスは1つ以上のクラスを含みますが、そのクラスのオブジェクトを生成しなくても定義できます。継承オブジェクトが他のオブジェクトの実体を抱え込んでしまうのに対し、集約オブジェクトはそれらの特性を取り込むだけです。
「継承」ではなく「集約」を使用することによって
プログラムサイズが抑えられ、大きなシステムの理解や維持を容易化


出典: TRIZ Technology for Innovation ( http://www.trizsolution.com )

2013年4月29日月曜日

DMZ(Demilitarized Zone)


ITヒント39 ‐ 不活性環境
通常の環境を不活性な環境に置き換えてみる
好ましくない作用をもたらさないものを使用してみる

: DMZDemilitarized Zone、軍事境界線
 通常、メール、WWW、DNSサービスなどインターネットに対して組織のネットワークリソースを一部開放する必要があるが、これにより、内部ネットワークが侵入攻撃されやすくなりかねない。
 インターネットアクセスに大して開放するリソースやサービス用のDMZDemilitarized Zone、軍事境界線を設けます。DMZへは、内部ネットワークとインターネットの何れからも接続できますが、DMZからは、外部ネットワークにしか接続できないので、たとえDMZ内のホストに障害が起きたとしても内部ネットワークは保護されます。
DMZ(Demilitarized Zone、軍事境界線)により
内部ネットワークのユーザはインターネットのリソースに安全にアクセス可能


出典: TRIZ Technology for Innovation ( http://www.trizsolution.com )

2013年4月28日日曜日

ソフトウェアエージェント


●ITヒント38 ‐ 活性化
・より集約的に作用するものを使用してみる

: ソフトウェアエージェント
 オンラインストアで探す場合、関心のあるジャンルに多様な製品が存在すると、助言無しに選ぶのが難しくなってしまう。
 他のカスタマーの意見や評価をもとに最良の製品を勧めるソフトウェアエージェントを用意します。
何千にもおよぶ推奨製品のデータベースを擁するソフトウェアエージェント
カスタマーのニーズに合った入手可能な最善製品の選択購入を支援


出典: TRIZ Technology for Innovation ( http://www.trizsolution.com )

2013年4月27日土曜日

ユーザインタフェース適応ソフトウェア


●ITヒント37 ‐ オンデマンド展開
リソースをオンデマンドで展開してみる
すでにオンデマンドで展開している場合には、要素ごとに異なるレベルで展開してみる

: ユーザインタフェース適応ソフトウェア
 複雑なソフトウェアアプリケーションに対する知識や経験の違いによって、同じプログラムから得られる結果がユーザごとに異なりかねない。
 ユーザ行動を観察し、要求がより満たされるようにアプリケーションの動きを合わせます。初めにユーザに問合せて得られたユーザプロフィールに適するようにシステムを変更してユーザインタフェースを合わせることもできます。
アナライザーを用いてアプリケーションの動きをユーザ要求に適応


出典: TRIZ Technology for Innovation ( http://www.trizsolution.com )

2013年4月26日金曜日

データ圧縮


●ITヒント36 ‐ データ構造変換
データ量の変化など、データ構造変換の際に生じる現象を利用してみる

: LOBフィールド内のデータ圧縮
 データベース管理システムでは、構造化されていないバイナリデータおよびテキストデータの格納にLOB(Large Object、ラージオブジェクト) フィールドが広く用いられているが、データベースサーバ上でかなりのストレージリソースを必要としてしまう。
 データベース管理システム内のLOBフィールドに対してサーバ側でデータ圧縮を行います。データ圧縮のための機能が組み込まれているデータベース管理システムもありますが、LOBフィールドに対する自前の圧縮機能のないデータベース管理システムであってもデータ圧縮を実装することが可能です。
データベース管理システム内のLOB(ラージオブジェクト)フィールドに対する
サーバ側でのデータ圧縮により
データベースサーバ上でリソースの格納に必要な領域を低減


出典: TRIZ Technology for Innovation ( http://www.trizsolution.com )

2013年4月25日木曜日

可変ビットレート


●ITヒント35 ‐ パラメータ変更
静的、動的などの状態を変えてみる
データ形式を変えてみる
柔軟性を変えてみる

: 音声・映像ファイルの可変ビットレート
 固定ビットレートでコード化された音声・映像ファイルでビットレートを上げることによって再生品質を高められるが、低ビットレート時よりも多くの格納スペースが必要となってしまう。
 音声・映像フレームを可変ビットレートでコード化すれば、高ダイナミックス部分には多くのビット、低ダイナミックス部分には少ないビットを使用するので、再生品質を高め、格納スペースを抑えられます。
音声・映像フレームのコード化における可変ビットレートが
高低ダイナミックスのレベルと調和


出典: TRIZ Technology for Innovation ( http://www.trizsolution.com )

2013年4月24日水曜日

連結リスト


ITヒント34 ‐ 排除・再生破棄・リカバリー
用済み品を取り去ったり、操作中に直接変えたりしてみる
 消耗品を操作中に直接補充してみる

: データ構造(連結リスト)
 多数の要素を記憶するのに使用されるメモリ配列は、一度にまとめて割り当てるのに時間がかかったり、割り当て時点では要素数が決まっていなかったり、物理メモリを連続ブロックとして割り当てられなかったりして問題を引き起こしかねない。
 要素ごとに個別のメモリブロックを割り当てる連結リストを利用します。このようなメモリブロックは連結リスト要素あるいはノードと呼ばれ、これらを鎖のようにポインタでつなぐことによってリストが形成されます。各ノードには2つのフィールドがあり、データフィールドには要素の内容、「次ノード」フィールドにはリスト内の次のノードへのポインタが格納されています。
連結リストは、メモリ配列の各要素に対して個別のノード(メモリブロック)を割り当てる形のデータ構造


出典: TRIZ Technology for Innovation ( http://www.trizsolution.com )

2013年4月23日火曜日

データ位置合わせ


●ITヒント33 ‐ 均一性
・作用するものに対して同じ構造を用いてみる

: データ位置合わせ
 プロセッサのアーキテクチャは、メモリアクセス境界であるワードの先頭アドレスを高性能で読み書きできるように作られているが、それ以外のアドレスにあるデータ構造は性能低下につながってしまう。
 データ構造をプロセッサのメモリアクセス境界に位置合わせすることによって読み書き回数を減らし、アプリケーションの性能を向上させます。
データ構造をプロセッサのメモリアクセス境界に位置合わせすることによって読み書き回数を低減(右図)


出典: TRIZ Technology for Innovation ( http://www.trizsolution.com )

2013年4月22日月曜日

キーワードや文の強調表示


ITヒント32 ‐ データ表現変更
・最も効果的なデータ処理が可能なようにデータの表現を変更してみる

: ソースドキュメント中のキーワードや文の強調表示
 検索エンジンでは、ソースドキュメントからの引用およびソースドキュメントへのリンクとしてクエリに対する結果を示してくれるが、ユーザはソースドキュメントを開いて引用箇所を探さなければならない。
 ソースドキュメント中のキーワードや文を自動的に強調表示し、ユーザが参照可能な箇所を見つけやすくします。
選択された文書中のキーワードや対応する文を自動的に強調表示し
参照可能な箇所を見つけやすくする


出典: TRIZ Technology for Innovation ( http://www.trizsolution.com )

2013年4月21日日曜日

ハニーポット


●ITヒント31 ‐ 落とし穴
落とし穴を掘ってみる
既存の落とし穴を使ってみる

: ハッカーをおびき寄せて捕まえるハニーポット
 インターネットに接続されているネットワークやサーバは、ハッカーの攻撃から護るために常に監視し、保守しなければならない。
 ハッカーをおびき寄せて捕まえるための安全対策として、ハッカーをだますために設けられたインターネット上の特殊コンピュータシステムであるハニーポットを追加します。攻撃者は、正規システムに侵入しようと長時間費やしたあげくハニーポットにたどり着くことになります。ハニーポットはまた、侵入を検知するのにも役立ちます。
ハニーポットがハッカーをおびき寄せて捕まえるのを支援


出典: TRIZ Technology for Innovation ( http://www.trizsolution.com )

2013年4月20日土曜日

ウェブサーバー


●ITヒント30 ‐ シェル/分離層
境界条件を変えてみる
シェルや分離層で外部環境から分離してみる

: ウェブサーバー
 シック・クライアントで多数のクライアント・サーバー・アプリケーションを動かそうとすると、ユーザを教育したりアプリケーションやクライアントを展開保守したりするのに多大な労力を要してしまう。
 ウェブサーバーでアプリケーションを動かせば、アプリケーションごとに個別のクライアント・プログラムを立ち上げて世話する必要がなく、ウェブブラウザーであらゆるアプリケーションに対して同じようにアクセスができます。
左図ではアプリケーションごとに
個別のクライアント・プログラムを立ち上げて世話しなければならないが
右図ではウェブブラウザーとウェブサーバーで
あらゆるアプリケーションに対して同じようにアクセス可能


出典: TRIZ Technology for Innovation ( http://www.trizsolution.com )

2013年4月19日金曜日

ページング


●ITヒント29 ‐ 自由度変更
・自由度を変えてみる

: ページング
 RAM上の使用可能量を超える大量の物理メモリがプロセスで必要になることがある。
 ページング機構を利用すれば、仮想メモリアドレスがRAM上物理メモリあるいはハードディスクに割り当てられるので、プロセスにおいて使用中でない部分はページ単位でRAMからハードディスクへアンロードされ、必要なページはハードディスクからRAMへロードされます。
左図ではデータがRAM上の使用可能量を超えてしまうが
右図では必要なページのみをハードディスクからRAMへロード


出典: TRIZ Technology for Innovation ( http://www.trizsolution.com )

2013年4月18日木曜日

EAVデータモデル


●ITヒント28 ‐ 関係モデルの変更
関係モデルを変えてみる
静的関係から動的関係に、あるいは、非構造化データから構造化データに変えてみる

: EAVEntity-Attribute-Value、要素-属性-)データモデル
 関係データモデルでは静的に定義された表が使われ、各表はあらかじめ定義したフィールドで構成されるので、新たな種類のデータを加える必要が生じた場合、静的なデータモデルに新たなフィールドやテーブルを追加しなければならない。このため、頻繁に変わるパラメータタイプを扱う臨床データ・マネージメントシステムなどのアプリケーションでは静的なテーブル構造を管理するのが難しくなり、誤りを起こしかねない。
 EAVデータモデルを利用すれば、各行に関係(EAV)データが一つずつ格納されるので、表の構造を変えることなくデータ構造をいつでも拡張することができます。
EAV表で各行に関係データを一つずつ格納して柔軟で拡張可能なデータを処理


出典: TRIZ Technology for Innovation ( http://www.trizsolution.com )

2013年4月17日水曜日

サムネイル


●ITヒント27 ‐ 使い捨て
高価なものを多数の安価なものに置き換え、寿命など特定の品質については妥協してみる

: サムネイル
 グラフィックスアプリケーションでは複数の画像ファイルを扱うが、その数が多いと操作選択しにくくなってしまう。
 画像の縮小版であるサムネイルを表示し、ファイルを開くことなく、求める画像を素早く目視選択できるようにします。
グラフィックスアプリケーションにおいては
ファイルの視覚画像であるサムネイルで選択を支援


出典: TRIZ Technology for Innovation ( http://www.trizsolution.com )

2013年4月16日火曜日

データモデリング


●ITヒント26 ‐ コピー
・入手困難、高価、あるいは壊れやすいものの代わりに簡易で安価な複製品を使ってみる

: データモデリング
 ビジネスプロセスを支援する新情報システムの開発あるいは既存システムの強化において現状の環境や関連する要求を把握しにくい。
 データモデリング、すなわちシステム内情報の分析設計を行い、論理要素とその依存関係に焦点を合わせた分析を行えば、ソフトウェア開発過程におけるガイドや仕様書が得られることになります。
データモデルはソフトウェア開発過程におけるガイドや仕様書として利用可能


出典: TRIZ Technology for Innovation ( http://www.trizsolution.com )

2013年4月15日月曜日

自己解凍型アーカイブ


●ITヒント25 ‐ セルフサービス
付帯的有用機能を果たすことによりセルフサービスするようにしてみる
既存の資源や廃棄物を活用してみる

: 自己解凍型アーカイブ
 複数のユーザに大量データを配信する必要がある場合、データが含まれる圧縮ファイルを圧縮解凍ユーティリティで作ってユーザに渡すことが多い。圧縮ファイルを受け取ったユーザがその中のデータにアクセスするためには適切なバージョンの圧縮解凍ユーティリティが必要であるが、無い場合もある。
 自己解凍型アーカイブを作成すれば、圧縮データに加えてそれを抽出するプログラムも含まれるので、ユーザのコンピュータ上に圧縮解凍ユーティリティがインストールされている必要がありません。
圧縮解凍ユーティリティを用いる代わりに
自己解凍型アーカイブで大容量ファイルを解凍(右図)


出典: TRIZ Technology for Innovation ( http://www.trizsolution.com )

2013年4月14日日曜日

トランザクション管理プログラム


●ITヒント24 ‐ 仲介
作用の特性を変える媒介を使ってみる
容易に取り外せるものと一時的に組み合わせてみる

: トランザクション管理プログラム
 アプリケーションがいくつかのデータベースなど複数の独立した資源を管理するプログラムと連動しなければならない場合、分散トランザクションのACID特性(Atomicity ‐ 原子性、Consistency ‐ 一貫性、Isolation ‐ 独立性、Durability ‐ 永続性)達成上の問題が生じてしまう。
 トランザクション管理プログラムを利用してアプリケーションの分散トランザクションを制御すれば、トランザクションで使われる資源管理プログラムが全てトランザクションに含まれることになり、アプリケーションがコミット・リクエストまたはロールバック・リクエストで処理を完了する時、関与する全資源管理プログラムとトランザクション管理プログラムが通信することになります。
トランザクション管理プログラムが
アプリケーションの分散トランザクションを制御


出典: TRIZ Technology for Innovation ( http://www.trizsolution.com )

2013年4月13日土曜日

監視ソフト


●ITヒント23 ‐ フィードバック
フィードバック(後方照応、照合確認など)によりプロセスや作用を改善する
すでにフィードバックを利用している場合にはその度合いや影響を変えてみる

: 監視ソフト
 ソフトウェアのアプリケーションやサービスに対する機能要求が高まったために複雑なソフトウェアやハードウェアのソリューションが必要となり、また、それらを正常状態に保つために必要な作業が増えてしまう。
 監視ソフトを利用してシステムの全体や各部の調子を常にチェックします。監視ソフトには通常、システムのさまざまな故障を回復させたりサポート要員に通知したりする機能が備わっています。
監視ソフトで複雑なソフトウェアやハードウェアを故障から守り
システムの調子を監視


出典: TRIZ Technology for Innovation ( http://www.trizsolution.com )

2013年4月12日金曜日

追加タスクの並列実行


●ITヒント22 ‐ 災い転じて福となす
有害要因(特に環境に害を及ぼす影響)を別の方法で利用して有益な効果を得る
主な有害作用を別の有害作用と組み合わせることにより相殺して問題を解決する
もはや有害でなくなってしまうまでに有害要因を増大させてみる

: 要求タスクに追加タスクを並列実行
 保守タスクにはシステムを停止させないとできないものがあり、パッチや更新などでは通常、アプリケーションをシャットダウンしなければならない。
 システムを停止させなければならない場合には、他の保守タスクを並列実行させます。アプリケーションの更新と並行させてオフラインでデータをバックアップできるので、システムの総停止時間を減らせます。
ソフトウェアの更新とバックアップやその他の保守タスクを並行して走らせることにより総停止時間を削減


出典: TRIZ Technology for Innovation ( http://www.trizsolution.com )

2013年4月11日木曜日

クリティカルなコードセグメント


●ITヒント21 ‐ 高速実行
・プロセスやその一部を高速で実行してみる

: クリティカルなコードセグメントのサイズや時間の最小化
 マルチスレッドのアプリケーションでは、あるスレッドが共有リソースにアクセスするコード部分(クリティカル・セクション)を実行している間、同じリソースを使うスレッドが待ち状態となるため、CPU時間を無駄にしたりシステム応答を遅らせたりしかねない。
 スレッドのクリティカル・セクションができるだけ短くなるようにします。これは通常、クリティカル・セクションのコードを減らすことにより実現されます。
クリティカル・セクションのコード削減による
スレッドのクリティカル・セクションの最短化


出典: TRIZ Technology for Innovation ( http://www.trizsolution.com )

2013年4月10日水曜日

バックグラウンド処理


●ITヒント20 ‐ 連続性
作業を継続して行ったり、全ての部分が常に最大限の能力で動作するようにしてみる
あらゆる待機や一時休止の動作を無くしてみる

: バックグラウンド処理によるアイドル時間の活用
 ユーザがコンピュータを操作していない時、コンピュータはアイドル状態にあり、有用なタスクを何も実行していない。
 CPUのアイドル時間を利用してディスクのデフラグやウィルスチェックなどの有用なバックグラウンドタスクを実行します。
コンピュータがアイドル状態の間、有用なバックグラウンドタスクを実行可能


出典: TRIZ Technology for Innovation ( http://www.trizsolution.com )

2013年4月9日火曜日

再試行プロトコル


●ITヒント19 ‐ 周期的作用
連続的な動作の代わりに周期的な動作やパルスを利用してみる
動作がすでに周期的な場合には、その大きさや頻度を変えてみる
インパルス間の休止を利用して他の動作を行ってみる

: 再試行プロトコル
 不安定なネットワーク環境のもとでデータが送信されると、接続が途切れてデータ・パケットが失われかねない。
 再試行プロトコルを用いれば、伝送中に喪失したデータ・パケットを全データの送信が成功するまで再送信するので、データが確実に送信されるようになります。
再送信プロトコルでは
伝送中に喪失したデータ・パケットを全データの送信が成功するまで再送信


出典: TRIZ Technology for Innovation ( http://www.trizsolution.com )

2013年4月8日月曜日

ソルトを加えたパスワード暗号化


●ITヒント18 ‐ ランダム化
プロセス内でランダム化を利用してみる
データをランダム化してみる

: ソルトを加えたパスワード暗号化
 暗号化されたパスワードは辞書攻撃などのパスワード推測プログラムにより破られかねない。
 破られにくくするためには、暗号化する前のデータへソルト値(ランダムに生成したバイト列)を加えます。

暗号化前にソルト値を付加して辞書攻撃されにくくする


出典: TRIZ Technology for Innovation ( http://www.trizsolution.com )

2013年4月7日日曜日

複合データの視覚的表現


●ITヒント17 ‐ 次元変更
・オブジェクトの次元数を変える

: 複合データの視覚的表現とナビゲーションモデル
 大量の複合データを取り扱う作業は難しく、時間がかかり、非効率的になりがちである。
 データにアクセスするための視覚的表現や直感的なナビゲーションモデルを用意します。
グループA, B、C(右図) 
大量データ(左図)の中で同じ特性を有するものの集まりを表現


出典: TRIZ Technology for Innovation ( http://www.trizsolution.com )

2013年4月6日土曜日

データ流調整


●ITヒント16 ‐ 部分的/過剰な作用
100%ぴったりの効果を得にくい場合には少なめあるいは多めにしてみる

: データ流調整によるシステム間相互作用の管理
 クライアントサーバ・システムにおいてクライアントがサーバへ大量のデータを送らなければならないことがあるが、サーバの性能上、全てのデータを受信することができない場合、動作異常やデータ損失を招きかねない。
 サーバの計画性能をクライアントへ通知するプロトコルを利用すれば、サーバ側からの情報に応じてクライアント側から送り出すデータ流を調整してサーバの能力に合わせることができます。
クライアント側から送り出すデータの速さがサーバの性能特性と調和


出典: TRIZ Technology for Innovation ( http://www.trizsolution.com )

2013年4月5日金曜日

ドメイン名システム(DNS)


●ITヒント15 ‐ ダイナミック性
オブジェクト特性、外部環境、プロセスが最適化となるまたは最適な動作条件となるようにしたり、設計したりしてみる
相対動作が可能な部分に分割してみる
柔軟性が無い場合には動的または適応可能にしてみる

: ドメイン名システム(DNS
 IPアドレスよりも使いやすい名称でネットワーク資源へ簡単にアクセスしたい。
 IPアドレスに対して憶えやすい名称を割り当てるドメイン名システム(DNS)を利用すれば、IPアドレス名称を打ち込んだ時点で実際のIPアドレスへ変換してくれます。DNSではまた、名称は変えることなく対応するIPアドレスを変更可能なのでメンテナンスが楽になります。
ドメイン名システム(DNS)により、憶えやすい名称をIPアドレスに変換


出典: TRIZ Technology for Innovation ( http://www.trizsolution.com )