地球の磁場も生命を守る盾の役割を果たしています。地球には強い磁場があるために、生物にとって有害な太陽風が地表まで届きません。太陽風は高温のプラズマ(原子核と電子が分離したもの)です。これは生物にとっては危険な存在ですが、地球の磁場が防いでくれています。
なぜ、地球に強い磁場が存在するのかは長い間よくわかっていませんでした。地球の中心部は5000℃を超える超高温です。強磁性鉱物でも数百℃以上の高温では磁性を失うことを考えると、地球内部の鉱物が永久磁石になっているとは考えられません。
しかし、磁石には永久磁石の他に電磁石というものがあります。電流が流れることによって磁力が発生する磁石が電磁石です。
そのため地磁気は、地球内部にある鉱物の磁石が原因ではなく、地球内部で発生している電流が原因と考えられています。地球の外核は高温の液体であり、主に鉄で構成されているので電気をよく通します。これが地球の自転に伴って対流し、鉄の運動によって生じた電流が地磁気を形成します。このように地球内部の流体運動が磁場を生み出しているという仮説をダイナモ理論といいます。
⇧ 地球の生命を守っている磁場って、地球の寿命ぐらいまでは機能し続けてくれるものなんですかね?
どちらにしろ、「太陽」にしろ「地球」にしろ寿命があるわけで、宇宙空間で永続的に生活していける技術の研究が重要ということですかね。
問題は、様々な機器を稼働させるためのエネルギーをどう維持するかってところですかね。
まぁ、少なくとも、今を生きている人類には影響のない話ではありますが...
AOP(Aspect Oriented Programming)とは
Wikipediaによりますと、
アスペクト指向プログラミング(Aspect Oriented Programming、AOP)は、横断的関心を実装する手法によって、プログラムのモジュール性を高めることを目的にしたプログラミングパラダイムである。
AOPはこの横断的関心を、既存コードに設けた間接点(joint point)を通しての振る舞い助言(advice)の追加によって、コード変更を伴なわずに実装できるようにしている。
任意の間接点および振る舞い助言の定義をまとめたモジュールがアスペクトと呼ばれ、これが横断的関心の表現体になる。
例としては、全ての関数呼出しにログ出力を伴わせたい時に、全関数冒頭にjoint pointを設けてログ出力コードをadviceにしたアスペクトをプログラム内に定義することで、自動的に各関数呼出しとログ出力が同時実行されるようになる。
⇧ とのこと。
イメージとしては、
⇧ 上図が分かりやすいかと。
つまり、同じ様な処理を切り出して、処理が呼ばれる条件等を決めておいて呼び出されるようにしておく感じになるのが、「AOP(Aspect Oriented Programming)」ということかと。
大規模システムとかであれば、かなり役立ちそうな機能ではありますと。
ちなみに、
しかし現状のアスペクト指向は、オブジェクト指向のコードをサポートする役割に留まっていることが多く、独立したパラダイムとして扱われることは稀である。OOP言語JavaにAOPを追加した「AspectJ」がその代表例である。純粋OOP言語RubyもAOP由来の機能を補完的に取り入れている。
⇧ Pythonでは、そもそも、「AOP(Aspect Oriented Programming)」の利用を想定していなさそうな感じっぽい...
少なくとも、Wikipediaの説明では、「主なアスペクト指向言語」でPython向けのものは存在していない模様。
PythonでAOP(Aspect Oriented Programming)のライブラリにどんなものがあるのか
ネットの情報を漁って見た感じでは、
⇧ ライブラリは存在するようですと。
ただ、
python-aspectlib.readthedocs.io
⇧ 開発の状況が、なかなかに不定期なこともあり、利用して良いものか悩みどころですと。
Python標準のdecoratorとAOP(Aspect Oriented Programming)
Pythonの標準の機能として、
(デコレータ) 別の関数を返す関数で、通常、 @wrapper
構文で関数変換として適用されます。デコレータの一般的な利用例は、 classmethod()
と staticmethod()
です。
⇧「decorator」というものが用意されていらしいのですが、
一応、
⇧ Pythonの「decorator」なる機能で「AOP(Aspect Oriented Programming)」っぽいことができるようですと。
PythonでAOP(Aspect Oriented Programming)を導入することは無い感じなのか
ネットの情報を漁ってみた感じでは、
Pythonのデコレータってめちゃくちゃ難しいなーって思ってたけど、結局表題に帰結する。
「引数で関数を受け取って、関数を返す」とか難しいことを言っている記事が多かったけど、結局、その対象のメソッドを実行する前後に何をしたいかどうかだけ。
⇧ と仰ってる方がおられますと。
ただ、「Spring Framework」の公式のドキュメントの「AOPの概念」のページを見た感じでは、
⇧「Spring Framework」で取り入れられている「AOP(Aspect Oriented Programming)」の機能は盛り沢山な印象。
公式の情報では無いのですが、
⇧ 上記サイト様によりますと、
の3つがあるっぽい。
Pythonで似たようなことを実現しようとすると、
⇧ いろいろと自分で作り込まないといけなくなりそうな気配。
ちなみに、
AOP(ライブラリによるProxy生成型)が不要だと考える理由を書いてみます。
⇧ そもそも、Proxy形式の「AOP(Aspect Oriented Programming)」の導入するメリットが無いというお話もありますと。
とりあえず、ヒットする情報が少ないところを見ると、Pythonで「AOP(Aspect Oriented Programming)」を導入することは無い感じなんですかね?
Pythonの「decorator」なる機能で、対応できそうな部分ぐらいは取り入れるべきなのか、どうしたもんか...
毎度モヤモヤ感が半端ない…
今回はこのへんで。