再び同じ記事から。
<記事>
マップ LINQ: Visual Basic 9.0 および WPF で動的マップを作成する
Map LINQ: Create Dynamic Maps with Visual Basic 9.0 and WPF
<原典>
The dependency properties are then exposed to code via wrapper properties that invoke the GetValue and SetValue methods defined in the DependencyObject class, providing the appropriate DependencyProperty object as a parameter.
<掲載されていた訳文>
依存関係プロパティは、DependencyObject クラスで定義されている GetValue メソッドと SetValue メソッドを呼び出すラッパー プロパティを介してコードに公開され、適切な DependencyProperty オブジェクトをパラメータとして提供します。
<サンプル コード>
Public Shared ReadOnly RegionNameProperty As DependencyProperty _
= DependencyProperty.Register("RegionName", GetType(String), _
GetType(MapRegion))
Public Shared ReadOnly IsSelectedProperty As DependencyProperty _
= DependencyProperty.Register("IsSelected", GetType(Boolean), _
GetType(MapRegion))
'...
Public Property RegionName() As String
Get
Return CStr(GetValue(RegionNameProperty))
End Get
Set(ByVal value As String)
SetValue(RegionNameProperty, value)
End Set
End Property
Public Property IsSelected() As Boolean
Get
Return CBool(GetValue(IsSelectedProperty))
End Get
Set(ByVal value As Boolean)
SetValue(IsSelectedProperty, value)
End Set
End Property
◆ expose 公開する、提供する
「プロパティがコードに公開される」というのは、そのプロパティをコードで使うことができるという意味です。ここでは、2 つのプロパティが例として挙げられていますが、RegionName というプロパティは、コードからは、RegionName () というラッパー プロパティを介して使用することになります。expose は、「公開する」が定訳となっており、ここのような文脈の場合、たいていは「公開する」(または「提供する」) と訳されます。 (読み慣れないと、よくわからない日本語だけど。)
◆ invoke A, providing B (as a prameter).
これは、「B をパラメータとして指定して A を呼び出す」という意味の定番の文章です。as a prameter は、ないこともよくあります。invoke の代わりには call、providing の代わりには passing、supplying, giving などがよく使用されます。
掲載されている訳文は、providing 〜 の分詞構文がどこに係っているのかがはっきりませんが、be exposed ではなく、invoke を修飾していると考えるほうが適切かと。
◆ appropriate 適切な
appropriate は、「適切な」が定訳です。こう訳しておいて、誤訳だと指摘されるほどの間違いになることはたぶんないでしょうが、それぞれの文章における具体的な意味は理解しておく必要があると思います。
ここでは、「GetValue メソッドおよび SetValue メソッドを、appropriate な DependencyProperty オブジェクトをプロパティとして指定して呼び出す」と使われています。パラメータとして「適切な」オブジェクトを指定するのは当然のことなのに、わざわざ appropriate と言っているのは、RegionName プロパティだったら RegionNameProperty オブジェクトを、IsSelected プロパティだったら IsSelectedProperty オブジェクトを、とそれぞれに「適切な」オブジェクトを渡すという意味を表すためと思われます。(つまり、DependencyProperty オブジェクトというのは、RegionNameProperty オブジェクトや IsSelectedProperty オブジェクトを含む総称です。)
訳語としては、「該当の」「対象の」「その場に応じた」などが使えると思います。
<原典>
This causes the registration to be executed as part of the MapRegion class's static constructor, which the common language runtime (CLR) ensures will be run exactly once (before any code referencing the MapRegion class executes).
<掲載されていた訳文>
そのため、登録が MapRegion クラスの静的コンストラクタの一部として実行されます。これにより、共通言語ランタイム (CLR) は、(MapRegion クラスを参照しているコードが実行されるよりも前に) 必ず 1 回だけ実行されます。
◆ 複文構造の関係代名詞
掲載されていた訳文では、1 回だけ実行されるのは CLR と解釈されていますが、そうではなく、1 回だけ実行されるのは、静的コンストラクタです。
which の先行詞は static constructor であり、続く動詞は will be run です。その間に、the common language runtime (CLR) ensures (that) が挿入されていると解釈できます。
static constructor, which / CLR / ensures / will be run
(先行詞) S S V V
たとえば、以下のような文と同じ構造です。
neighbors who I think are very nice (とても親切だと私が思う近所の人達)
訳は、こんな感じ。
そうすることにより、登録は、MapRegion クラスの静的コンストラクタの一部として実行されるようになります。静的コンストラクタは、必ず 1 回だけ実行されるように共通言語ランタイム (CLR) が制御しています。
この記事へのコメント一覧