外貨預金についての悩み相談室

■Infomation

売買レート・金額の想定

ある程度の相場情報と今後の予想がかたまったら、”いくらのレートでいくら外貨を買って(円→外貨)””いくらのレートでいくら外貨を売る(外貨→円)”かを想定します。例えば、1ドル(US$)=100円になったら1,000ドル買って、1ドル(US$)=110円になったら1,000ドル売るというように、自分の今後の為替相場予想をもとに想定します。この際に公表仲値と実際の売買のレートは差があることを考慮してください。(外貨預金用語等のページの”為替手数料って?”を参照)売買レートの想定ができたら新聞・ニュースなどを見て常にレートや株価、各国の経済状態などをチェックして、想定のレートになるのを待ちます。以前の為替相場のヒストリカルデータをヒントにするもの良いかもしれません。ヒストリカルデータは銀行のHPにもありますので、リンクを参照してください。 セミナーは、あるライブラリ内のデータ(コードを含む)を新たな実行ファイルのコンパイル時にコピーすることはなく、ディスク上に別のファイルとして存在している。コンパイル時にリンカが行うのは、その実行ファイルが必要とするのがどのライブラリのどの部分であるか(関数名やインデックス)を記録するだけである。リンク作業の大部分はそのアプリケーションがメモリ上にロードされたときか、実行時である。リンクを行うコードはローダ(loader)と呼ばれ、実際にはオペレーティングシステム (OS)の一部と見なされる。適当な時点でローダは必要なライブラリをディスク上で見つけてプロセスのメモリ空間に(追加のデータ空間と共に)マッピングする。OSによってはプロセスが実行開始する前でないとライブラリをリンクできないものもあるが、多くのOSではプロセス実行時に実際にライブラリを参照したときにリンクすることができる。後者は「遅延読み込み」などと呼ばれる。どちらの場合もライブラリはダイナミックリンクライブラリと呼ばれる。DLL という呼び方は Microsoft Windows 環境で一般的であり、動的ライブラリのファイル拡張子は .dll である。 監視カメラは、メモリ上の各ライブラリの位置が実際にロードされるまで確定しないため、ちょっとしたトリックを必要とする。ディスク上のファイル内に絶対アドレスを書きこんでおくことはDLL内であっても不可能である。理論的にはメモリにロードされたときにライブラリを参照している部分を全て書き換えて正しいメモリ上の位置を参照するようにすることはできるが、それによって消費される時間とメモリは無視できない。その代わりに多くの動的リンクシステムではアドレス欄が空欄となったシンボルテーブルをコンパイル時に用意する。ライブラリへの参照は全てこのシンボルテーブルを経由して行われる(コンパイラはシンボルテーブルからアドレスを取り出して使うコードを生成する)。メモリにロードされたとき、ローダがこのテーブルを書き換える。 ライブラリも全メソッド(関数、サブルーチン)のテーブルを持っている。ライブラリに入ってくるときは、このテーブルを経由して各ルーチンにジャンプする。これによってライブラリのルーチンコールにオーバヘッドが発生するが、それは無視できるほど小さい。 粗大ゴミは機能面で様々なものがある。いくつかの場合、実行ファイルに格納された明示的なライブラリパスに依存し、ライブラリ名やディスク上の配置を変更するとシステムが動作できなくなる。より一般的な手法としてはライブラリ名だけを実行ファイルに格納し、オペレーティングシステムが何らかのアルゴリズムでディスク上のライブラリを検索する。UNIX系システムでは、ライブラリを探す場所(ディレクトリ)を構成ファイルにリストアップしておく。ライブラリ開発者はそこに書かれたディレクトリにライブラリを配置することを推奨される。しかし、この方法では新しいライブラリをインストールする際に問題が発生しやすく、共通のディレクトリにあまりにも多くのライブラリが置かれることとなって管理を難しくする。Microsoft Windows ではレジストリを使ってActiveX DLL の場所を決めているが、標準DLLでは、 アプリケーションの実行ファイルの存在するディレクトリ SetDllDirectory()で示されるディレクトリ システムディレクトリ (NT系ではSystem32) 16ビットシステムディレクトリ (System) Windowsディレクトリ カレントディレクトリ PATH環境変数 で示されるディレクトリを探す(古いバージョンではカレントディレクトリが2番目だった)[1]。OPENSTEPはもっと柔軟なシステムを使用していて、ライブラリの探索リストを保持している。しかし不正なDLLが探索の上位に置かれていると実行ファイルは不正動作する可能性がある。Windowsでは、これが「DLL地獄」(DLL hell)と呼ばれ、よく知られている問題である。 脱毛からは、Side-by-Sideアセンブリ (DLL署名, WinSxS)というメカニズムが追加された。これは動的リンク時にライブラリのファイル名ではなく、ライブラリにつけられた署名によってリンクすべきライブラリを決定するものである。これにより、同じファイル名を持つが異なる実装を持つライブラリを同時に使い分ける事ができる。よくあるパターンとして、ソースコードから改変・ビルドされたランタイムライブラリをシステムにインストールする場合にこのメカニズムが有効に働く。システムにインストールされたライブラリはライブラリ探索リスト上比較的上位に存在するが、署名が一致するプログラムにのみロードされるのでDLL地獄は今後解消されるであろうと考えられる。しかし、この機構には一つの弱点がある。それはシステムライブラリをオーバーライドして独自機能を実装する時、この機構は役に立たない方向へ働く。その様な実装をする時には、故意にマニフェスト機能を無効にしてライブラリを作らなくてはならない。もっとも、そのようなアプローチは、システムファイル保護機能が搭載されたWindows 2000のリリース時点で時代遅れであり、Windows Vistaに至っては管理者と言えどもシステムライブラリを書き換える事は出来なくなっている。 包茎の起源は定かではないが、少なくとも1960年代後半のMTS (Michigan Terminal System)まで遡ることができる("A History of MTS", Information Technology Digest, Vol. 5, No. 5)。 これは動的リンクの下位カテゴリであり、コンパイル時にリンクされた以外のダイナミックリンクライブラリを実行中のプログラムが明示的にロードすることである。この場合、ライブラリはプラグインモジュールとして使われるのが一般的で、表計算プログラムのadd-inや特定機能を実現するインタプリタなどが典型的である。 動的ライブラリをサポートしているシステムは動的読み込みAPIもサポートしているのが一般的である。例えばWindowsは LoadLibrary() と GetProcAddress() を用意していて、UNIX系システムでは dlopen() と dlsym() を用意している。いくつかの開発システムではこの処理を自動化している。 トラック買取のライブラリの形態として完全に分離された実行ファイルをRPCと呼ばれる方法で接続するものがある。このアプローチではオペレーティングシステムの再利用が最大に生かされる。つまり、ライブラリサポートのためのコードはアプリケーションサポートのコードやセキュリティサポートのコードと共通化できる。さらに、このライブラリはネットワークを経由した別のマシン上に存在しても構わない。 欠点はライブラリコールの度に無視できないオーバヘッドが発生することである。RPCは非常にコストがかかり、可能な限り排除されてきた。しかし、このアプローチは特定分野で一般化しつつある。特にクライアントサーバシステムやEnterprise JavaBeansのようなアプリケーションサーバで一般的である。