約 4,283,062 件
https://w.atwiki.jp/futada/pages/14.html
Implementing QuantLib日本語訳 2章 これは、Luigi Ballabio氏が書かれているImplementing QuantLibの翻訳です。氏の許可を得て、翻訳・公開しています。 日本語訳の情報は、こちらを参照してください(日本語訳に関する質問等もここのフォームにお願いします)。 The content of this page is licensed under Creative Commons. 2. 金融商品とプライシングエンジン 2.1 Instrument(商品)クラス 2.1.1 インターフェイスと要件 2.1.2 実装 2.1.3 例:金利スワップ 2.1.4 さらなる開発 2.2 プライシングエンジン 2.2.1 例:プレーンバニラオプション 2. 金融商品とプライシングエンジン 多くの問題に、多くの解決法 金融ライブラリは金融商品を価格付けする方法を提供しなければならないという声明は、間違いなく自明の理です。しかしながら、それは全体の問題のほんの一部であり、金融ライブラリは新しい価格付け機能性を追加することでそれを拡張するという方法も開発者に提供しなければなりません。ありうる拡張は2種類あり、ライブラリはどちらの方法も許可しなければいけません。 ひとつは、新しい金融商品を追加することが可能でなければならないことであり、もうひとつは既存商品の価格付けの新しい方法を追加することが可能であるということです。両方とも解決法が満足しなければならない多くの要求、もしくは模範的な用語で言うと圧力があります。この章では、そのような要求を詳しく述べ、QuantLibがそれらを満足させる設計を説明します。 2.1 Instrument(商品)クラス 私たちの領域では、金融商品はそれ自体で概念になります。これだけの理由で、自尊心のあるオブジェクト指向プログラマは、特定の商品が派生される基底クラスとしてそれをプログラムするでしょう。 QuantLibでそのようなクラスを定義するのは当然の決定です。このことは多くの他の利点になります。最も明白であるのは、結果としてユーザが一様に商品を管理できるということです。これは実際の金融の現場でよく行われます。たとえば、ある人がポートフォリオ(商品の集合)全体の価値に興味があるかもしれません。結果を得る自然な方法は、商品を循環させその値を収集することです。C++ではこれは、基底クラスへのポインタのコンテナで商品を保管し、共通のインターフェイスを通じて順番にそれらを検査するということになります。 2.1.1 インターフェイスと要件 経験する最初の設計決定では、私たちは新たに初めて使用するInstrumentクラスの詳細を始めました。第一の問題は、パブリックのインターフェイスの発見であり、それはすべての金融商品に共通のメソッドを含まなければなりませんでした。しかしながら、トレードされる資産の多様性(もっとも単純からもっともエキゾチックまで変動する)は次のことを示唆します。商品(たとえばエクイティオプション)の与えられたクラスに特有のいかなるメソッドも他の種類の商品(たとえば金利スワップ)に対しては意味をなさないようでしょう。。したがってほんのわずかのメソッドが、一般的であるとしてInstrumentインターフェイスに属することができるくらいに選び抜かれました。私たちは自分自身を、現在価値(もしかすると関連の誤差推定も一緒に)を返すものと商品が満期を迎えたかどうかを示すものへ制約しました。結果としてのインターフェイスはリスト2.1に示されます。 リスト2.1 Instrumentクラスの前置きのインターフェイス class Instrument { public virtual ~Instrument(); virtual Real NPV() const = 0; virtual Real errorEstimate() const = 0; virtual bool isExpired() const = 0; }; 良いしきたりの通り、メソッドは純粋仮想として定義されました。しかし、ガーシュウィンののポギーとベスでスポーティン・ライフが指摘したようにそれほど必要ではありません。基底クラスでコード化されるいくつかの振る舞いがあるかもしれません。これがその場合なのか調べるために、私たちは一般的な金融商品から予想されるべきことを分析し、一般的な方法でそれが実装できるか確認しなければなりませんでした。二つのそのような要求が違う時間に発見され、それらの実装はライブラリの開発中に変化しました。私は現在の形でここにそれらを示します。 一つは、与えられた金融商品は、継承の方法をとることなく必要なく異なる方法(たとえば、一つ以上の解析式もしくは数値的方法)で価格付けされるかもしれないということです。この時点で、パターンをよく知っている読者は「Strategyパターン」を考えるでしょう。確かにその通りです。私は2.2節をその実装へ捧げます。 二つ目の要求は、金融商品の値はマーケットデータに依存するという観察からきました。そのようなデータは時間での自然の変数によるために、商品の値は次々に変化します。可変性の他の原因はいかなる単一のマーケットデータが異なる源から提供されるということです。私たちは、金融商品がこれらの源にリンクするようにしたかったため、異なる呼び出しに応じてそのメソッドは最新の値にアクセスし、それに応じて結果を再計算するべきでした。また私たちは、透過的に源の間を変更し、商品が単にデータ値の変化であるとしてこれを扱うようにしたかったです。 しかしながら、これに伴い効率性の潜在的損失がおこります。たとえば私たちは、コンテナに商品を保管することで、時間内にポートフォリオの値をモニターし、定期的にその値を投票し、そして結果を加えることができたかもしれません。解説してきた実装ではこれは、その入力が変わっていない商品に対してもさえ再計算を誘発するでしょう。したがって私たちは、商品のメソッドにキャッシュ機構を追加することを決めました。直前の結果が保存され、入力のいずれかが変化した際にのみ再計算される仕組みです。 2.1.2 実装 商品の値のキャッシュと再計算を管理するコードは、二つのデザインパターンを用いて一般的な金融商品のために書かれました。 入力のいずれかが変化した時、商品はObserverパターンの方法で通知されます。パターン自身は付録Aで簡単に述べられています。私は登場人物の特徴をここで述べます。 明らかなように商品は観察者の役割を演じ、一方で入力データは観察対象の役割を演じます。変化が通知された後で新しい値にアクセスするために、入力を表現するオブジェクトへの参照を観察者が保持する必要があります。これはある種のスマートポインタを提案するかもしれませんが、ポインタの振る舞いは完全に問題を記述するのに十分ではありません。すでに説明したように、データ供給者からの値は時間で変化するという事実だけではなく、私たちは異なるデータ供給者へスイッチしたいと思うかもしれません。(スマート)ポインタを保持することは指し示されたオブジェクトの現在値へアクセスすることを認めますが、観察者にとってプライベートであるポインタのコピーは異なったオブジェクトを指し示すことができませんでした。したがって私たちが必要なものは、ポインタへのスマートなポインタの等価物です。この特徴はQuantLibではクラステンプレートとして実装され、Handleの名前を与えられています。詳細は付録Aで与えられますが、この議論への関連は、与えられたHandleのコピーはオブジェクトへのリンクを共有するという事実です。リンクが他のオブジェクトを示されたとき、すべてのコピーが通知されそれらのハンドラーが新しいポインティにアクセスすることを可能にします。さらにHandleは指し示されたオブジェクトからのどんな通知でもその観察者へ転送します。 もう一つの問題は、継承先のクラスがいかなる特殊な計算を実装するようにしながら、キャッシュされた結果を保持し再計算するためのコードを抽象化することでした。これはTemplate Methodパターンの方法でなされました。以前のバージョンのQuantLibでは、その機能性はInstrumentクラスそれ自体に含まれていました。後にそれは抽出され今ではライブラリのほかの部分でも再利用されている他のクラスへコード化されました(それは驚きに値しませんが、LazyObjectと呼ばれています)。クラスの概要はリスト2.2で示されます。 リスト2.2 LazyObjectクラスの概要 class LazyObject public virtual Observer , public virtual Observable { protected mutable bool calculated_ ; virtual void performCalculations () const = 0; public void update () { calculated_ = false ; } virtual void calculate () const { if ( ! calculated_ ) { calculated_ = true ; try { performCalculations () ; } catch ( ... ) { calculated_ = false ; throw ; } } } }; コードは十分に単純です。論理型のデータメンバーcalculated_が定義され、それは結果がまだ有効であるかのトラックを保持します。updateメソッド(これはObserverインターフェイスを実装し観察対象からの通知により呼ばれます)は、その論理型が偽であると設定し従って以前の結果を無効化します。 calculateメソッドはTemplate Methodパターンの方法で実装されます。4人のギャングたち(GoF)の本で説明されたように、アルゴリズムの不変の部分(この場合キャッシュされた結果の管理)は基底クラスで実装され、可変の部分(ここでは実際の計算)はperformCalculataionsと名付けた仮想関数(これは基底クラスのメソッドの主要部で呼ばれます)へ任せます。その結果、派生クラスはキャッシング(関連するコードは基底クラスに投入されます)に気を配らずに特定の計算だけを実装するだけになります。 キャッシングの論理は単純です。現在の結果がもはや有効でないなら、私たちは派生クラスが必要となる計算を行い、そして新しい結果が最新であるとフラグを立てるようにします。現在の結果が有効であるなら、私たちは何も行いません。 しかしながら、実装はそれほど単純ではありません。私たちはなぜtryブロックが前もってcalculated_を設定し、ハンドラが例外を投げる前に変更を元に戻さなければいけなかったのかと、あなたが考えるのはもっともでしょう。 つまり、私たちはアルゴリズムの本体をより単純に書くことができたと言うことです。たとえば以下は一見等価な実装に見えます。 if ( ! calculated_ ) { performCalculations(); calculated_ = true; } 上のように書かなかった理由は、performCalculationsが再帰的に呼ばれること(たとえば、怠惰なオブジェクトが怠けてブートストラップさせる金利の期間構造であるとき)が起こる場合があるためです。もしcalculated_が真に設定されなければ、if条件節はまだ有効であり、performCalculationsは再び呼ばれ無限の再起を引き起こすでしょう。そのようなフラグが真であると設定することは、これが起こるのを防ぎます。しかしながら、例外が投げられたならそれを偽であると復元するように注意を払います。備えつかられたエラーハンドラがキャッチできるようにそれから例外が再び投げられます。 さらに少しのメソッドが、ユーザが結果の再計算を避けるもしくは強制することを可能にするLazyObjectで与えられます。それらはここでは議論しません。私は興味のある読者にマスター・オビ=ワン・ケノービがよく与えた助言を繰り返します。「ソースを読むのだ、ルーク。」 InstrumentクラスはLazyObjectから派生します。リスト2.1でまとめたインターフェイスを実装するために、それは金融商品に特有なコードで計算法を飾り付けます。結果としてのメソッドは、他の少しの支援コードとともにリスト2.3で示されます。 リスト2.3:Instrumentクラスの引用 class Instrument public LazyObject { protected mutable Real NPV_; public Real NPV() const { calculate(); return NPV_; } void calculate() const { if ( isExpired () ) { setupExpired(); calculated_ = true; } else { LazyObject calculate(); } } virtual void setupExpired() const { NPV_ = 0.0; } }; またしても、追加されたコードは商品特有の計算を派生クラスへ委託するTemplate Methodパターンに追随します。クラスは、計算結果を保持するNPV_データメンバを定義します。派生クラスは特有の結果を保持するほかのデータメンバを宣言することができます。計算メソッドの主要部は、商品が満期後のものかをチェックする仮想のisExpiredメソッドを呼びます。もしその場合は、setupExpiredと名付けられた他の仮想関数(これは結果に意味のある値を与える責任を持ちます。デフォルトの実装はNPV_へ0をセットし、また派生クラスで呼ぶことができます)を呼びます。calculated_フラグはそれから真に設定されます。もし商品が満期でない場合、LazyObjectのcalculateメソッドが代わりに呼ばれ、それは今度は必要に応じてperformCalculationsを呼びます。これは後のメソッドに契約を義務付けます、つまり、派生クラスでの実装は計算結果を(他の商品特有のデータメンバと同様)NPV_へセットすることが要求されます。最終的にNPVメソッドはcalculateが結果を返す前に呼ばれることを保証します。 2.1.3 例:金利スワップ 私は特定の金融商品が説明した容易さに基づいてどのように実装できるかを示すことでこの説を終わりにします。 選択した商品は金利スワップです。利用者が確かに知っているように、定期的なキャッシュフローの交換が存在する約定です。その商品の正味の現在価値は、キャッシュフロー額が支払い受取りかに基づいて、割り引いたキャッシュフローを加算または減算することで計算されます。 驚くことではないですが、スワップはInstrumentから派生する新しいクラスとして実装されます。その概要はリスト2.4で示されます。データメンバーとして計算に必要なオブジェクトを含みます。つまり第1と第2レグとそれらの額を割り引くために使われる金利の期間構造、そして追加の結果を保持する2つの変数です。さらにInstrumentインターフェイスとスワップ特有の結果を返すものを実装するメソッドを定義します。Swapとその関連するクラス図は図2.1(オリジナルのpdf参照)で示されます。 リスト2.4:Swapクラスの部分的なインターフェイス class Swap public Instrument { public Swap(const vector shared_ptr CashFlow firstLeg, const vector shared_ptr CashFlow secondLeg, const Handle YieldTermStructure termStructure); bool isExpired() const; Real firstLegBPS() const; Real secondLegBPS() const; protected // メソッド void setupExpired() const; void performCalculations() const; // データメンバー vector shared_ptr CashFlow firstLeg_, secondLeg_; Handle YieldTermStructure termStructure_; mutable Real firstLegBPS_, secondLegBPS_; }; この節の残りで、私はクラスの実装をレビューします。関連するメソッドはリスト2.5で示されます。 リスト2.5:Swapクラスの部分的な実装 Swap Swap(const vector shared_ptr CashFlow firstLeg, const vector shared_ptr CashFlow secondLeg, const Handle YieldTermStructure termStructure) firstLeg_(firstLeg), secondLeg_(secondLeg), termStructure_(termStructure) { registerWith (termStructure_); vector shared_ptr CashFlow iterator i; for ( i = firstLeg_.begin(); i != firstLeg_.end (); ++i ) registerWith( *i ); for ( i = secondLeg_.begin() ; i != secondLeg_.end(); ++i ) registerWith( *i ); } bool Swap isExpired() const { Date settlement = termStructure_− referenceDate(); vector shared_ptr CashFlow const_iterator i ; for ( i = firstLeg_.begin(); i != firstLeg_.end(); ++i ) if ( !( *i )− hasOccurred( settlement ) ) return false; for ( i = secondLeg_.begin(); i != secondLeg_.end(); ++i ) if ( !( *i )− hasOccurred( settlement ) ) return false; return true; } void Swap setupExpired() const { Instrument setupExpired(); firstLegBPS_= secondLegBPS_ = 0.0; } void Swap performCalculations() const { NPV_ = − Cashflows npv( firstLeg_, **termStructure_ ) + Cashflows npv( secondLeg_, **termStructure_ ); errorEstimate_ = Null Real (); firstLegBPS_ = −Cashflows bps( firstLeg_, **termStructure_ ); secondLegBPS_ = Cashflows bps( secondLeg_, **termStructure_ ); } Real Swap firstLegBPS() const { calculate(); return firstLegBPS_; } Real Swap secondLegBPS() const { calculate (); return secondLegBPS_; } クラスをInstrumentフレームワークに合わせることは3ステップで終了し、3番目は派生されたクラスに応じて任意です。最初のステップはクラスのコンストラクタで行われ、それは交換されるキャッシュフローの2つの列と額を割り引くために使われる金利の期間構造を引数として取ります(そして対応するデータメンバーへコピーされます)。そのステップ自体は、キャッシュフローと期間構造の両方の観察者としてスワップを登録するためにあります。以前に説明したように、これにより変化が起こるたびに観察対象がスワップへ通知し、再計算を引き起こすことを可能にします。 2つめのステップは、要求されたインターフェイスの実装です。isExpiredメソッドのロジックは、十分に単純です。その主要部は、保持されたキャッシュフローの支払日をチェックしながらループします。まだ起こっていない支払を見つけるとすぐに、スワップは満期を迎えていないと報告します。何も見つからないなら、商品は満期を迎えたとなります。この場合、setupExpiredメソッドが呼ばれます。その実装は基底クラスのそれを呼び、従ってInstrumentから継承されたデータメンバーを引き受けます。それからスワップ特有の結果に0をセットします。 最後の要求されたメソッドは、performCalculationsです。計算はCashflorクラスからの2つの外部関数を呼ぶことで行われます。最初の呼び出しつまりnpvは、上で延べたアルゴリズムの率直な翻訳です。将来のキャッシュフローの割り引かれた額を足しながらキャッシュフロー列をまわします。私たちはNPV_変数に2つのレグからの結果の差をセットします。2番目の呼び出しbpsは、キャッシュフロー列のベーシスポイントの感受性(BPS)を計算します。私たちはそれをレグにつき1回呼び、結果を対応するデータメンバーへ保存します。結果は数値誤差を生まないために、errorEstimate_変数はNull Real () (無効な数を指し示す番人の数値として使われる特殊な浮動小数点数)にセットされます。 3番目と最後のステップは、この場合のように、もしクラスが追加の結果を定義するなら行われます。それは、保持された結果を返す前に計算が(なまけて)行われることを保証する、対応したメソッド(ここれは、firstLegBPSとsecondLegBPS)を書くことにあります。 実装はこれで完了です。Instrumentクラスの上で書くことで、Swapクラスはそのコードから利を得ます。したがって、登録呼び出しを除きSwap内に関連コードを書かないにもかかわらず、入力からの通知に従い自動的に結果をキャッシュし再計算するでしょう。 2.1.4 さらなる開発 あなたは、前の例とInstrumentクラス全般の私の扱いに関する欠点に気づいたかもしれません。 一般的にもかかわらず、私たちが実装したSwapクラスは、2つのレグが異なる通貨で支払われる金利スワップを扱うことができません。 もしユーザが同じ通貨でない2つの商品の価値を足し合わせようとしたら、同様の問題は起こるでしょう。ユーザは2つを加算する前に、1つの価値をもう1つの通貨へ手動で変換しなければならないでしょう。 そのような問題は、この実装の1つの弱点です。私たちは、商品やキャッシュフローの価値を表現するためにReal型(つまり単純な浮動小数点数)を使いました。 したがってその結果は、現実世界で付属される通貨情報を持っていません。 もしそのような結果をMoneyクラスの方法で表現するなら、その弱点は取り除かれます。 そのようなクラスのインスタンスは、通貨情報を含んでおり、さらにユーザの設定により、加算や減算の際、自動的に共通通貨へ変換を行うことができます。 そのような開発は、私たちのto-doリストにあります。しかしながらかなり大きな変更でありために、多くの方法に基づいたコードの大部分に影響を与えます。 したがって、リリース1.0では現れません。1.xシリーズである形で導入されるかもしれませんし、将来のリリース2.0の何時かまで待つかもしれません(このために固唾を飲まないでください。数年かかるでしょう)。 別の(より微妙な)弱点は、Swapクラスは抽象化を表現する2つの要素間を明示的に区別することを欠いていることです。 すなわち、約定(キャッシュフローの詳細)を説明したデータと、商品を価格付けるために使われるマーケットデータ(現在のディスカウントカーブ)の明確な分離がありません。 その解決法は、商品に最初の種類のデータ(つまりタームシートに現れるもの)のみを保持し、マーケットデータを別所に確保することです。 これを行う方法は次の節の主題です。 2.2 プライシングエンジン 私たちは前の節で述べた2番目の要求に移ります。 いかなる与えられた商品に対し、唯一のプライシング手法が存在するということは常に当てはまるわけではありません。さらにある人は異なる理由のために複数の方法を使いたいかもしれません。 古典的な教科書の例、ヨーロピアン株式オプションは、私の言い分を述べるのを助けます。 市場価格からのインプライドボラティリティを検索するために解析的なブラック・ショールズ公式の方法を使って、キャリブレートしそれをよりエキゾチックオプションで使うために確率ボラティリティモデルの方法を使って、解析解と比較し有限差分実装を確認するために有限差分スキームの方法を使って、もしくはヨーロピアンオプションをより複雑なものの制御変量として使うためにモンテカルロモデルの方法を使って、このように同一人物が価格付けを行いたいかもしれません。 したがって、私たちは単一の商品が異なる方法で価格付けされることを可能にしたいです。 これが単一の商品型に対して異なるクラスを使うことを強制するような、performCalculationsメソッドの異なる実装を与えることはもちろん望ましくありません。 私たちの例では、基底のEuropianOptionクラスからAnalyticEuropeanOption、McEuropeanOptionと他が派生されるとして結末をつけます。 これは少なくとも2通りで間違いです。概念レベルでは、ヨーロピアンオプションがヨーロピアンオプションであることはヨーロピアンオプションであるとガートルード・スタインが言ったように、単一のものが必要とされる時に異なる実体を導入すべきです。 有用性のレベルでは、実行時にプライシング手法を切り替えることを不可能にします。 解決法は、Strategyパターンを使うこと、つまりおこなわれる計算をカプセル化したオブジェクトを商品がを取るようにします。 私たちはそのようなオブジェクトをプライシングエンジンと呼びました。 与えられた商品は、多数の利用可能なエンジンのいずれか1つを取り、選択されたエンジンに必要な引数を渡し、商品価格と他の要求される量を計算させ、結果を持ってくることができます。したがって、performCalculations()メソッドは、大まかに以下のように実装されます。 void SomeInstrument performCalculations() const { NPV_ = engine_− calculate (arg1, arg2 , . ., argN); } ここで私たちは、仮想のcalculateメソッドはengineインターフェイスで定義され具体的なエンジンで実装されると仮定します。 残念ながら上記のアプローチは、まだ残念な点が残ります。 理想的に私たちは、ディスパッチするコードを単に一回だけ、つまりInstrumentクラスで実装したいです。 しかしながらその書かれたコードは、エンジンが引数の特定の数と型を受け入れることになるため、十分にジェネリックではありません。 商品クラスはおそらく数と型が幅広く異なるデータメンバを持つために、これは明らかに受容できません。 返却される結果に対してもそれは同様です。例えば、利スワップは固定レートと変動スプレッドに対するフェアバリューを返すかもしれませんし、よくあるヨーロピアンオプションは何個かのグリークスを返すかもしれません. 上で概説したものとしての、メソッドを通じて引数をエンジンへ渡すインターフェイスは、したがって2つの望ましくない結果となります。 一つは、異なる商品に対するプライシングエンジンは、異なるインターフェイスを持つだろう点で、それは私たちが単一の基底クラスを定義することを妨げます。 もう一つは、エンジンを呼ぶためのコードは、それぞれの商品クラスで複写されるだろう点です。 このように狂気があります。 私たちが選択した解決法は、引数と結果がいみじくも引数と結果と呼ばれる不透明な構造体の方法で渡されそしてエンジンから受け取ります。 これらから派生しそして商品特有のデータを持つそれらを引数として渡す二つの構造体は、どんなプライシングエンジンでも保持されます。商品は、エンジンと情報を交換するためにそのようなデータを書き込みそして読み込みます。 リスト2.6は、結果としてのPricingEngineクラスのインターフェイスと内部引数と結果クラスさらに手助けGenericEngineクラステンプレートを示します。 後者はPricingEngineインタフェースの大部分を実装し、calculateメソッドの実装のみを特定のエンジンの開発者へ残します。 データのためのドロップボックスとして彼らの使用を楽にするメソッドが引数と結果クラスへ与えられたと見れます。 入力データが書かれた後にarguments validateがその値が有効範囲におさまっているかを確認するために呼ばれ、エンジンが計算を開始する前にresults resetが前回の結果を空にするために呼ばれます。 リスト2.6 PricingEngineと関連するクラスのインターフェイス class PricingEngine public Observable { public class arguments; class results; virtual ~PricingEngine() {} virtual arguments* getArguments() const = 0; virtual const results* getResults() const = 0; virtual void reset() const = 0; virtual void calculate() const = 0; }; class PricingEngine arguments { public virtual ~arguments() {} virtual void validate() const = 0; }; class PricingEngine results { public virtual ~results() {} virtual void reset() = 0; } ; // ArgumentsTypeはartumentsからの派生されなければならない。 // ResultTypeはresultsからである。 template class ArgumentsType, class ResultsType class GenericEngine public PricingEngine { public PricingEngine arguments* getArguments() const { return arguments_; } const PricingEngine results* getResults() const { return results_; } void reset() const { results_.reset(); } protected mutable ArgumentsType arguments_; mutable ResultsType results_; }; 新しいクラスを用意したので、私たちは一般的なperfomCalculationメソッドを書く課題を終えることがここでできます。 すでに述べたStrategyパターンに加え、私たちは与えられた商品が足りないビットを満たすTemplate Methodパターンを使います。 結果としての実装はリスト2.7で示されます。 内部クラスInstrument resultが定義されたことを述べておきます。そのようなクラスはPricingEngine resultsを継承し、どんな商品に対しても提供されなければならない結果を保持します。 リスト2.7 Instrumentクラスの抜粋 class Instrument public LazyObject { public class results; virtual void performCalculations() const { QL_REQUIRE(engine_ , "null pricing engine"); engine_- reset(); setupArguments(engine_- getArguments()); engine_- getArguments()- validate(); engine_- calculate(); fetchResults(engine_- getResults()); } virtual void setupArguments( PricingEngine arguments *) const { QL_FAIL ("setupArguments() not implemented"); } virtual void fetchResults( const PricingEngine results* r) const { const Instrument results* results = dynamic_cast const Value* (r); QL_ENSURE (results != 0, "no results returned"); NPV_ = results- value; errorEstimate_ = results- errorEstimate; } template class T T result (const string tag) const; protected boost shared_ptr PricingEngine engine_; }; class Instrument results public virtual PricingEngine results { public Value() {reset();} void reset() { value = errorEstimate = Null Real (); } Real value; Real errorEstimate; }; performCalculationに関しては、実際の仕事は多くの協働するクラス(商品、プライシングエンジンさらに引数と結果クラス)の間で分割されていることが分かります。 そのような(次の段落で説明される)協力の原動力は、図2.2(オリジナルのpdf参照)で示されるUMLシーケンス図の助けにより最もよく理解されるかもしれません。それらのクラス(とありうる現実の商品)の静的な関係は図2.3(オリジナルのpdf参照)で示されます。 商品のNPVメソッドの呼び出しは、(もし商品が満了しておらず、関係する数量が計算される必要があるなら)最終的にperformCalculationsメソッドの呼び出しを引き起こします。 ここは、商品とプライシングエンジンの相互作用が起こる箇所です。 まず最初に、商品はエンジンが利用可能か確認し、その場合でないなら計算を終了します。 もしエンジンが発見されたら、商品はそれに対して自分自身をリセットするように促します。メッセージは、resetメソッドの用法で商品特有の結果構造体へ転送され、実行の後に、構造体は新しい結果を書き込む準備のできたクリーンな状態になります。 この時点で、Template Methodパターンが舞台に入ります。 商品がプライシングエンジンに、引数構造体を要求し、それは引数へのポインタとして返されます。 ポインタはそれから、商品のsetupArgumentsメソッドへ渡され、それはパターンで可変の部分として動作します。特定の商品に依存して、そのようなメソッドは、渡された引数が正しい型か確認し、データメンバに正しい値を満たすことに取り組みます。 最終的に、引数は、validateメソッドを呼ぶことにより新しく書かれた値に対していかなる必要な確認を行うことを要求されます。 ステージはここで、Strategyパターンの準備が整います。引数セット、選択されたエンジンは、calculateメソッドで実装された、特有の計算を行うように要求されます。 そのような処理の間、エンジンは引数構造体から必要とする入力を読み込み、対応する出力を結果構造体へ書き込むでしょう。 エンジンが仕事を終えた後、制御はInstrumentインスタンスへ戻り、そしてTemplete Methodパターンは展開を続けます。 ここで、呼ばれたメソッドfetchResultsがエンジンに結果を要求し、それらを収容されたデータへのアクセスを得るためダウンキャストし、ししてそのような値を自身のデータメンバへコピーしなければいけません。 Instrumentクラスは、すべての商品に共通の結果を取り込むデフォルトの実装を定義しており、派生クラスはそれを特有の結果を読むように拡張するかもしれません。 2.2.1 例:プレーンバニラオプション 解説した手段が、ある特有の商品を実装するためにどのように使われるかを示す例がここで必要になります。 しかしながら、この目的はライブラリ作者に衝突します。つまり、コードを再利用し、既存のものから新しいクラスを作ることを簡単にするために多くの商品に共通な抽象概念を探すということです。 たとえば、QuantLibにはプレーンバニラオプション(つまりヨーロピアン、アメリカン、バミューダン行使のいずれかの単純なコールとプットの株式オプション)を実装するクラスが存在していますが、そのようなクラスは実際はクラス階層の末端の葉です。 商品クラスをルートに持つようにするため、そのような階層は最初Optionクラスで特殊化し、その後、単一の原資産のオプションを一般化したOneAssetOptionクラスを特殊化し、私たちが興味のあるVanillaOptionクラスを最終的に定義するまで、さらに1、2クラス通り抜けました。 この増殖には良い理由があります。たとえば、OneAssetOptionクラスでのコードは、アジアンオプションで自然に再利用できますが、すべての種類のバスケットオプションを実装する際Optionクラスのコードは再利用に役立ちます。 残念ながらこれは、プレーンオプションを価格付けするコードが、説明した継承の連鎖のすべてのメンバ中に分布するということになり、極端にわかりやすい例には役立ちません。 したがって、私は妥協しなければなりませんでした。 この節では、私はライブラリのクラスと同様の実装ですが、商品クラスから直接継承し、統合されたVannilaOptionクラスを説明します。中間クラスで実装されていたすべてのコードは、インライン、つまり継承ではなくあたかも例題クラスで実装されたかのように示されます。 (以下翻訳中)
https://w.atwiki.jp/enchantwiki/pages/17.html
Class Summary Constructor Attributes Constructor Name and Description enchant.Entity() Entityオブジェクトを作成する. Field Summary Field Attributes Field Name and Description backgroundColor Entityの背景色. buttonMode Entityにボタンの機能を設定する. buttonPressed Entityが押されているかどうか. height Entityの高さ. opacity Entityの透明度. touchEnabled Entityのタッチを有効にするかどうかを指定する. visible Entityを表示するかどうかを指定する. width Entityの横幅. Fields borrowed from class enchant.Node parentNode, scene, x, y Method Summary Method Attributes Method Name and Description intersect(other) Entityの矩形が交差しているかどうかにより衝突判定を行う. within(other, distance) Entityの中心点どうしの距離により衝突判定を行う. Methods borrowed from class enchant.Node moveBy moveToMethods borrowed from class enchant.EventTarget addEventListener dispatchEvent removeEventListner Class Detail enchant.Entity() Entityオブジェクトを作成する. Field Detail backgroundColor Entityの背景色. CSSの color プロパティと同様の形式で指定できる. buttonMode Entityにボタンの機能を設定する. buttonPressed Entityが押されているかどうか. buttonModeがtrueのときだけ機能する. height Entityの高さ. opacity Entityの透明度. 0から1までの値を設定する(0が完全な透明、1が完全な不透明). touchEnabled Entityのタッチを有効にするかどうかを指定する. visible Entityを表示するかどうかを指定する. width Entityの横幅. Method Detail {Boolean}intersect(other) Entityの矩形が交差しているかどうかにより衝突判定を行う. Parameters {*} other衝突判定を行うEntityなどx, y, width, heightプロパティを持ったObject.Returns {Boolean} 衝突判定の結果. {Boolean}within(other, distance) Entityの中心点どうしの距離により衝突判定を行う. Parameters {*} other衝突判定を行うEntityなどx, y, width, heightプロパティを持ったObject.{Number} distanceOptional衝突したと見なす最大の距離. デフォルト値は二つのEntityの横幅と高さの平均.Returns {Boolean} 衝突判定の結果.
https://w.atwiki.jp/cohstatsjp/pages/222.html
Infantry PIAT Commandos Contents 1 Tactics 2 History 3 Built From 3.1 Glider HQ 4 Squad Abilities 4.1 Commando Throw Grenade 4.2 Concealing Smoke 5 Squad Weapons 5.1 Sten SMG 5.2 Projector Infantry Anti Tank 5.3 Commando Demolitions Charge 5.4 Commando Grenade PIAT Commandos Squad Size 6 Capture Rate 1 Sup Threshold 0.35 Health 390 Sight 35 Pin Threshold 0.8 Cost 510 Detection 7/0 Recovery Rate 0.012 Hotkey P Population 6 Time 36 Retreat Modifier 0.5 Target Type infantry_soldier Upkeep 9.0144 Reinforce Cost 0.4119 Critical Type infantry Squad Slots 4 Reinforce Time 1.5 Tactics PIAT Commandos can only be created in a glider HQ. Unlike the Panzerschreck, the Recoilless Rifle, or the Bazooka, the PIAT fires upward and ontop of the target. This means that the target must be stationary to be hit. PIATs seem to perform better in buildings, when they are firing downwards. When taking on heavy armor, when engaging it drop smoke and run to the rear of the tank. This way the you can inflict maximum damage without taking any damage. PIATs are able to be fired over hedges or buildings so it is possible to fire on armour and not get fired back upon, and as the enemy will not expect to he hit first you should be able to get 1 or 2 shots off before he notices. History The Airlanding troops of the British Airborne were tasked with assaulting German positions prior to the D-Day landings. They landed their gliders in Coup de Main assaults on enemy positions, surprising the German defenders in risky attacks. They were all volunteers, and well-trained for their dangerous job, and continued to act as elite ground infantry once the airborne operations were over. The Projector, Infantry, Anti Tank (PIAT), was one of the earlier anti-tank weapons using a high explosive anti-tank projectile. It was developed by the British starting in 1941, reaching the field in time for the invasion of Sicily in 1943. The PIAT was an unusual infantry anti-tank weapon. It was comparatively quiet and smokeless, with no backblast. This meant that, unlike the American Bazooka or German Panzerfaust and Panzerschreck, it could be fired from an enclosed space, and would not give away its position as soon as the weapon was fired. However, it was more cumbersome than its counterparts, and in many circumstances it could be difficult to reload. The Commandos in Company of Heroes are actually Airlanding troops from an Airborne Division, or SAS (Special Air Service) Commandos. Their distinctive red berets indicate they re airborne troops, or SAS troops, as Commandos wore green berets. Commandos came from several branches (Royal Army Commandos, Royal Marine Commandos, and Royal Navy Commandos) and none were involved in glider operations. Built From Glider HQ [Expand][Hide] Cost 100 Activation targeted Duration _ Target tp_position Recharge 75 Hotkey Effects Request a Glider Headquarters capable of producing Mortar Commandos, PIAT Commandos, and Heavy Machine Gun Commmandos. ESee Ability Glider HQ for details. Squad Abilities Commando Throw Grenade [Expand][Hide] Cost 25 Activation targeted Duration _ Target tp_any Recharge 30 Hotkey N Effects The Squad will throw a Mk2 Pineapple Grenade. ESee Ability Commando Throw Grenade for details. Concealing Smoke [Expand][Hide] Cost Activation timed Duration 14 Target tp_any Recharge 30 Hotkey S Effects Break any suppression or pinning effects on the squad and envelope the Commandos in concealing smoke. ESee Ability Concealing Smoke for details. Squad Weapons Sten SMG [Expand][Hide] Weapon Sten SMG See Weapon Sten SMG for details. Projector Infantry Anti Tank [Expand][Hide] Weapon Projector Infantry Anti Tank See Weapon Projector Infantry Anti Tank for details. Commando Demolitions Charge [Expand][Hide] Weapon Commando Demolitions Charge See Weapon Commando Demolitions Charge for details. Commando Grenade [Expand][Hide] Weapon Commando Grenade See Weapon Commando Grenade for details. Retrieved from http //coh-stats.com/Infantry PIAT_Commandos
https://w.atwiki.jp/xboxonescore/pages/222.html
Just Cause 3 項目数:66(47 + 7 + 6 + 6) 総ポイント:1605(1000 + 225 + 190 + 190) 難易度: ~910:★★☆☆☆ ~1000:★★★☆☆(「オール・ザ・ギアーズ」「勝者の総取り、再び」) DLC :★☆☆☆☆ コンプまで70時間前後。(DLCは各2時間程度) キャンペーンをクリアすると「DRM復活とファストトラベル」が新たに選択できるようになる。 これにより指定した区画を解放前の状態に戻してリプレイが出来るので実質的に時限実績は無し。 2016/03/30にDLC第一弾配信。 2016/06/08にDLC第二弾配信。 2016/08/18にDLC第三弾配信。 DLCは本編未クリアでもプレイ可能。 カオスの申し子 1000カオス獲得しろ 10 混沌の使者 100000カオス獲得しろ 30 混乱と破壊の英雄 1000000カオス獲得しろ 45 …銃を使わずに 武器、グレネード、設置型爆薬を使わずに軍事基地内のカオスオブジェクトをすべて破壊しろ 20 愛しのロケットマン 敵をガスボンベに縛りつけろ 20 スパゲッティ・ウェスタン 乗り物に乗ったまま基地のカオスオブジェクトをすべて破壊しろ 20 いってらっしゃい! 敵の兵士にブースター爆薬を取り付け、空に飛ばせ 20 勝ち逃げ チャレンジで他のプレイヤーのスコアを上回れ 10 ギアを入れろよ! チャレンジで3ギア以上獲得しろ 10 前人未到のギア チャレンジで5ギアを獲得しろ 15 真のギアゲッター 各タイプのチャレンジで3ギア以上獲得しろ 20 オール・ザ・ギアーズ 全てのチャレンジで5ギアを獲得しろ 40 アース・ウィンド・アンド・シー 車両、船舶、航空機の物資投下をそれぞれ1種類以上アンロックしろ 25 駐車監視員 入手可能なビークルをすべてマリオのガレージに運んで集結させろ 35 墓参り 太古の墓に敬意を払え 15 死者に敬意を 反乱軍の慰霊碑すべてに灯りをともせ 20 ある男の日記 ディラベロの音声テープをすべて見つけ出せ 20 素晴らしき古きもの 年代物の武器やマシンパーツを見つけろ 20 究極の命知らず メディチ中の全スタントジャンプ地点を制覇しろ 20 草の根分けても メディチ中に散らばっているコレクタブルをすべて見つけろ 35 トップ・オブ・ザ・ワールド メディチで最高峰の地点に立て 20 挑戦はいつでも歓迎だ 挑戦を受けたスコアを上回れ 15 レコード・コレクター 全てのレコードを記録しろ 20 ビバ・レボリューション 地区を解放しろ 15 配管工事のやり直し フォンテ諸島のFOWを無力化する 10 パン屋の1ダース 13の区画を解放しろ 20 ライジング・ドラコン ドラコン諸島を完全に解放しろ 30 決して希望を失うな フォンテ諸島を完全に解放しろ 30 ハート・オブ・ストーン ストリアーテ島を完全に解放しろ 30 フルアンロック・フル装備 物資投下メニューにある入手可能な武器とビークルすべてをアンロックしろ 40 勝者の総取り、再び 100% Just Cause 3 50 キャン・タッチ・ディス レコードで新たなプレイヤーに挑戦しろ 10 神のお導きを 修道院にかくまってもらいHEATレベル5を解除しろ 10 MOD初心者 最初のギアMODをアンロックして有効にしろ 10 MODスペシャリスト 1つのカテゴリーのすべてのギアMODをアンロックしろ 20 MODヲタク 各ギアMODをそれぞれ1分以上作動させろ 35 ファースト エンカウンター エンカウンターをクリアしろ 10 需要と供給 エンカウンターをクリアして、補給地点を10個アンロックしろ 15 聖なる隠れ家 エンカウンターをクリアして、HEATを解除する神父を3人アンロックしろ 15 秘密の実績 里帰りを満喫してくれ ストーリーミッション 「故郷へようこそ」をクリアしろ 10 最悪の災厄 ストーリーミッション 「散々な反応」をクリアしろ 15 バベリウムの威力 ストーリーミッション 「長く危険な道」をクリアしろ 15 最低の採鉱場 ストーリーミッション 「大脱走」をクリアしろ 15 だまれミサイルめ ストーリーミッション 「ミサイル・カウボーイ」をクリアしろ 20 今こそ反撃のとき ストーリーミッション 「ブルーにこんがらがって」をクリアしろ 20 多くの間違いと多くの成功 ストーリーミッション 「世界の破壊者」をクリアしろ 20 メディチの子 ストーリーミッション 「メディチの子」をクリアしろ 30 スカイフォートレス・エクスパンション:225G(\1296) 魚のように… 空を飛ぶ! バベリウムウィングスーツを使用して水中から飛び立て 10 先見の明 バレルロールでミサイルを10回避けろ 35 マイ・ネーム・イズ・イーデン スカイフォートレス・エクスパンションの最後のミッションを達成して、ストーリーをクリアしろ 50 幸運を! 「旧友」(「システム制御」のボス)を倒せ 35 在庫管理 各種類のドローンを1機以上破壊しろ 10 専門家 スカイフォートレス・エクスパンションの全てのチャレンジで1ギア以上獲得しろ 35 真の達人 スカイフォートレス・エクスパンションの全てのチャレンジで5ギアを獲得しろ 50 Mechランドアサルト・エクスパンション:190G(¥1296) 闇の中心で Mechランドアサルト・エクスパンションの最後のミッションを達成して、ストーリーをクリアしろ 50 公認eDENMechオペレーター Mechランドアサルト・エクスパンションの全てのチャレンジで1ギア以上獲得しろ 35 eDEN年間最優秀社員 Mechランドアサルト・エクスパンションの全てのチャレンジで5ギアを獲得しろ 50 Mechライダー 最初のMechを乗っ取る 10 フリーバード 収容所を3ヶ所解放しろ 10 これは飛び道具ではない Mechのフォースパルスで敵車両30個破壊しろ 35 バベリウム・シーハイスト・エクスパンション:190G(¥648) 最後の仕事 バベリウム・シーハイスト・エクスパンションの最終ミッションをクリアし、ストーリーを完了させろ 50 ルチアドールマスター ロケットボートで敵ヘリコプターを5機倒せ 20 フライング・メディチマン ロケットボートで飛行中に敵機を10台破壊しろ 40 ボートを買わなきゃ ロケットボート「ルーチアドール」を手に入れろ 20 雷の一撃! eDENスパークで敵ヘリコプターを1機倒せ 20 持続力 1回のeDENスパークで敵を10人倒す 40 …銃を使わずに 対象となる軍事基地とは「中央指令」と「基地」で、小規模の「拠点」は対象外。 オブジェクトの破壊に使用できるのはデュアル・フックと近接攻撃のみ。 自ら発砲しなければ、敵兵の誤射によりオブジェクトが破壊されても問題なし。 また制圧中に死亡してもすぐ区画内に戻れば無効とならず、そのまま継続して解放すれば解除出来る。 一旦キャンペーンをクリアした後に、ロープMODを充実させてからDRM復活を利用して狙うのが楽。 https //www.youtube.com/watch?v=eSmVFOD9xpY スパゲッティ・ウェスタン こちらも「中央指令」もしくは「基地」が対象。 車両から降りてスイッチを操作しなくてはならないタービン等がある基地では解除できない。 シールドが張れるIMPERIOR BAVARIUM TANKを使えば破壊されにくいため解除も比較的容易。 もし全ての基地を解放してしまった場合、クリア後にDRM復活を利用すれば良い。 https //www.youtube.com/watch?v=u3ldInpNvFE いってらっしゃい! 爆薬MODのブースター爆薬を有効にしてからGE-64を敵兵士に付着させて起爆すれば解除。 近接攻撃やリールキックでノックアウトさせれば付けやすい。 勝ち逃げ いずれかのチャレンジでフレンドもしくはランダムで選出されたプレイヤーの記録を上回れば解除。 サブタグで低めの成績を記録しておけば楽。 オール・ザ・ギアーズ https //www.youtube.com/playlist?list=PLRr5L69yg_kGiebTLDUFPw_d5LJWP6HdI ディストラクションデフォルトの装備では5ギアは難しいチャレンジも多い。本格的に狙うのは武器や車両が揃ってからになる。 なかでも「グラップルマニア」はMODでロープ強度を強化、「船舶マニアⅠ」は主砲があるREBEL CORVETTEを入手後でないと厳しい。 車両や船舶などはスコアは固定だが倍率は上がる。最初に車両やスコアが小さいオブジェクトなどを破壊して、8倍にしてからスコアの大きいオブジェクトを狙う。 攻撃ヘリが基地内もしくは上空にある場合は、指定された武器ではなくヘリに乗って破壊したほうが楽な場合も多い。 どのチャレンジでもデュアル・フックの巻取りは使用可能。開始直後にオブジェクトにデュアル・フックを仕込んでおけば、コンボが途切れそうなときに繋ぎに使える。 クラッシュボム準備が必要なMODや装備はなくデフォルトで5ギア可能。 とにかくクラッシュして減速しないことを心がければ難しいチャレンジはない。 シューティング武器MODの精密射撃さえアンロックしておけば難しくないはず。 スクラップスクランブルチャレンジ開始直後に車両をバックしてロープが短めになるよう球体と接続すれば、慣性がかかりにくくなり大幅に楽になる。 ウィングスーツ必須なMODはないため逆に実力勝負になる。何度も失敗して挙動を覚えるしかない。 ただしスピードが乗ってしまうようなチャレンジではエアブレーキのMODは便利。(クイッククローズは外しておく) モンタナ地区とファルコ地区の計4つが全チャレンジ中で最難関。これらはエアブレーキの使い所が肝なので動画を参考に。 ゴール直前の平面部で距離が伸びず墜落してしまうのは、手前の下降パートで失速させてしまっているのが大半の原因。最後の下降パートではエアブレーキや左スティックによる上昇は極力控える。 どうしてもゴール直前で距離が足りない場合は、進行方向の地面にリールを撃って加速することも可能。ただし地面スレスレになってから撃っても激突するだけなので、まだ高さに多少余裕があるときに先出しが必要。 ロードレースニトロⅡがないと5ギアは不可能なチャレンジが大半。まずは一通りチャレンジを回って出来る限りギアを回収し、ニトロⅡを入手することが先決。 車両はスポーツカーのMUGELLO FARINA DUOがベスト。またダートコースでは軍用車両のURGA OGAR 7 V8が扱いやすい。 バイク限定のチャレンジなどでFARINA DUOが選択できない場合でも、チャレンジ開始前に物資投下しておけば使用することができる。 「カントリー・スプリント」はオフロードのINCENDIO MONSTER TRUCKを使えば楽。 エアレースやはりエア・ニトロⅡが必須のチャレンジが大半。 飛行機はCS7 THNDERHAWK、ヘリ限定のチャレンジではURGA MSTITELが最速(もしくはCS NAVAJO)。 飛行機の場合は特に一個先のリングの位置を常に把握しておくように心がける。リングをくぐったら早めに次のリングへ方向修正すれば、機体を大きく傾けなくてすむので水平位置にリカバリしやすくなる。 シーレース同様にシー・ニトロⅡを入手してからが本番。 最高速度ではSQUALO X7が最速だが、旋回能力が高いデフォルトのPESCESPADA SSでも十分クリア可能。 波が高い場所ではニトロを全開で使用すると転覆しやすいので控えめに使用する。 駐車監視員 大半の車両はアザーカーとして走行中のものを車両MODの車両探知機を頼りに探すことになる。 以下のリストは一般道を走行していないレア車両。 一部の車両は固定ではなくランダムのため、動画の場所に無かった場合は一旦FTして繰り返し訪れると良い。 https //www.youtube.com/watch?v=qnp-oPyd_Oo オフロードAutostraad Kletterer 300 - 4 30 ヴィンテージカーWeimaraner W3 - 5 06 スポーツカー 13 Vigueur - 14 51 Verdeleon 3 - 17 33 Mugello Farina Duo - 18 15 多目的車両Autostraad Reisender 7 - 19 17 船舶Squalo X7 - 29 33https //www.youtube.com/watch?v=MOeDOet8I5g 上記動画の場所の方がお勧め。直接ヘリでガレージに運ぶのではなく、一旦近隣の海にボートを着水させてから海路で運ぶ方が楽。 ヘリコプターNews Chopper - 32 58 飛行機Stria Ghibli - 33 38 トップ・オブ・ザ・ワールド https //www.youtube.com/watch?v=25JhvoTpVOc 挑戦はいつでも歓迎だ これはチャレンジではなくレコードスコアが対象で、他のプレイヤーが送ってきた挑戦の概要はメールボックスで確認できる。 挑戦を送れるのは相手の成績を上回っているレコードだけなので、自分の成績が伸びていない序盤のうちにサブタグから送ってしまうのが手っ取り早い。(送り方は「キャン・タッチ・ディス」を参照) なお挑戦に武器や車両が指定されている場合は、同じ物を使って上回らないと達成にならないので注意。 レコード・コレクター レコードスコアの全項目にスコアを記録すれば解除で成績の内容は問わない。 エンドレスランナー:https //www.youtube.com/watch?v=-egIjNftD7Y (Act.1「ミサイル・カウボーイ」完了後) 勝者の総取り、再び 100%の内訳はステータスで確認できる。 全区画を解放 キャンペーンクリア 全チャレンジで5ギア獲得 マリオのガレージで全ビークル回収 全コレクタブル入手 キャン・タッチ・ディス メニューからランキング→レコードスコアでYボタンで、フレンドリストの他のプレイヤーに挑戦状を送ることが出来る。 自分のスコアが相手より上回っている場合か、もしくはJust Cause 3を未プレイの相手に送ることが可能。 神のお導きを 軍事基地などで少し暴れればすぐにHEATレベル5になる。 その後修道院まで逃げて入り口にいる神父に話しかければ解除。 需要と供給 街や拠点周辺でしばらく待機していると、薄い緑のマーカーで表示されるエンカウンターイベントが発生することがある。 このエンカウンターイベントのうち、車両や物資の輸送やガス欠車両の牽引をすると郊外にビーコン/フレアの補給地点が現れる。 これを繰り返して10箇所の補給地点をアンロックすると解除。 聖なる隠れ家 エンカウンターイベントのうち、主に拉致されている反乱軍を救助すると修道院がマップ上に現れる。 これを繰り返して3箇所の修道院をアンロックすると解除。 スカイフォートレス バベリウムウイングスーツを本編や他のDLCに持ち込めるため、先にプレイすると楽になる。 魚のように… 空を飛ぶ! 水中では不可、水面からY長押しで飛びたてる。 先見の明 大型のドローンが撃ってくるミサイルに追尾されると、警告が出るので『回避しろ』と出たらLスティックを任意の方向に倒しY。 ミッション中ならひっきりなしに飛び交うが、場合によっては即回避が必要な場合もあるので注意。 在庫管理 ドローンは小型、中型、大型の3種。 専門家、真の達人 ウイングスーツチャレンジが3つ、ドローン撃破チャレンジが1つ。 ウイングスーツチャレンジは本編と違いブースターがあるため、いざとなればコースアウトしないように飛び続けるだけで5ギア達成できてしまう。 (ただしチャレンジIだけはある程度それをしないと5ギアにならない?) Mechランドアサルト 地区の開放がやや面倒。 捕虜及びリーダーと、武器庫を解放するとしばらくの間敵の進行を阻止する必要がある。 敵自体が固く、ドローンやMechもくる上一部の地域はやたら広い。 ただ、解放した捕虜も戦闘に加わるため右往左往するほどではない。 これは飛び道具ではない フォースパルスは初期状態では車両に対しては力不足なため、早めにチャレンジを達成して強化しておくのを推奨。 eDEN年間最優秀社員 MECHアリーナチャレンジが2つ。どちらも星5を取るのはさほど難しくない。 敵を素早く倒すことでタイムボーナスが入る他、フォースパルスや投げ飛ばしで敵を倒す事でスタイルボーナスが加算されるので意識しておくとスコアを伸ばしやすい。 尚、パラシュート部隊は展開される前に輸送機を撃ち落とすことで一網打尽にできる。 バベリウム・シーハイスト 収集品があるが、実績には無関係。 全て入手しても何かが解放されるわけではなく、あくまでストーリー補完用。 回収するのであれば、衛星基地以外の洋上に浮かぶ構造物にもあるので、近寄って確認する事。 フライング・メディチマン 確実に取るのであれば、物資として調達したルーチアドールで、MODのブーストジャンプ中に倒す。 持続力 ミッション中に解除は無理と思われる。 ミッションクリア後に解放されるチャレンジを5ギアでクリアし、eDEN SPARKをMODで強化する。(チャレンジ自体はヘリを優先して倒せば余裕) その後、ストリアーテ島にある『グアルディア・バル・デ・マー5』に向かい、DRM復活後コンテナ側から全員倒していく。 この際始める前に増援を呼ばせ、その増援から全員を薙ぎ払えば確実か。 倒せたかどうかはレコードを見れば分かるが、何故か解除されない場合がある。 その場合暫く待てば解除される。
https://w.atwiki.jp/qhxptgzn/pages/18.html
now the whole giant Jianmen Bodystockings UK on Tang wind, just like their own home is not much difference. Giant Jianmen drugstore too, from pharmacies to find the corresponding tools, Tang Feng in the kitchen doorway busy.Of this, only cangjing ge of the Scriptures is random, the majority of these scriptures are scattered. The Scriptures or some less ah. Huo Yuanzhen is going to go to India to go to. Tianzhu Brahmin theocratic revival, the destruction of Buddhist roots, Buddhists Bodystockings UK do Holly King now, but nothing to revive Buddhism scriptures, hope almost become the bubble. "This Everfount scriptures, remained in the Shaolin words, it is not able to carry forward the Confucian classics, it must be transmitted to the world, to make it real value. And India this Buddhist place of origin, is the best place to pass through. Just some scriptures, past is useless ah, an utterly inadequate measure, not very useful, after all, Tianzhu country is not small, has a large population. Bodystockings UK To see the abbot looked at the book, seems to be some disappointment, a lamp is to ask the reason. Looked at the lamp, Huo Yuanzhen thought the matter with him it doesn t matter what you think of yourself by India, the desire to say it out. A hearing, suddenly laughed "the Abbot s brother, you are smart as a rule, confused at that time, you go to India Chuan, difficult to walk with the Confucian classics can not go?" Huo Yuanzhen wanted to think "this is not to get me, Tianzhu to Shaolin canon, to show good faith, we must let them personally to the people, come to me from Tianzhu Tang, I can come to my Shaolin Temple, the Sutra preached to Bodystockings UK them, or if I send them directly, lest would think I is a liar." "If that is so, the Abbot s brother also worry about what the teacher younger brother, although has not been to India, but also know the distance I Tang numerous hills and streams, walking, not one or two years if it is not to." Huo Yuanzhen nodded "yes, Tianzhu distance I Tang tens of thousands of miles away, but the distance or distance in a straight line, if go up, travel over land and water, if it is to be more than one hundred thousand." Bodystockings UK "So that, more than one hundred thousand miles, but who can guarantee that what things up period, they come from more than a year, I m afraid is fast, and we Shaolin every day a new book, a year later, we at least have more than 300 the scriptures can teach it, if two years before he came to Shaolin, then we will have seven hundred or eight hundred book, if they have three years to come, we gave them one thousand this isn t a problem, all the Abbot s brother should not see now how many books, Bodystockings UK but should see a few years later we will have how many scriptures." Listen to the whole words, Huo Yuanzhen see light suddenly. How you are suddenly becomes stupid, really is smart as a rule, confused at that time. What with numbers now Scripture, is this not any use, oneself also not Pidianpidian to India to the Sutra, wait for them to take, is serious. Man is not so, you are more active, the more they will cherish, only hard work, can regard as the treasure. You need to do, is to go to India, to find the Sutra personally. And this from people not much, can t let they sent an army to come over, so learn there is no taste. But this after what to take, how to make them believe that Tang Shaolin Temple has massive book, how to make their authorities Bodystockings UK believe onBut before and after half an hour of time, a bowl of medicine have been fried well, Tang Feng holding firmly, rushed to the forest if the kite to rest. Lin Ruoyuan is now in a coma state, a bowl of medicine to feed it, she only drank half, the remaining half full flow to clothes. But it is no way. Until after feeding the antidote, Tang Feng just slowly exhaled. The forest if the kite poisoning death, is also All is well that ends well, has a relationship with the intelligence failures Bodystockings UK - https //www.amoretu.com/sexy-hosiery-bodystockings of the enemy. If the enemy was the drug dose and then increased three times, Tang wind even more capabilities, it is also impossible to save the forest if the kite, and Lin Ruoyuan also not to stick to the Tang wind to aid. "Lin sister all right?" Easy if morning aside asked anxiously. "After the wake is estimated that there will be a few days time did not have the strength to recover just fine, etc.." Tang Feng said, after all the poison in the feature points in soft rib loose this kind of poison, so weak is the embodiment of a normal. "What do we do now?" Imperceptibly, easy if morning have Tang wind as backbone. Days show here only a few people, not particularly powerful master, they come here just for the sake of grenade, which know fall into such dangerous situation? "Here should not stay long!" Tang Feng, "easy to master, you let the sisters quickly fire to cook, eat and then I send you back soo. Let a few people make a stretcher, the aunt carried back. On the rockery, near the wells can not be reused, and I have been poisoned, water if the water must go to other well lane." Although the use of poison to kill hundreds of the enemy, but in three Pope door hands here certainly more than this number, once they had answered a God to come, is bound to suffer violent retribution. If you stay here, only await one s doom. "Good." Easy if morning nodded. Although heart evil spirit a not easy if morning, also want to go to the three Pope door in the side of the hall opened into a scene, even lose his life also not to hesitate to, but she knew now is not the time, The coming days would be long.
https://w.atwiki.jp/chex/pages/319.html
Tips This page is a collection of fine materials and techniques those are not written in the lectures. From local minor tricks to practical major technologies, let s be adding more techniques that come up with. TipsRotation speed of during rotational movement Conditions of rotation jump Rotation jump utilizing Auto-Rotate Targ. The behavior of the rotation jump Offset move Simplified focused lock-on About the turning when firing Elevation defect of gun type arms Control of the surface-to-air lock-on by toroidal range designation Decrease in the stability when they're struck Shooting during overturning Attack on the ground types using anti-aircraft aerial mines Attack on the flying types using anti-ground aerial mines Forced termination of combat by out of fuel Option lasts as long as energy endures Stop firing during special moves involving firing Flying OKEs resisting high gravity Rotation speed of during rotational movement “Rotation speed is reduced while turn on the Auto-Rotate Targ, when you start to move in after one or more frames.” (It is displayed as "Forward + Clockwise" and the like in information) By performing Halt rotate chip after one or more frames from that state, It is possible to perform the rotational movement while maintaining the rotating speed of the original (Display becomes "Forward", etc.), let us remember the case of performing rotational movement. Incidentally, even when performing the rotational movement by Move chips and Rotate chips, rotation speed is reduced. Since there is no way to increase the rotation speed in this case, in the scene that can activate Auto-Rotate Targ., it would be better to use it as much as possible. Conditions of rotation jump You can perform the rotation jump when you executing Jump while rotating by Rotate chips. But… “Rotation jump does not occur if it is moving and Auto-Rotate Targ. is on.” When you perform the rotation jump, Halt moving or turn off the Auto-Rotate Targ. is necessary. Examples that conditions of rotation jump occur and do not occur are shown in the link. http //cosmo-ko.cocolog-nifty.com/blog/2011/03/post-2d14.html Note that there is a need to use the Rotate chip since rotation jump does not occur in the jump and Auto-Rotate. It is noted also that you cannot perform rotation jump if you execute Rotate during jump. If you do not design the program consciously, you cannot perform the rotation jump accurately. It is good to remember when you are designing legged OKEs. Rotation jump utilizing Auto-Rotate Targ. Rotation jump does not occur if Auto-Rotate Targ. is on. But in a state in which it is displayed as "Forward + Clockwise" and the like since Auto-Rotate Targ is on, it is possible to perform the rotation jump if you execute in the order of turn off Auto-Rotate Targ. → Jump. For example, rotation jump occurs without use of Rotate chip when you programmed in this way. Although it should be noted that the rotational speed becomes slow as previously described and fine adjustment does not work on the angle of rotation of jumping as described below, if you incorporate well, it is possible to implement a rotation jump with a small number of chips. The behavior of the rotation jump Depending on the angle of rotation that is specified before the jump, turning angle of the rotation jump is determined in one of several stages of the angle prescribed. (Two-stage seems to many, but not yet examined on all models) It is necessary to note that even if you specify the angle finely such as 60 degrees or 30 degrees, it is rotated at an angle prescribed in each body. However, if it was not rotated to the specified angle until the landing from a jump, the rotation is performed during the landing motion. Although the jump handled as normal if you execute Halt rotation after one or more frames of rotation jump, it rotate to the same angle as the rotation jump since rotational inertia is not canceled. Rotation jump consumes more fuel than a normal jump. Fuel efficiency is improved if you execute Halt rotation during rotation jump because fuel consumption also becomes the same as the normal jump. Offset move The move method of approaching the opponent while avoiding bullets by keep moving forward while capturing opponent diagonally forward. The technique is mainly used in vehicle type, but it is easy to leverage this in flying types or bodies perform melee. The easy way to perform the offset movement is, to set the direction of Auto-Rotate Targ. slightly diagonal than the right in front and just move (mainly forward). The case of moving forward, approaching an opponent sooner and easier to fire as orientation closer to the front but easier to be struck, it tends to be unlikely to be struck as orientation farther to the front but more difficult to fire and harder to approach the opponent. Tractable orientation is 10 ~ 30 deg. approximately, but it is preferable to adjust to such as proper distance and moving speed of the bodies to be used. Simplified focused lock-on Place friendly OKEs in tandem, lock on giving priority to opponent of front when the battle start, then it becomes the state that all the friendly is locking on the same opponent. On account of the formation, the head is likely to be exposed to crossfire and tends to interfere with the line of fire of the friendly. It is a valid technique when it is desired to realize focused lock-on with a small number of chips. About the turning when firing In a state of locking on the target, when performing the firing using the chips of Shoot Reticle, Firing Direction, or Select and Fire, phenomenon that the body is turning to firing direction occurs in some bodies and throwing of grenades. Bodies that occur are as follows. (The armaments that occur are in parentheses) Negroni (Weapon 1) Eggnog (Weapon 2) Norlander (Weapon 1) Moonlight (Weapon 2) Gravestone (Weapon 1 and 2) Fried (All weapons) Priest (All weapons) Mockingbird (All weapons) Bodies that the turning occurs in all weapons have narrow angle of fire. But because the turning occurs, hit can be expected when you perform the firing under conditions of wider angle of fire than its own. On the other hand, if you do not want to capture the front opponents such as orbiting near the wall, it is necessary to avoid occurring turning by using Firing Direction chip to fire in front. In the case of two-legged bodies, since to be able to capture the opponent in front of them even in the middle of a jump, it would be better to make active use. Elevation defect of gun type arms When gun type arms are fired toward depression and elevation angle of more than 63 degrees (straight up or down), bullets are fired to unnatural angle different from the direction of the arms. Therefore, gun type arms are not possible to aim the depression and elevation angle more than 63 degrees. However, only beam guns can be fired at the same elevation as they appear. When the shotgun shell was shot just below or just above, since the angle is limited to 63 degrees to each bullet, it scatters significantly. Submunitions of explosives and rockets are also limited to an angle of 63 degrees. Depression or elevation is different for each OKE. Not a few OKEs can be moved their gun barrel up to near 90 degrees but because of this phenomenon, called the elevation defect, cannot be shooting straight up or down when you use the arms except beam guns. For this specification, beam guns have advantageous performance of air-to-ground and ground-to-air among the gun type arms. Control of the surface-to-air lock-on by toroidal range designation Since many of ground types have limited elevation angle, it is very difficult to score a hit by the main armament on the flying opponents which are located just above. It is possible to specify a toroidal range, such as 50m ~ 800m to various determinations such as lock-on in EXA. By using this feature, it becomes possible to lock on another opponent while ignoring the flying types which are too close to attack. It will be a particularly important technique when using OKEs affected by the elevation defect. Decrease in the stability when they re struck OKEs become enormous stumble state when subjected to high damage (overturning motion occurs). Stability decreases significantly during overturning. Even when they re shot by beam gun at an additional, overturning motion continues. If it is able to continue to hit the opponents in that state, it s possible to keep overturning the opponents, put them to destruction eventually. In the case of OKEs that overturn opponents easily (such as equipping canon, approaching to place mines, be good at melee), additional attack operation when the opponents struck may be decisive factor of victory. Shooting during overturning Although it is not possible to take most of the actions during overturning, shooting spree can be executed.You can deal with mines near or missiles of additional attack by Sonic Blaster and can interfere with the pursuit of the opponents by spraying mines or missiles Attack on the ground types using anti-aircraft aerial mines Anti-aircraft aerial mine can be made to hit even on the ground types if fired at close range because the contact detection begins immediately after it is fired. (To hit the Kraken to ground type opponent that is performing charge is known as an effective tactic to counter the charge) Similarly, to hit the land mine on flying types is also not impossible. But this is not practical. Attack on the flying types using anti-ground aerial mines Anti-ground aerial mines have characteristics that they are hovering above 60 m raised from fired altitude. Therefore, when firing the anti-ground mines to a high altitude by a flying type or Special Move of Tripod, they can be reacted and attack to flying types fighting in 100m altitude. Forced termination of combat by out of fuel When the predetermined time has elapsed in a state that all surviving OKEs become incapacitated by out of fuel, the battle is terminated and the determination of win or loss is made by the Remaining OKEs or Durability Left % at that time. Needs attention that the battle is terminated even though can be re-act since it is equipped with Regeneration Armor. Option lasts as long as energy endures For options involving the consumption of energy for use, if the energy of the body becomes empty while option is activated, its use is interrupted. Options that can be performed without consuming the energy such as Self-Repair System and Self-Destruction System will not be interrupted. Stop firing during special moves involving firing If you execute Halt fire during special moves involving firing, it is possible to interrupt the firing and remain only motion of special moves. However, even though it continues to stop the firing, only one shot is fired. (There is a possible case to cancel first shot if you execute firing in advance and then perform special move in reload time) Flying OKEs resisting high gravity Flying type will crash immediately after the battle starts at High-Gravity Facility, but it is possible to avoid crashing in a state sticking to the ground by continuing to cancel some operations such as special moves. Note 1st high-gravity flight tournament
https://w.atwiki.jp/anison-rap/pages/1080.html
【曲名】 CALL OF JUSTICE 【アーティスト】 KOPERU with 008(ピュンマ) 【歌詞】 【作詞】 KOPERU 【作曲】 DJ WATARAI 【編曲】 KEN THE 390 【作品】 CYBORG009 CALL OF JUSTICE 【メディア】 アニメ映画 【テーマ】 コラボレーション曲 【初出】 2016年 【備考】 九人の戦鬼と九人のラッパーによる公式コラボ曲。あだ名は人魚。映画の008はCV 石谷春貴。 映画公式サイト http //www.cyborg009.jp/
https://w.atwiki.jp/multiquote/pages/20.html
Cantico di Natale Marley was dead to begin with. There is no doubt whatever about that. The register of his burial was signed by the clergyman, the clerk, the undertaker, and the chief mourner. Marley, prima di tutto, era morto. Niente dubbio su questo. Il registro mortuario portava le firme del prete, del chierico, dell appaltatore delle pompe funebri e della persona che aveva guidato il mortoro. Scrooge signed it. And Scrooge s name was good upon Change, for anything he chose to put his hand to. Old Marley was as dead as a door-nail. Scrooge vi aveva apposto la sua e il nome di Scrooge, su qualunque fogliaccio fosse scritto, valeva tant oro. Il vecchio Marley era proprio morto per quanto è morto, come diciamo noi, un chiodo di porta. Mind! I don t mean to say that I know, of my own knowledge, what there is particularly dead about a door-nail. I might have been inclined, myself, to regard a coffin-nail as the deadest piece of ironmongery in the trade. Badiamo! non voglio mica dare ad intendere che io sappia molto bene che cosa ci sia di morto in un chiodo di porta. Per conto mio, sarei stato disposto a pensare che il pezzo più morto di tutta la ferrareccia fosse un chiodo di cataletto. But the wisdom of our ancestors is in the simile; and my unhallowed hands shall not disturb it, or the Country s done for. You will therefore permit me to repeat, emphatically, that Marley was as dead as a door-nail. Ma poiché la saggezza dei nostri nonni sfolgora nelle similitudini, non io vi toccherò con sacrilega mano; se no, il paese è bell e ito. Lasciatemi dunque ripetere, solennemente, che Marley era morto com è morto un chiodo di porta.
https://w.atwiki.jp/bj_hikosiki/pages/30.html
主な孵化したタマゴ ゴッドエッグ 効果 世界情勢を変更(完全指定は出来ない) 最近のVerでは存在しない幻のペット 世界情勢変更と言うのは一見地味だが恐ろしい効果を持っていた。 細かい情勢変更は出来なかったが状態を一転させる力を持っていた 為にアマツミに置き換えられ表舞台から去って行った …が、BlindJusticeイースを使用することは可能ではある (自分でBlindJusitceを設置する場合) Ver2.61 Ver1.81のいずれかをダウンロードすればイースのデータが存在する イースの部分をコピーして新しく追加すれば使用できる 但し、入手しにくくする工夫が必要である 関連項目 複数国影響系 アマツミ イースター イースターエッグ
https://w.atwiki.jp/vocaloidenglishlyric/pages/126.html
【Tags A Len Owata-P Rin tA】 Original Music Title アンチクロロベンゼン English music title Antichlorobenzene Romaji music title Anchikurorobenzen Music Lyrics written, Voice edited by オワタP (Owata-P) Music arranged by オワタP (Owata-P) Main Singer 鏡音リン (Kagamine Rin), Chorus 鏡音レン (Kagamine Len) This song is included in "Benzene" series. Click here for the original Japanese Lyrics English Lyrics (translated by animeyay): It s difficult, it s sad, it s regrettable, that I want to stop, and yet I m not even allowed to do that, but only keep on losing more and more. It s too painful, it s too detestable, it s futile, that I want to erase all, abandon anything and everything, fly off, and make an clamorous outcry. Without understanding anything, you run through the town at night. Without saying anything to you, I merely keep on watching. Some cheap words have been lined up, but just where is the goal? The rules are not over there, but are weakly decaying. And then I start to talk "I will correct everything in this world." And I try to deceive the cat "I will be able to correct everything." Brandishing an impossible promise, I indulge in self-satisfaction. Everybody knows and understands, so today, too... You will be exposed, be shattered, become rusty, and rot away, and even the absurd gossips will be washed away and become truths. Lies are fine, I don t care, because we are the correct ones here, and therefore we will completely crush your deeply sinful immoralities. Does this song have a meaning? This verse has no meaning. Is this song sinful? This verse is not sinful. And then I come to a realization, that I should not create anything after all. What is the value of your life?-- Just a stray cat, whom I ve thrust into a pond. To some empty meaningless words, I dance and wave about, until I lose them. What is "good"? What is "evil"? I don t know anything anymore. Now, let s go mad together! For what do I sing? Paradichlorobenzene. I just sing without understanding why. Paradichlorobenzene. We crush evil, and brandish justice. Paradichlorobenzene. As we stop wandering we don t realize our foolish deeds. It s not possible, it s not forgivable, and it won t stop, this feeling of mine. This pain and this detest strike right through my heart. It s difficult, it s sad, it s futile, that I want to erase all, and yet I m not even allowed to do that, because only renunciation will save me now. Lies are fine, I don t care, let s forgive, let s give acceptance. We re so mad that it seems like we can embrace even laughter and jealousy. Be it "good" or "evil", let s [kill] everything, and then fall into a slumber. I ve had enough; I m really tired now. Will we be salvaged? Romaji lyrics (transliterated by animeyay): boku wa nan no tame ni utau? PARAJIKUROROBENZEN tada imi no rikai sezu ni utau PARAJIKUROROBENZEN sou kotaemotome hashiridashita PARAJIKUROROBENZEN sono saki ni tadoritsuite nanimo nai to shitta kedo saa utaimashou odorimashou PARAJIKUROROBENZEN saa wamekimashou sakebimashou PARAJIKUROROBENZEN inu mo neko mo ushi mo buta mo mina PARAJIKUROROBENZEN saa kuruimashou nemurimashou kuchihateru made saa RUURU ga boku wa iya de tada shibararetaku nakute dakara boku wa nigedashite atosaki no koto wa wasure sashizu sareru no ga iya de sukoshi aku ni naritakute shin ya ie wo nukedashite yoru no machi wo hashirinuke nan no tame ni ikiru noka boku wa noraneko ni hanashikaketa neko wa nanimo kotaezu ni tada mikudashita hitomi de boku wo mita nome mo shinai koohii nomihoshite kumorisora wo miagetanda ima no boku ni nani ga dekiru? soresura wakaranai dakara boku wa utaisakebunda PARAJIKUROROBENZEN sono imi no rikai sezu ni wameku PARAJIKUROROBENZEN kore de kimi wa manzoku dekiru no? PARAJIKUROROBENZEN okite kisoku yabuttara kimi wa nanika kawaru no? sou dare demo ii buchimaketai PARAJIKUROROBENZEN aku wo tataku seigi furikazasu PARAJIKUROROBENZEN seigi tate ni SUTORESU kaishou PARAJIKUROROBENZEN mawaritomeru bokura kizukanai orokana koui kono uta ni imi wa aru no? kono uta ni imi wa nai yo kono uta ni tsumi wa aru no? kono uta ni tsumi wa nai yo [BENZEN]...ni imi wa aru no? [BENZEN]...ni imi wa nai yo [BENZEN]...ni tsumi wa aru no? kono uta no imi wa... [BENZEN] boku wa soshite kizuku shosen wa subete gizen nanda to boku no ikiru kachi wa nani? noraneko wa mizu ni oboreshinda kara ni natta koohii nagesutete yami ni owareta sora wo mita ima no boku wa nani wo shiteru? soresura wakaranai mou nannimo wakaranai soshite kimi wa boku wo waraunda [PARAJIKUROROBENZEN] soshite boku wa kimi wo tsukitobasu [PARAJIKUROROBENZEN] boku ga tadashiku kimi wa chigau [PARAJIKUROROBENZEN] kyomu ni kurumarete wa kieru boku ga kiesaru made saa utaimashou odorimashou PARAJIKUROROBENZEN saa waraimashou netamimashou PARAJIKUROROBENZEN boku mo kimi mo nanimokamo zenbu PARAJIKUROROBENZEN saa kuruimashou nemurimashou kuchihateru made saa [Owata-P, OwataP, Garuna]