DLLの使用を許可する
「MT4」(MetaTrader 4)を使い、EAトレードしている方なら設定の際に、
「DLLの使用を許可する」
にレ点を入れるようにいわれることがあります。
最初の頃は、とりあえず言われた通りに設定する方が良いと思い、
言われた通りに設定されると思います。
ただこれってなに???
っと思われるかもしれないので、初心者の方でもわかりやすいように解説していければと思います。
この
「DLLの使用を許可する」
について基本的なことでも良いので、理解することはEAトレーダーにとってとても重要です。
「DLLの使用を許可する」
ことのメリットとデメリットを紹介していきます。
DLLとは
「DLL」(Dynamic Link Library)の読み方ですが、
デイ エル エルと読みます。 カタカナで書くと ダイナミック リンク ライブラリーとなります。
日本語訳にすると「動的リンクを用いたライブラリ」となり、ライブラリは図書館と訳される方もいますが、蔵書などの意味もあります。
では内容の説明ですが、これはWindowsオペレーティングシステムで使用される動的リンクライブラリの略です。
プログラムが実行時に必要とするコードやリソースを含むファイルで、複数のアプリケーションから共有して利用することができます。
DLLファイルは、プログラムが必要な関数やデータを提供し、プログラムがそれらを利用して特定のタスクを実行するのを助けます。
もう少しわかりやすく例を用いて説明してみます。
例えば、あるゲームをコンピュータで遊ぶとき、そのゲームは「ジャンプする」とか「走る」といった基本的な動きをプログラム(命令)として持っていますよね。DLLは、そういった基本的な動きを保存していて、ゲームが「ジャンプしろ」と言ったら、DLLが「ジャンプの方法」を教えてくれるイメージです。
もっと具体的に言うと、たくさんの異なるゲームが、同じ「ジャンプの方法」を使いたいとき、それぞれのゲームが「ジャンプの方法」を1つずつ持っていると、無駄が多くなってしまいます。そこで、DLLが1つの「ジャンプの方法」をみんなで共有して、どのゲームもそれを利用することで、手軽にジャンプできるようになるのです。
※下図は簡単なイメージとなります。
毎回DLLからからコードを読み込ませることで、コードを書くことも少なくなり、処理も早くなります。
このようにして、DLLはコンピュータのプログラムがスムーズに動く手助けをしてくれます。ただし、時々DLLがうまく動かなかったり、悪いプログラム(ウイルスなど)がDLLを利用して困ったことをすることもあるので、コンピュータはDLLを安全に、そして正しく使う方法を学んでいく必要があります。
EAの作成にDLLは必須ではない。
以前ご質問でもありましたが、
MT4でEA(Expert Advisor)を利用する際に必ず
「DLLの使用を許可する」
にチェックを入れる必要があるかとの内容です。
答えからいうと、
必須ではありません。
使用するかどうかは開発するEAの機能や要件に依存します。
開発者が取り組んでいるタスクや目標によって、その必要性が変わってきます。
これからメリットとデメリットの部分でも説明しますが、セキュリティと利便性を適切にバランスさせながら開発者はこのDLLを使うのでそんなに機能が多くないのであればセキュリティのことを考えた場合は、利用する必要はありません。
なのでEAによっては
「DLLの使用を許可する」
にレ点を入れなくとも大丈夫なものは多数あります。
DLLのメリット
ここではあまり言及しませんが、DLLのメリットは星の数ほどありますが、下記に3つほど上げてみたいと思います。
- コードの再利用
これはEAを作る側のお話ですが、 DLLを使用すると、共通の関数やクラスを一元管理し、複数のプログラムから呼び出すことができます。
これにより、全ての支持のコードを書く必要がなくなるので、効率的にEAを作成することが出来ます。 - メモリの効率化
これはEA利用者のメリットになります。
というのもDLLファイルは一度だけメモリにロードされ、複数のアプリケーションからアクセスできるため、メモリ使用量を削減できます。 - アップデートの容易さ
DLLファイルを更新することで、それを利用しているすべてのアプリケーションに対して新しい機能や修正を提供することができます。
これは上記でもご説明した通り、
EA1とEA2があったとします。
本来であれば、コードの修正はEA1とEA2が必要となりますが、
DLLファイルの1つだけ修正するだけで、EA1とEA2が修正させたことになります。
ここ掲載した内容は一部です。
MQL4では実現できない機能を追加出来たり、外部のAPIを利用したりとプログラマーにとっては至れり尽くせりですが、ここはあまり読者の方に対して強調するところではないので、以上とさせてもらいます。
DLLのデメリット
さてお待たせてしました。
ここが
「DLLの使用を許可する」
にチェックを入れた時のデメリットです。
とりあえず、3つあげてみます。
- セキュリティリスク
DLLファイルが含むコードは、悪意のあるものである可能性があり、それによってシステムが危険にさらされる可能性があります。 - 依存関係の問題
アプリケーションが特定のDLLに依存している場合、そのDLLが欠けているか、互換性のないバージョンであると、アプリケーションは正しく動作しなくなる可能性があります。 - デバッグの難しさ
DLLを使用すると、デバッグが複雑になる可能性があります。特に、複数のアプリケーションが同じDLLを共有している場合、問題の特定と解決が難しくなることがあります。
この中の
1・セキュリティリスク
が特に重要です。
といってもどのようなDLLファイルが使われているかわからない以上こちらでは判断できません。
だからこそ、EAを配布している方のあらゆる面を気にかける必要があります。
これはDLLだけのお話ではないですが、適当なところからダウンロードして使用してしまうと、それがウィルスだったり、個人情報を取得されてしまうことも可能です。
なぜなら今使っているEAの中身は全く知らないで使用しているわけなので!
利用者が出来ることは、出来るだけ配布者に
「連絡がつく」、「信用出来る」、「説明が出来る」
ような方のEAを使うことをお勧めいたします。
まとめ
MT4のEAでDLLを利用する場合、これらのメリットとデメリットを考慮しながら、セキュリティと効率のバランスを適切に取ることが重要です。
特に、取引に関わる情報が含まれているため、セキュリティの側面は特に慎重に取り扱う必要があります。
とはいえ、与えられてEAを使うしかない状況にある場合は無条件で使う必要があるので、
利用者が出来ることは、信頼出来る配布者からのEAしか利用しないが現状できる最善の対策だと思います。