「フック (プログラミング)」の版間の差分

ROMで提供されるコードの変更
m (ロボットによる 追加: sv:Hooking)
(ROMで提供されるコードの変更)
 
主に元のプログラムに対する機能追加・拡張やカスタマイズの手段として使われるほか、[[デバッグ]]のための情報収集にも有効である。このような有用な使い方の反面、既存のプログラムの動作を変更できることから、悪意を持ったプログラムによって利用される場合もある。例えば[[オペレーティングシステム|OS]]のキー入力処理のフックを使えば[[キーロガー]]を実装できることになる。
 
また、元のコードそのものは書き換えなくても動作を変更できることから、[[Read Only Memory|ROM]]で提供されるプログラムのバージョンアップや修正に使われることもある。ただしこの場合も、必要な個所に対応するフックがあらかじめ用意されていることが条件となる。すなわち、元のコードを設計する段階から、将来の機能拡張や修正を見越してフックを設計しておく必要がある。
 
==実装例==
 
例えば[[テキストエディタ]]の[[Emacs]]の場合、[[Emacs Lisp]]という言語でさまざまな機能が記述されるが、大部分のEmacs Lispパッケージは変数名の末尾が「-hook」となる変数をフックとして定義している。Emacs起動時にはemacs-startup-hookが、c-modeを呼び出した際にはc-mode-hookが評価されるといった具合である。Lispプログラムは[[S式]]というリストになっており、変数にS式を設定しておけば、変数を評価する際にそのプログラムが実行される。
 
== 参考文献 ==
* {{Cite book|和書
|author=ジェイムズ・ノーブル、チャールズ・ウィアー
|translator=安藤慶一
|title=省メモリプログラミング
|origyear=2001
|edition=初版
|date=2002-06-20
|publisher=ピアソン・エデュケーション
|isbn=4-89471-408-6
}}
 
== 関連項目 ==
369

回編集