2008-10-14

Word: 変更履歴の表示方法

変更履歴を実際に使用すると、結構いろいろな表示方法をさせたくなるもの。


よく使うのが、挿入箇所に下線、削除箇所に取消線というもの。ただ、削除箇所が多いと極めて見にくいので、削除箇所を隠し文字にすることもあります。また、挿入箇所についても、元の文字に下線がついてしまっていないか確認する場合は、挿入箇所を色のみとする必要があります。Wordの文字の書式は、直前の文字の書式に引きずられますが、元の文字に色がついている可能性は、元の文字に下線がついている可能性よりずいぶんと少ないですからね。

通常ですと、文書履歴ツールバーを表示し、その表示->オプションから変えますが、結構頻繁に変更するので、ショートカットキーを割り当てることにしました。

というわけで、挿入箇所の表示方法の変更を、alt+insertに割り振り、下線と色のみをが交互に入れ替わるようにし、削除箇所については、alt+deleteで隠し文字と取消線が交互に入れ替わるようにしました。

ショートカットキーの割り当て

'変更履歴挿入・色だけか下線か
CustomizationContext = NormalTemplate
KeyBindings.Add KeyCode:=BuildKeyCode(wdKeyInsert, wdKeyAlt), KeyCategory _
:=wdKeyCategoryMacro, Command:="挿入履歴"

'変更履歴削除・取消線か隠し文字か
CustomizationContext = NormalTemplate
KeyBindings.Add KeyCode:=BuildKeyCode(wdKeyDelete, wdKeyAlt), KeyCategory _
:=wdKeyCategoryMacro, Command:="削除履歴"

中身の機能

Sub 挿入履歴()
'下線か色だけか
If Options.InsertedTextMark = wdInsertedTextMarkColorOnly Then
Options.InsertedTextMark = wdInsertedTextMarkUnderline

Else

Options.InsertedTextMark = wdInsertedTextMarkColorOnly

End If

End Sub

Sub 削除履歴()
'取消線か隠し文字か
If Options.DeletedTextMark = wdDeletedTextMarkStrikeThrough Then
Options.DeletedTextMark = wdDeletedTextMarkHidden
Else

Options.DeletedTextMark = wdDeletedTextMarkStrikeThrough

End If

End Sub



Word: 次の検索箇所

Wordの検索は、検索画面が別途出てきて、なにげに邪魔となっている場合がある。モニターが何画面もあればいいのですが、そういう環境でない場合も当然あるわけです。


そういった場合に、今の検索条件で、もう一つ次の場所を表示したい場合にショートカットキーを設定できないか、というのがこのエントリ。

次の検索というのは、元からショートカットがある。ctrl+page down。同様に前を検索はctrl+page up。

しかし、これは別のショートカットキーとかぶっているのである。

Wordで、page up/downすると、1画面分移動する。これは有名なので使っている人も多いと思われます。

Wordで、紙をぱらぱらめくる感じで次のページの先頭に移りたいという場合もあります。例えば、5ページあとと手元のプリントアウトで見て、その後、画面を移動するとき。このときのショートカットがctrl+page up/downとかぶっているのです。

従って、デフォルトでは、検索条件を入れていない状況では、ページが移動し、検索条件を入れているときは、前後の検索に移動します。

特に大画面を使っていると、このショートカットキーはいずれも利用するので、この混乱はとても困ります。

その混乱を解決するべく、別のショートカットキーを割り振るというのが、今回のマクロ。

ページの移動をctrl+page up/downに、検索の前後を、alt+テンキーのプラス/テンキーのエンターに割り振ってみました。

割り振りマクロ

'次のページ ctrl pagedown
CustomizationContext = NormalTemplate
KeyBindings.Add KeyCode:=BuildKeyCode(wdKeyPageDown, wdKeyControl), _
KeyCategory:=wdKeyCategoryMacro, Command:="次のページ"

'前のページ ctrl pageup
CustomizationContext = NormalTemplate
KeyBindings.Add KeyCode:=BuildKeyCode(wdKeyPageUp, wdKeyControl), _
KeyCategory:=wdKeyCategoryMacro, Command:="前のページ"

'次の検索 alt enter(ten)
CustomizationContext = NormalTemplate
KeyBindings.Add KeyCode:=BuildKeyCode(wdKeyReturn, wdKeyAlt), KeyCategory _
:=wdKeyCategoryMacro, Command:="次の検索"

'前の検索 alt +(ten)
CustomizationContext = NormalTemplate
KeyBindings.Add KeyCode:=BuildKeyCode(wdKeyNumericAdd, wdKeyAlt), _
KeyCategory:=wdKeyCategoryMacro, Command:="前の検索"


で、次が肝心の中身の動き。

Sub 次のページ()
'
'次のページへ ctrl + PageDown
With Application.Browser
'表になど対応できるように変更。元は下記
' .Target = wdBrowsePage
.Target = wdBrowseGoTo
.Next
End With

End Sub

Sub 前のページ()
'
'前のページへ ctrl + Pageup
With Application.Browser
'表になど対応できるように変更。元は下記
' .Target = wdBrowsePage
.Target = wdBrowseGoTo
.Previous
End With

End Sub

Sub 次の検索()
'
Dim test
'次の検索へ Alt + num +
With Application.Browser
.Target = wdBrowseFind
.Next
End With

End Sub

Sub 前の検索()
'
'前の検索へ Alt + Enter
With Application.Browser
.Target = wdBrowseFind
.Previous
End With

End Sub





Word: Delta View

Word 間の文書を比較する方法にWorkshareについている、Delta View という機能を使うという方法がある。Wordの文書比較よりも優秀な結果を示してくれるため、導入している法律事務所は多い。

http://www.workshare.com/


身も蓋も無い言い方をすると、Wordの文書比較がいけてないために存在しているようなニッチ商品であるが、文書屋にはありがたいもの。

ただ、Wordの文書比較のように変更履歴のような見かけで見せてくれるものの、これは変更履歴ではない。そのために、docで保存し、次へという履歴のツールバーのボタンを押しても、うまく作用しない。

専用のDVというソフトでは次の変更箇所というボタンがあるのだが、これでは編集がめんどくさい。

なにより、ほかのソフトの使い方を覚えないといけず、無理。

よって、Wordの機能を使いつつ、次の変更履歴箇所を順次表示していく方法は無いものかと思い、考案したのがこのマクロ。何年もたっていたのだが、依然、使えるようなので、一応掲示してみます。

構造はシンプル。

追加箇所の青、削除箇所の赤、移動箇所の緑のフォントを検索し、全部の箇所に二重線を引くという置き換えを行っているだけ。その後、検索で、二重線の場所を順次検索していけば、擬似的に、変更箇所をぽんぽんぽんと表示できるはず、というものです。マクロを実行すると、ご丁寧に、直後に検索条件まで入っているので、次の検索ってのをするだけで表示できます。

ま、多少なりともお役に立てれば、ですね。

以下、プログラム

Sub DV二重線()
'
' DV活用 Macro
' DVによる変更箇所すべてに2重下線を引く。これにより一括して検索が可能となる。

'画面更新をしない
Application.ScreenUpdating = False



Selection.HomeKey Unit:=wdStory

Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting

With Selection.Find
.Text = ""
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue
.Font.Color = RGB(0, 192, 0) 'みどり
.Format = True '上記フォーマットを利用する
.MatchCase = False
.MatchWholeWord = False
.MatchByte = False
.MatchAllWordForms = False
.MatchSoundsLike = False
.MatchWildcards = False
.MatchFuzzy = False
End With

'検索でヒットした文字列に二重下線をつける
Do While Selection.Find.Execute = True
owari = Selection.End '変数の使用 ""を選択としているために一番最後に、不都合が生じるため
If Selection.Start = owari Then Exit Do 'その場でとどまっている場合に、ループから抜ける

Selection.Font.Underline = wdUnderlineDouble
Selection.Collapse Direction:=wdCollapseEnd


Loop

Selection.HomeKey Unit:=wdStory

Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting

With Selection.Find
.Text = ""
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue
.Font.Color = vbRed '赤
.Format = True '上記フォーマットを利用する
.MatchCase = False
.MatchWholeWord = False
.MatchByte = False
.MatchAllWordForms = False
.MatchSoundsLike = False
.MatchWildcards = False
.MatchFuzzy = False
End With

'検索でヒットした文字列に二重下線をつける
Do While Selection.Find.Execute = True
owari = Selection.End '変数の使用 ""を選択としているために一番最後に、不都合が生じるため
If Selection.Start = owari Then Exit Do 'その場でとどまっている場合に、ループから抜ける

Selection.Font.Underline = wdUnderlineDouble
Selection.Collapse Direction:=wdCollapseEnd



Loop


Call DV二重線の検索

Selection.HomeKey Unit:=wdStory



End Sub


Sub DV二重線の検索()



Selection.Find.ClearFormatting
With Selection.Find
.Text = ""
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue
.Font.Underline = wdUnderlineDouble '二重下線を検索
.Format = True
.MatchCase = False
.MatchWholeWord = False
.MatchByte = False
.MatchAllWordForms = False
.MatchSoundsLike = False
.MatchWildcards = False
.MatchFuzzy = False
End With
Selection.Find.Execute


End Sub





Word: 蛍光ペンをつける

日本に帰ってきました。旅行先でPCがご臨終したので、旅行記は中断。
岡田名監督辞任、阪神V逸、ファンタジーの結果など書いてもいいこともあるが、省略。

ぼちぼち検索でヒットをのばすという方向性から、ちょっとしばらくマクロを書いてみます。

今日のお題は、数行マクロで蛍光ペンをつける



例えば、選択部分に黄色の蛍光ペンをつける命令は、以下。
  Selection.Range.HighlightColorIndex = wdYellow

ちょっと回りくどく、現在選択している蛍光ペンを黄色にした上で、現在選択されている蛍光ペンを塗るとすると以下。
Options.DefaultHighlightColorIndex = wdYellow
Application.Run MacroName:="Highlight"


これが、ツールバーと全く同じ効果ですね。

これだと選択範囲が無い場合、文書は何も変わりませんが、上のツールバーで蛍光ペンの表示がある場合、それが黄色になります。また、すでに黄色の蛍光ペンが塗られている箇所の場合、無色に戻ります。

下の場合、以下のようなマクロ(これはこれで完成型)となります。

Sub 黄色の蛍光ペンを付ける()
'Ctrl + alt + q ・・・・・ここはコメントです。
Options.DefaultHighlightColorIndex = wdYellow
Application.Run MacroName:="Highlight"

End Sub



まぁ、こういったものはショートカットをつけておかないとマクロよりマウスの方が早い。というわけで、次にショートカットの設定。

デフォルトで、ctrl+atl+sで、現在の蛍光ペンの色を塗るという設定になっています。従って、これの周りのキーに色を割り振るのが実際上便利です。

手作業の方法は、ツール->ユーザー設定->キーボードで、設定する方法。これで、例えば、ctrl+alt+aに緑、ctrl+alt+wに黄色とかよく使う設定をすることができます。

ショートカットの割り付けをマクロでやりたければ、

'黄色の蛍光ペンを付ける ctrl alt Q
CustomizationContext = NormalTemplate
KeyBindings.Add KeyCode:=BuildKeyCode(wdKeyQ, wdKeyControl, wdKeyAlt), _
KeyCategory:=wdKeyCategoryMacro, Command:="黄色の蛍光ペンを付ける"


といったかたちになります。

q,ctrl,altで、先ほど作った黄色の蛍光ペンを付けるというマクロを呼び出せという感じです。

最後に、蛍光ペンを消す(無色の蛍光ペンを付ける)方法は、下記。

Selection.Range.HighlightColorIndex = wdNoHighlight

または

  Options.DefaultHighlightColorIndex = wdNoHighlight
  Application.Run MacroName:="Highlight"

非常に簡単な数行マクロですが、蛍光ペンを多用する仕事をしている人には結構便利です。

私の環境では、ctrl + alt+ 以下のキーで、記載の効果としています。
q 黄色
w 無色
a 緑
s 現在選択している色

ご参考まで。よければ試してください。



2008-08-02

旅行記1 ボストンへ

ま、たまには旅行記もいいだろうと、日本への帰国にあたっての旅行記です。


ばたばたとした引っ越しを終えました。途中引っ越し業者が予想より早く到着するなどアクシデントもあったものの、無事家具・その他の日用品を友人に配りおえ、まぁ、なかなか、いい感じではなかったかと。

いつものことではありますが、直前まで何もしないので、ボストン旅行のアレンジはなんにもしていませんでした。とはいうものの、列車の旅、気楽なもんです。

出発の8月1日、昼過ぎに、ボストンで8月2日友人と遊べることを確認したものの、まずは今年初のレストランウィークを満喫し、それから準備です。

CATVの装置を返しに行った足で飛び込みで入ったお店は、Tabla。内装はよく、料理もインディアンフュージョンという珍しい感じのものでした。ヨーグルトご飯などというのは初めて食べましたが、結構いい感じ。また行ってもいいかも。
http://www.tablany.com/

3時過ぎに友人宅に戻り、いざ、予約開始。列車は、あるが、高い。ホテルも都心だと1泊250ドル。2名ならいいが、1名にしては高い。等と悩んでいたら、すでに当日のレッドソックス戦には間に合わない状況。

仕方がないので郊外の安ホテル(それでも1泊160ドル)と、8月2日の野球のチケットだけ予約。この時点で午後4時30分。目標の電車の出発は5時。

チケットは転売サイトのStarhub。今はebayの子会社みたいですね。前日でも気軽に買えるのは魅力。
http://www.stubhub.com/

電車の時刻表はアムトラックのページのScheduleから。
http://www.amtrak.com/servlet/ContentServer?pagename=Amtrak/Page/Schedules_Index_Page&c=Page&cid=1080072922206&ssid=3


そして、あわててペンステーションに向かい、チケットを購入。迷った末、ボストンで食事ができるように、奮発して、アセラ・エクスプレスとやらにしてみる。列ができていたら間に合わない時間に到着するも、さすが金持ち優遇措置に優れたアメリカ、アセラ用の窓口があり、そちらには列がない。あわてて買うと、出発5分前。急いで飛び乗る。

乗ってわかったが、どうやら全席自由席。ええ?ってかんじ。

金曜の夕方5時の便なので、とにかく席がない。探しに探したあげく金髪のねーちゃんと、これまたビジネスマン風の男が座っている4人席(真ん中にテーブルがあり、結構いい感じ)に入れてもらう。


故障のおおいアメリカ、当然、出発直後に、マンハッタンを見ながら小休止。
のどかです。ビジネス用のラインなのに、というのはおいておいて。

この頃には既に判明していたのだが、このねーちゃんのしゃべること。近所のおばちゃんかってかんじ。こんな英語も話せない人に話してもおもしろくないだろうに、と思うが、とにかく一応頷きながら、ボストンのガイドブックを読み始める(なんせついてからの予定を立てないといけない。友人は結婚してボストンに移り住みつつありる、週末婚状態でしらないから、とのたまったため、なぜかこちらで考える羽目に)。ビジネスマン風も、yeah, yeahとか連呼しながら、ねーちゃんの、犬大好き(犬の種類をいろいろ連呼して写真をブラックベリーで見せてくれるのだが、こちとらなんのことだか)、とか、友人が彼氏と別れて、彼氏はその友人の妹とつきあって、もう一度妹とよりを戻して、で、今度秋に結婚だが、どうなると思う?とかの話題(無論間にいろんなエピソードやら友人やら登場しててんやわんや)に相づちをうっている。聞いていないときの反応の9割がyeahとの肯定。すばらしい。。。学びつつ、頷いてみる。返事はなんでもYes!。日本人ですから。。

旅が進むにつれ判明したのは、ねーちゃん、お嬢であること。いろいろ国を旅行したことがあるらしく、また、ビジネスの話題も詳しい。年を聞かれたときに、ありがちな、白人のシミから判断して、さらに、お愛想で、どんどんさばを読んで26といったところ・・・23だと答えられた!いただけませんなぁ(苦笑)。結構あちこちにセカンドハウスや、父の取引先とかいるようで、日本も全国を旅したことあるそうな。はぁ。あ、ちなみに、シミは、どうやらサッカー選手で、ブラジルに留学し、日本代表とも試合をしたといっていたので、そのときのものと思われ。。。

ま、なんか、ちょっと高い席をとると、ショーでも野球でもなんでも、お隣さんはえらい金持ちってのがよくあるのがアメリカ。まぁ、それはそれでおもしろいが、コネクションを作れるほどの会話力もなく、英語力もなく、単にへーという感じである。こっちで知り合いになった友人は、そこでコネクションを作らないと!といっていたが、とてもとても。。。Yesといって聞き流すのがいっぱいいっぱいです。

ま、そんな二人にボストンのステーキハウスと飲み屋街をきき、それはそれでよかった。

実際この日の夕食は、そのねーちゃんが予約を取ってくれたレストラン。ビジネスマン風もおいしいと言っていたので、駅から、これまたねーちゃんが止めてくれたタクシーに乗ってゴー。うーん、アメリカ2年を感じさせない、初々しいアジア人か。ねーちゃんとはここでばいばい。

つくと、なんだか豪勢なステーキハウス。ねーちゃんの母(元バンカー)は、週に何度か来ると言っていたが・・・おいおい、こっちはTシャツに短パン(昨日寝たときのまま)で、スーツケースをがらがら押しているのですが、大丈夫ですか???

気になるものの、まぁ、いいかと。

通されたお得意算用っぽい、よさげな席から、野球中継見たいからとバーに移動してもらう。安上がりにできています。。

言われたとおりにスカートステーキを注文。サイドには芋、そしてタマネギ、前菜にとロブスターの天ぷら(ねーちゃんいわく、ボストンに来たら を注文。芋とタマネギは両方頼むと多いかと聞いたところ、半分半分がいいと店に言われてその通りにした(いいサービスだと思います)のだが、なんせ、おおい。タマネギなんて半分で、山盛りです。

しょうがないので、隣で野球談義に盛り上がっている女性二人組にお裾分け。アメリカは、野球場でも女性を見かけますし、野球の話をできる女性が多いですね。電車のねーちゃんも、マニーの移籍について私はしらないが、父が言っていたと、結構熱く語っていましたし。

とりあえず、話題に入れてもらってしゃべるに、どうやら、この人もバンカーらしい。なんだか、金満ですなぁ。そういう店に来たと言うことか。

いっぱいくって、長引いた延長戦を満喫しました。いやー、Bay、打って良かったねぇ。打たないと昨年のJDドリューだって3人でしゃべっていたところだったから。

戻ってみるに、歩き方にはなかったですが、結構有名な店の模様。なので写真付きで。うーん、下手。
http://www.grill23.com/





2008-07-12

編集者番外編 累積投票と獲得議席数

累積投票で、各株主は、最低何議席確保できるか。


みんなで書いている本にはどうやら書かないことになりそうなので、留学中に思いついたことをメモしてみます。どこかを見たわけではない私見なので、信用性は低いですが。

取締役の選任方法

株式会社の取締役は株主により選任されます。デラウェア法ではその選任方法は相対多数(plurality)。

どういう事かというと、例えば、100株発行会社で5名選任されるとして、その得票がD1:90票、D2:80票、D3:70票、D4:50票、D5:30票、D6:20票である場合、30票のD5まで当選です。特に定めがない限り過半数の票(今回の場合51票)を獲得しているかは問題になりません。

例によってWikipedia
http://en.wikipedia.org/wiki/Plurality


で、実際の選任の場合D1、D2・・・の投票は別々に行われることが多いです。つまり、まずD1さんについて票決し、その後D2, D3・・・と別々にやっていく。実際上、各株主は候補者毎に投票の機会があるということです。

この場合において、株式の過半数を有する支配的株主がいると、支配的株主が賛成する候補者は50%超の得票を得、支配的株主が賛成しない候補者は50%未満の得票しか得られません。従って、支配的株主が議席以上の取締役について賛成票を投じる限り、支配的株主の賛成を得られた取締役候補のみが当選するということになります。

今の定義の方法の場合、支配的株主は51%の株式を持っている場合でもこれにあたります。この場合、残りの49%を1人の人が持っていても、この49%株主は1人として取締役を選任できないことになります。

累積投票制度

取締役に会社の経営権は集中するのが通常なので、会社のエクイティ資本の49%を投入しても1人も取締役を選任できないという不都合を防ぐために、累積投票制度というのを採用することができます。

これは、各株式について、議席数分の投票権を与えられ、それを1人に集中するなど自由に配分して行使することができるやり方です。

先の例で言うと、5名選任するわけですから、51株株主は255個、49株株主は245個の投票権を与えられます。49%株主は、245個の投票権を自由に割り振れるわけですから、これを例えば、1名に集中することができるわけです。その1名は245票獲得するわけですね。51株株主は、245票以上獲得する候補を5人作り出すことはできないので、この1名は確実に当選するわけです。

この累積投票制度下で何名取締役を選任できるのかというのは、パワーバランスを考える上で興味深い話題ですが、日本の会社法(商法)を習ったときは特に式を習いませんでした。留学では、結果のみ習いましたので、ここはちょっと証明でも取り組んでみようかというのが、このエントリの趣旨です(前振り長すぎですが)。

説明のために、論理的な必要性以上に段階を分け、ステップを踏んでいます。。。

最低限確保できる取締役数についての考え方

TS: 総株式数
TD: 選任される取締役の総議席
NS: ある株主(N)の持っている株式数
ND: NSで選任できる取締役数

この場合、
ND<NS×(TD+1)÷TS
が成立し、NDの整数値の最大が、「ある株主Nが自己の票を上手く配分さえすれば、そのほかの株主がいかにNの候補を落選させるべく票を配分したとしても当選させることができる候補者数」となります。要は、最大のNDの整数値が最低限とれる取締役の議席数。

なお、最大限ではないことにはご注意です。N以外の株主は配分が下手かもしれず、また投票しないかもしれません。N以外が1名に集中すれば、その他全部の議席(TD-1)を確保できるわけですし、投票がなければ、全議席(TD)を確保できるわけですから。

で、この式の立証(論理的に穴があるかもしれませんが、一応自分を納得させることができる限度の説明という趣旨です)。

TD名選任されるわけですが、とりあえず、最後の議席を争うとして、TD-1名で考えてみます。今回の投票の結果、当選に必要になる投票数を、vとすると、TD-1名は最低v票獲得しています。このうち、Nの推薦する株主は、ND-1名含まれ、Nの推薦しない取締役は(TD-1)-(ND-1)=TD-ND名含まれているわけです。で、最後の1議席が決戦。

Nもそれ以外の株主も、持っている議決権の個数は一定なので、この決戦にできるだけ多くの票を持って行こうとすると、それまでに使用する議決権をできるだけ減らす必要があります。

NはND-1名に付き、各最低v票獲得させているわけですので、各取締役に付き(v+α1)、(v+α2)・・・と議決権を使用します。この合計(台形の面積ですね)が最少になるのは、無論α1,α2・・・が全て0である場合(vが底辺、高さがND-1の長方形の場合)です。この場合、v×(ND-1)票使用している。

その上で最終決戦に、残りの票を投じる。で、この票がvを上回る(NDの定義の方法により)。ND名当選させると、各候補者は最低v票もらうということです。

とすると、Nの持っている議決権数(TD×NS)をND名に配分した平均はvを超えるという式が出てきます。

v<TD×NS/ND

同様にN以外の株主も、TD-NDに各v票を割り振ってきます。で、最後の1名はv票に足りない。従って、TD-ND+1名の平均はvを下回る。

v>TD×(TS-NS)/(TD-ND+1)

これをつなぎ合わせると、
TD×(TS-NS)/(TD-ND+1)<v<TD×NS/ND

これをときます。
TD×(TS-NS)/(TD-ND+1)<v<TD×NS/ND
(TS-NS)/(TD-ND+1)<NS/ND
ND(TS-NS)<NS(TD-ND+1)
ND×TS<NS×(TD+1)
ND<NS×(TD+1)÷TS

ですね。

別解

もう少しステップを省く立証だと以下のような感じでしょうか。
Nの候補者NDは最低、各v票取得可能。従って、v<TD×NS/ND。
Nとそれ以外の全体でTD+1名の選任は不能(平均がvを下回る)。従ってv>TS×TD/(TD+1)
これを合わせると、
TS×TD/(TD+1)<TD×NS/ND
TS×(TD+1)<NS/ND
ND<NS×(TD+1)÷TS

TD+1名が問題になることがすっとわかればこちらで足りるはずです。最後の議席を争うので、最大1名分(v)の死票が生じるためとかいうんでしょうか。個人的にはすっとはわかりにくいなと思ったため、残り1名で切ってみた訳ですね。

実際上の有益性

この式、じつは、累積投票制度を採用している会社についても、こんな風に実務上使われるのはまれではないかと思います。既にある株式数で、何名選任できるか等と悠長に考えるはずはないからです。

むしろ、具体的にND名選任したいのだが、これを確実に行うためには何票必要かと考えることの方が多いように思います。

その場合は、式を変形させて、

NS>ND×TS×(TD+1)

として、最小限必要な得票数を計算します。私の使っていた教科書ではこの形の式がのっていました。

とはいっても、票読みは、対立する株主がいる場合に問題となり、一番先鋭化するのは、敵対的買収です。敵対的買収は、普通上場会社で行われるところ、累積投票制度は上場会社で採用されていないので、一般的には問題にならない話です。そのため、式の内容を説明されることもあまりないのだと思います。

理論上は、ジョイントベンチャーの組成などで活用されてもいいはずですが、まぁ、他の手段が色々ありますし、実際に累積投票制度となっている定款はあまり見たことがありません。

というわけで、これも実際上の活用からすると、数遊びという感じですね。
理解して損はないという程度でしょうか。

2008-06-28

編集者な日々(5) 変更履歴とつきあう

変更履歴を使用しないというのが米国の法律事務所の主流です。

まぁ、動きに癖があり、バグかと思われるものも多いほか、ワードに保存されるメタデータ(文字以外の修飾情報)が多くなるのを割けるというのが主な趣旨のようです。また、理屈上、履歴を入れられたデータは相手が最後にさわったものなので、履歴なしでどこを変えられているかわからない以上、それをベースに作業すべきではないというのもあります。

そうはいうものの、変更履歴を使用する場合もあるのが現実。しかも、相手のコメントをそのドラフトで採用するようクライアントに求められることもしばしば。

そのときに人間の直感で考えるのは、コメントを次々表示してくれて、採用不採用のみをちゃっちゃと決めたいと言うこと。それを実現するためのショートカットがあると便利ですよね。

というわけでこのエントリ。


変更履歴関係は、デフォルトでは、ワードのショートカットキーは設定されておらず、マウスでの作業がメインとなりますがこれは相当面倒。

そこで、以下のようなショートカットキーをマクロで一括設定して使用することにしています。マクロを使用せずに一個ずつショートカットを設定する場合は、メニューの、ツール→ユーザ設定→オプション→キーボードから、コマンド設定の分類でツールを選び、command =のあとにある単語を探してもらうと個別に設定できます。たとえばNextChangeOrCommentとかですね。

これを設定すると、履歴をalt+上下で探し、それについて採用不採用をalt+左右で決定していくことができ、作業が結構早くなったりします。

よろしければ、お試しください。

'次の変更履歴 alt 下
CustomizationContext = NormalTemplate
KeyBindings.Add KeyCode:=BuildKeyCode(40, wdKeyAlt), KeyCategory:= _
wdKeyCategoryCommand, Command:="NextChangeOrComment"

'前の変更履歴 alt 上
CustomizationContext = NormalTemplate
KeyBindings.Add KeyCode:=BuildKeyCode(38, wdKeyAlt), KeyCategory:= _
wdKeyCategoryCommand, Command:="PreviousChangeOrComment"

'履歴を承諾 alt <-
CustomizationContext = NormalTemplate
KeyBindings.Add KeyCode:=BuildKeyCode(39, wdKeyAlt), KeyCategory:= _
wdKeyCategoryCommand, Command:="AcceptChangesSelected"

'履歴を元に戻す alt ->
CustomizationContext = NormalTemplate
KeyBindings.Add KeyCode:=BuildKeyCode(37, wdKeyAlt), KeyCategory:= _
wdKeyCategoryCommand, Command:="RejectChangesSelected"

編集者な日々(4) 単語の使用回数を知る

ドラフトが完成に近づく中、何かコメントを入れる際は、他の箇所にどのような影響が及ぶか予測したかったりします。

その際に役に立つのは、今直しを入れようとしている単語がどの程度使われているか知ること。マイナー単語なのか、いっぱい使われているのか。


で、それようのマクロを昔作っていたのを思い出し、引っ張り出してみました。

ワードで文字を選択した状態でこのマクロを走らせるとそのドキュメント上にその単語が何個あるか表示してくれるというとてもシンプルな機能。

たとえば「支配権」とかいう単語がその章で何回使われているのか知りたい場合、支配権、ってのを選択してこのマクロを走らせるだけですぐに知ることができます。

個人の環境では、これをctrl + alt + 十字キーの0に割り当てて、適宜使っています。
割り当てのためのマクロは

'選択単語の使用回数を数える ctrl + alt + num 0
CustomizationContext = NormalTemplate
KeyBindings.Add KeyCode:=BuildKeyCode(wdKeyNumeric0, wdKeyControl, _
wdKeyAlt), KeyCategory:=wdKeyCategoryMacro, Command:="選択単語"

ctrl + alt + num 0を、選択単語というマクロを起動させるというショートカットにしろというものですね。

で、本体の選択単語というマクロ。センスのない名前ですが。
ま、よろしければお使いください。

Sub 選択単語()

Dim hit As Integer
Dim yougo As String

hit = 0
yougo = Selection.Text

'画面更新をしない
With Application
.ScreenUpdating = False
.DisplayAlerts = wdAlertsNone
End With

NewWindow

'画面更新をしない
With Application
.ScreenUpdating = False
.DisplayAlerts = wdAlertsNone
End With


'画面の設定
ActiveWindow.ActivePane.View.Type = wdPrintView


'変更履歴関係の処理
With ActiveWindow.View
.ShowRevisionsAndComments = False
.RevisionsView = wdRevisionsViewFinal
End With



Selection.HomeKey Unit:=wdStory
Selection.Find.ClearFormatting

With Selection.Find
.Text = yougo
.Forward = True
.Wrap = wdFindContinue
.Format = True '上記フォーマットを利用する
.MatchCase = True '大文字小文字の区別
.MatchWholeWord = False
.MatchByte = True '半角全角の区別
.MatchAllWordForms = False
.MatchSoundsLike = False
.MatchFuzzy = False
.MatchWildcards = False
End With



'検索でヒットした文字列を太字にし、色を変える
Do While Selection.Find.Execute = True
'ヒットした数を加算
hit = hit + 1

Selection.Collapse wdCollapseEnd

Loop

ActiveWindow.Close

'画面設定戻す
With Application
.DisplayAlerts = wdAlertsAll
.ScreenUpdating = True
End With



MsgBox "「" & yougo & "」" & "は、この文書(クリーン)中で " & hit & " 回使用されています。"


End Sub

2008-05-30

編集者な日々(3) 人間らしい置き換え

編集者には置き換え技術も必要になってきます。今日やってみたのは、以下の置き換え。

デラウェア法25 → デラウェア法§25

主に順番の入れ替えですね。


執筆者の皆さんに内容に集中していただくためにも、形式的な面はできるだけ編集者で楽に処理したいもの。楽にというのはこちらの事情ですが・・・

今回の本はアメリカの法律の条文について、条ではなく§を、逆にドル表示は$ではなくドルをと、結構癖のあるルールになっちゃっています。そのため、各章での記載の統一が結構大変。

今日はとりあえず条文を直そうかと思い、検索技術で対応してみることにしました。

使うのは、ワイルドカード検索

これで、15条、200条、105条a、10a条などという表記を、それぞれ§15, §200, §105a、§10aなどに直していきたいときどうするかというメモ。特に最後の2つはルールが違うので、両方拾えると結構おいしい。

ワイルドカードというのは、人間の頭で考えることを実現しようという仕組み。例えば、同条、ってなっているのと、条項ってなっているのと、15条となっているの、今回置き換えたいのが3つめであることは人間には明らか。一方、人間は直し漏れを完全に防ぐのは難しい。そこでこれを組み合わせて、楽にミスが少なくなるような校正をしようというのがこのエントリ。

ドラフトを読んでいると、今回は、どうやら数字か半角英数がしばらく続いたあとに条となるところまでは執筆者の方で勧めていてくれている模様。とすると検索としてはこれをルールにしてしまうのが一番。

ワードの置き換え・検索のオプションで、ワイルドカードを使用するにチェックを入れると、以下で上記の4つの例、いずれも検索でヒットし、同条、条項などはヒットしなくなります。

[a-z,A-Z,0-9]{1,5}条

これを解説すると、半角英数が、1-5個連続して続いて、次に条となっているのを全部拾ってくれる式ですね。

で、次に、なぜか一発で置き換える方法がわからなかったので(安易に言うべきではないですが、バグかもしれません)、段階を分けると、、、

英数の部分と、条の部分を入れ替える。

これもワイルドカードででき、同じくワイルドカードを使うオプションをチェックした状態で、

置き換え前文字列:([a-z,A-Z,0-9]{1,5})(条)
置き換え後文字列:\2\1

としてやると、半角括弧でくるまれた2つのグループの場所が入れ替わる。バックスラッシュになっているところは、¥の半角を利用してください。

もちろん全部置き換えでなく、一つ一つ見て置き換えていくのが望ましいですけどね。弁護士業務は実際の目が命ですから。

そうすると、15条、200条、105条a、10a条などという表記は、それぞれ条15, 条200, 条105a、条10aとなる。

この最後の105条a、10a条の両方が拾えているのは結構実際便利でした。

で、これを条→§でおきかえてやると、、、

めでたくそれぞれ§15, §200, §105a、§10aとなるわけですね。

まー、式が面倒でカスタムメイドしないといけないことなどがあり、結構人に伝えるのは難しい面もあるのですが、あるルールのなおしを全体に適用しないと行けない場合(例えば$15を15ドルに)など、結構これに近い式を使って見ると便利なことはあります。

全体の中身にコメントしながら、形式面ももれなくコメントというのは、訓練でできるようになるのですが、まー、機械の補助もそれはそれで便利につかえるものです。

よろしければお試しください。


2008-05-27

編集者な日々(2) 単語帳の作成

英語で習った内容を日本語で出版するので、翻訳が必要。この訳が場所によってずれるのは極力避けたいところ。


条文でも契約書でも判例でもないので、まぁ、読んでわかればいいというものの、結構ちゃんとした本になる(はず)なので、できるだけ訳はそろえたい。

本文中、英語を併記する場合、「日本語(英語)」という書き方をすることにしている。たとえば「取締役(director)」のように。単純だが、実は訳がずれていると明らかに読み手にわかっちゃう、実務上はあまりよろしくないやり方(笑)。

特に何人も担当者が章を分担して本を作成している今回のような場合、超危険。なので、無論基本ルールは読んでわかればいいというものにしてあるのだが、さはさりながら・・・

編集者としては、ちょっとでもあわせたくなるものです。

というわけで今日は単語帳を作りました。その方法を記しておこうかと思います。

1 単語を拾う

検索するのは上記のようなパターン。解析すると、日本語、全角括弧、半角英語となっているわけですね。

なので、この流れになっているところを、検索して、それをコピーしてやる。

具体的な作業は下記。

(1)まずは、例によってはたくり起動!

(2)で、ドラフトのワードファイルを開く。

検索は、以下で行いましょう。

(3)まず、全角括弧「(」がたまに半角の人がいるので、これがないかチェック。

検索画面で半角全角を区別するオプションにチェックを入れた状態で、ドラフト内の半角括弧「(」を検索してやる。で、必要に応じて全角に置き換え。

これで、拾いたいところは、日本語、全角括弧、半角英語の流れになっているはず。なっていないものは無視(笑)。

なお、全角括弧にそろえたいのは、下のワイルドカードと半角括弧が結構めんどくさい関係だから。全角使えるって結構便利です。

(4)単語の検索

今度は、半角全角区別のオプションを外して、ワイルドカードを使用するというオプションにチェック。

その上で、「([a-z,A-Z]」で検索してやる。これは、全角括弧の後に半角の大文字又は小文字のアルファベットがくるものを検索という内容。

これで必要箇所を探してコピー。ひたすら繰り返す・・・・・・しんどいけど、文系の限界(笑)。

2 単語の整形

例によってEmEditorで整形。

(1)EmEditorを起動し、はたくり(行末に改行がないときは改行を入れるオプションを使用)を使って、先ほどコピーした単語を全て貼り付ける。

(2)その上で、日本語と英語の間の全角括弧をタブに置き換えましょう。エクセルを使うためにね。

置き換えは、正規表現を使用する、とした状態で、

置き換え前 (     ・・・・全角括弧
置き換え後 ¥t    ・・・・タブっていういみ

これで一発ですね。

で、これを全部コピー。

3 エクセルに貼り付け、使いやすくする

(1)エクセルを起動し、先ほどコピーしたのを貼り付ける

(2)一番上に一列空白行を追加し、タイトルをつける。

章番号

日本語

英語

1

取締役

director




こんな感じ。

(3)で、一番上の行にオートフィルターを適用してみる。

メニューから、データー>フィルターー>オートフィルター

これで欲しい章だけ表示することができる。その章にたとえば色をつけると(上のペンキマークのアイコンとかで)、全体表示に戻したときに、自分の章だけ色がついていて、他の章の人と折衝がしやすい仕組み。

英語・日本語での並び替えと合わせると、だいたいやりたいことができてくる。

ま、書くと単純なんですが、数が多いと大変。今日は700個くらいの単語帳でしたが、しんだ。時間は3時間くらいのものでしたが、指が、指が、、、、ま、その後このブログを書けるくらい(笑)死にました。

指がつって頭がもうろう・・・となったときに考えたのは、日本にいたときは秘書さんとかパラリーガルの人にお願いしていた(方法とかは自分で考えるが)作業を自分でやると死にそう。改めて感謝の念がわきました。



2008-05-25

編集者な日々(1) サイテーションチェック

みんなで本を書いておりその編集役となっている。珍しい機会なので、こうしたら楽だったというのをある程度メモしておこうと思います。

単なる備忘なので、書き方も内容もいつもにも増して適当です。


米国の判例を引くときは、サイテーションをつけなければいけず、それのチェックは編集者の仕事となります。

大量に数字、英語をチェックしなければならないので、とりあえず楽な方法が必要。

(1)判例の記載箇所の検索

まずは、チェックする判例のピックアップ。

サイテーションには、数字が含まれているので、これを検索することにします。

Wordの検索(ctrl + f)で、オプションの中から、Wild cardを使用するを選択し、検索語を
[0-9, 0-9]
としてやる。

これで「半角の数字または全角の数字」があれば全部拾ってくれる。

これでとりあえず判例を見つける。

(2)はたくり

見つけた判例をとりあえず全部取り出したい。

こういったときに便利なのが、クリップボードの遍歴をとってくれるソフト。以前紹介のはたくりを使用。

過去のはたくりの紹介

こいつを起動しておき、先ほどの検索でサイテーションのところにきたら、判例とサイテーション部分に分けてコピー。これで記録をとってくれる。

(3)一覧表の作成

判例とサイテーションの一覧を作る。

さきほどの遍歴をはき出す。はたくりからWordかEmEditorに貼り付ける。その際、はたくりの設定で行末に改行がない場合に「改行する」としておくと便利。

これで、

判例名
サイテーション
判例名
サイテーション




という一覧ができるはず。

数が多くなければ、これを手作業で
判例名<タブ>サイテーション
判例名<タブ>サイテーション
判例名<タブ>サイテーション




という並びに変えて、エクセルに貼り付ける。多ければEmeditorのクイックマクロなどを使用。

過去のEmEditorの紹介

これで一覧表の完成。何の本かばれそうだな。


Cheff v. Mathes

199 A.2d 548 (Del. 1964)

Unocal Corp. v. Mesa Petroleum Co.

493 A.2d 946 (Del. 1985)

Unitrin, Inc. v. American Gen. Corp.

651 A.2d 1361 (Del. 1995)

Moran v. Household International, Inc.

500 A.2d 1346 (Del. 1985)

Carmody v. Toll Brothers, Inc.,

723 A.2d 1180 (Del. Ch. 1998)

Quickturn Design Systems v. Mentor Graphics

721 A.2d 1281 (Del. 1998)

Revlon, Inc. v. MacAndrews & Forbes Holdings, Inc.

506 A.2d 173 (Del. 1986)

Paramount Communications, Inc. v. Time, Inc.

571 A.2d 1140 (Del. 1990)

Paramount Communications, Inc. v. QVC Network, Inc.

637 A.2d 34 (Del. 1994)

Blasius Indus., Inc. v. Atlas Corp.

564 A.2d 651 (Del. Ch. 1988)

MM Companies, Inc. v. Liquid Audio, Inc.

813 A.2d 1118 (Del. 2003)

Unitrin, Inc. v. American Gen. Corp.

651 A.2d 1361 (Del. 1995)

Omnicare, Inc. v. NCS Healthcare, Inc.

818 A.2d 914 (Del. 2003)

In re Toys "R" Us, Inc.

877 A.2d 975 (Del.Ch. 2005)




ま、一覧表である方が人とも情報を共有しやすいですしね。

(4)チェック
これをプリントアウトして、手元に置いてチェック

レキシスかウェストローあたりで、先ほどコピーしたはたくりをペースとしてチェックしていく。

こんな感じでやったら多少楽でした。




2008-05-20

トレード (13)トレードかadd/dropか

トレードとFAでのadd/dropというのは背反関係にあり、プレイヤーは適宜いずれが効率的か選択して動くことになります。FAが厚ければadd/drop、薄ければトレードが有効となる場合が多いです。


FAからのadd/dropの特徴(利点)として、相手方が常に受諾すること、取引コストが不要であること、マーケットが大きいことがあります。

FAは相手のプレミアの予測が不要(必ず受諾)

Xとのトレードが成立するYの範囲は以下の式でした。

oX+pAX - pAY < oY < oX+ pBX- pBY

FAの場合、受諾行為は自動なので、式の右半分が不要です。したがって

oX+pAX - pAY < oY

だけ考えればいいと言うことになります。これで実際上はとても時間と見極め能力のかかるBにとってのプレミア(pBY、pBX)の予測という作業が不要になり、自分の側だけで確定的に考える事ができるようになります。

取引コスト不要

上記、pBX, pBYを推測する作業も取引コストの一環ととらえることができますが、これ以外にもトレードは実際上やりとりに時間がかかるほか、受諾後ペンディング期間があるために、最終的にロースターに反映されるタイミングも非常に遅くなります。従って機動的に動くこともできないし、不確定の要素が多くなります。還元すると不確定であることという意味でのリスクが非常に高い。

このような追加コストがかからないというのはadd/dropの魅力の1つとなります。

マーケットが大きいこと

フォーマット、リーグの面子にもよりますが、大概は、トレードのマーケットに比べてFAのマーケットは大きいです。野球のパブリックの場合、実際にFAにいる人数が相当多く、毎日FAでその日活躍する人を(神業的に)とることができれば、最初のドラフトがどんなに失敗でも通常は1位になれるくらいの厚みがあります。これはアメフトとかとは大きく違いますね。

FAのデメリット(トレードのメリット)

FAからadd/dropすることと、トレードを比べた場合、FAのデメリットはそう数多くはありません。ただ、トレードの利点のうち一番大きなものとして、FAにはいない大物を狙えるというのはあります。

枠に限りがある中で日々のロースターを選択していく以上、最終的に問題になるのは選手の質です。神業的add/dropには大きくは期待できませんしね。この枠を継続的に与えてもいいなと思える質がある選手というのはやはりFAではなく各チームに属しているのです。従って、これを獲得するには基本的にはトレードしかないわけです。

FAとトレードの交錯

以上からすると、FAにいるような選手については、簡単にadd/dropをするのが効率的で、手間のかかるトレードは、FAにはいないような大物をねらう場合に使うのが合理的ということになります。

これをAの視点から場合を分けて考えてみます。

プレミアが一般的に選手の客観的な価値に比べて十分に小さい限り、トレードが成立するのは以下の範囲となります。

oY ≒oX

一方、add/dropが成立するのは、

oX<oY

従って、Xを持っているAの発想としては、当該プレイヤーを捨てるかトレードに出すかというのを考える場合、客観的により価値があるプレイヤー(Y)がFAにいればまずはFAをあたり、Xがそれがどうしてもいないような大物である場合(oXが大きい場合)のみトレードすべきということになります。

一方Xに(のみ)プレミアが発生している場合、トレードが成立するのは、

oX+pAX< oY < oX+ pBX

プレミアが人により変わらないとすると、

oY ≒oX+pX

が成立します。

一方同様の作業で、add/dropの式は、

oX+pX< oY

よってこの場合、Xについてadd/dropにするかトレードにするかの基準はoXではなくoX+pXで決定すべきということになります。

で、このpXがあるか否か決定するために必要なのが価値軸を増やすこと、ですね。

実際のプレーでは、パブリックのカジュアルでやる限り、ほとんどの選手には意識すべきほどのプレミアはつきません。従って単純にoXとFA層だけ見比べてadd/dropをするか決めればいいし、FA層より実力が高い選手についてはトレードに出す、という単純な戦略で大丈夫となります。これが一般的な価値とされるOrankが重視される理由ですね。

ただ、competitiveなリーグや、プライベートのリーグではときに一部の選手に相当のプレミアが発生している場合(pX, pBXが大きい)もあります。その場合は、単に自分にとって不要な選手である(oXが小さい、pAXがマイナスなど)というだけでdropせずに、トレードに出す方が効率的であるということになります。

FA層の価値評価に与える影響

選手の価値を計るのに、次に存在する同じ条件(ポジション)の選手よりどの程度優れているのかという手法があることは前に述べたとおりです。

この評価手法は典型的にFA層との比較感で選手の評価をする場合に役に立ちます。

たとえばFA層に本来的に8の成績の選手がいる場合、9の成績の選手をoX=1と評価するわけです。

式にすると、成績をrX、FA層の同等選手(一般)の成績をfrXとすると、

oX=rX-frX

ですね。

従って、FA層が厚くなれば、frXの値が増えるので、その選手の価値(oX)は減り、逆にFA層が薄くなればその選手の価値が増えることになります。

選手の価値をこのように計った場合、FAが薄いとdropしない方がいい選手の層(X)が増えます。逆にFA層が厚ければadd/dropでいい。その結果、以前書いたようにカジュアルなリーグほどトレードよりadd/dropを繰り返すべきことになり、このようなリーグではトレードするほどの価値のある選手(X)というのは非常に少数になります。

なお、余談ですが、先ほどの式との関係では、rY=frYとなるのが一般なので、oY=0となり、

rX<frX

の関係が認められるときは、dropすべきという表現になります。FAに自分の手持ちの選手より優れた選手がいればdropすべきということを表しているに過ぎない、とするのはちょっと寂しいので、「FAが厚くfrXが大きい場合、dropすべきXの範囲も大きくなる」と表現しておきます。FA層が厚いならトレードよりadd/dropですね。

また、このfrを考えるやり方はそもそもoXの算定ではなく、プレミアの算定の場面の話では?という批判も考えられますが、以前記載したように客観的な価値が何でなにがプレミアかの分類は考え出すと結構難しく、ここはとりあえず客観に分類したということですね。

これをプレミアに分類する(FA層の厚さがpXに影響すると考える)と、「FA層が薄いと普段プレミアの発生しない選手にまでプレミアが発生する場合がある」ということになろうかと思います。結論は一緒ですね。FAが薄ければ薄いほどdropするまえにトレードを検討すべき、となる選手が多いということになります。

編集後記

このように、ある選手についてどう取引すべきか(add/dropかトレードか)というのは、場合により異なります。2つしか選択肢がないので、片方が有利な状況であればもう片方はとるべきではない道ということになる、まぁ、あまりに当然のことで、書いてみてちょっとがっかりなエントリでした。FA層の厚さを書くときからからわざわざ数回に分けて相当検討を重ねたのに・・・ま、浅はかさ故なんでしょうね。

何となく自分で整理できた気がするからよしとしましょう。



トレード (12)価値軸を増やすとトレードは増加する

価値軸を増やすと、探し得る案件の数は増加します。


他のチームは何を考えているかわからない

ある選手を出す場合の、トレード案件の潜在的な数(マーケット)は、トレードの容易さに非常に密接に関連します。

FA以外の選手について、ある選手(以前からの例を使い、たとえば2B2(5))で取得できる3Bのマーケットの広さというのは、他のチームの状況に左右されます。

他のチーム(たとえばA)の3B(たとえば3B1(10))について、Aが、2B2(5)と交換するかというのは、Aにとって2B2(5)が何らかの面で、3B1(10)を上回る価値を有すると考えたときのみになります。

ここでポイントになるのは、実際のゲームでは他のプレイヤーが何を考えているかわからないということです。

もし、Aが2B2(5)の方が3B1(10)よりも価値があると思えば、2B2(5)を対価とするマーケットに3B1(10)は存在することになり、そうでなければ3B1(10)は存在しないということになります。

そして、Aが2B2(5)と3B1(10)をどちらが価値があると考えるかは、Aの価値軸の数や価値観によって変わってくるので、これをBが想定するのは非常に難しい。Orankという便利な物差しで説得されてくれる相手であれば楽ですが、大概100%Orankに従って動いている人などいないので、大概、手探りでマーケットを確認していくことになります。

このように2B2(5)をベースにした場合に、他のチームに所属する選手について、マーケットがどのくらいあるのか、それを画する作業自体非常に困難を伴います。

式で考えてみる

以下の状況設定で式にしてみます。

選手

所属

客観的価値

Aの認めるプレミアム

Bの認めるプレミアム

X

A

oX

pAX

pBX

Y

B

oY

pAY

pBY



なお、以前から書いているように何を客観的価値とみるかは人それぞれで、客観的な価値とプレミアムの境界は非常に曖昧ですが、ここは両者が区別可能との前提で考えることにします。で、この客観的な価値(oY、oX)はAB両方がわかるものとします。

最初XはAに所属し、YはBに所属します。従って、最初のお互いの満足度はこんなかんじ。

A X(oX+ pAX)
B Y(oY+ pBY)

AがBにオファーをするのは、Aにとって、XよりYの方が価値がある場合ですから、以下の式が満たされる場合です。

oX+ pAX < oY+ pAY

式で書くと難しそうですが、言っていることは単純です。AがXよりYが欲しいと思ったらオファーする、それだけですね。

逆に、Bがアクセプトする条件は、BにとってYよりXの方が価値がある場合です。

oY+ pBY < oX+ pBX

この両方の式を満たす場合のみトレードが成立します。

Aにとっての「Xを対価として得られる選手」のマーケット

じゃ、AがXを持っていた場合、対価となり得るYはどうはかればいいでしょうか。いずれの式もoYでまとめてみます。

oX+ pAX – pAY < oY < oX+ pBX- pBY

これを満たすYがマーケットにいる選手ということになります。

なんのこっちゃ、という感じですが、要は、自分がXを出して相手もYを出してくれる、こんな関係にあるYはこの式を満たすことになります。

ABいずれもXYにプレミアを認めないと取引成立することはありません。上の式で言うと、pがついているのが全て0である状態です。

唯一oX=oYのときに成立し得ますが、そもそも取引をする必要がありませんからね。

価値軸を増やすとオファーの範囲が広がる

設定上、Aがわかる数値は、oX、oY、pAX、pAYの4つです。

価値軸を増やすというのは、pAY、pBYの値の取り得る幅を増やすということですね。プレミアムというのは要は自分の持っている価値軸のうちどれかを使って得られる値ですから。これにより、上の式で見る場合、oX、oYに比べたプレミアムの部分が相対的に大きくなり、オファーできる案件が増えます。

具体感のある数字で言うと、たとえば、oXが100であるとします。でプレミアのありえる値の範囲が-10から10(以下表記は[10]とします。)とします。たとえば嫌いとか、同じポジションの上位がいるとすると、マイナスのプレミアがつくわけですね。

オファーできるかは、oX(100)+ pAX[10] – pAY[10] < oY、を満たすYですから、取り得るoYの値は、80-120。

一方、あり得るかどうかはともかく、極端な例としてプレミアが[50]だとすると、

oX(100)+ pAX[50] – pAY[50] < oY

オファーできるYのoYは0-200と広がるのです。

プレミアはいろんな価値軸ではかったときの値ですので、その最大値は、価値軸を増やせば増やすほどプレミアの比重が大きくなります(上の設定の仕方だと[10]とかなっているうちの、10の数が増加する感じです)。従って、オファーできる案件も増えるのです。

価値軸とアクセプトの範囲

一方、アクセプトするか否かは、以下の式。

oY < oX+ pBX- pBY

Bのプレミアの付け方がわからないAとしては、これを予測するしかないのです。なので以下の範囲はAの予測ベースの話ということですね。この場合も、価値軸が増えて、上記のように[10]が[50]になると受諾(予測)の範囲は増加します。

これは何を意味するかというと、一見誰も受けそうにないオファーでも、実は受けるかもというオファーを見つけるのに役立ちます。

トレードは交換が基本なので、相手が極端なプレミアムを払ってくれたり、こちらが極端な形の崩れをなおしたりするのでなければ、直接大幅なチームの増強はありません。したがって、このように価値軸を増やして、相手が受ける「かも」という案件をたくさん見つけることができるというのは、トレードでチームを継続的に強くしていく上では重要な能力となります。

なお、相手がその価値観をもっていることが確定できる(たとえばバランス重視、Orank重視、大砲好き、先発軽視・重視、盗塁重視とか)のであれば、相手が受ける「かも」という具体的な案件を見つけ、取引にこぎ着けることができる可能性・こちらが最大限の利益を受ける点を探す容易さが増大します。これはpBX、pBYの値を[10]から8とかに確定していく作業ができるからです。敵を知り己を知らば百戦危うからずといいますが、敵を知りの部分ですね。

まとめ・雑感

価値軸を増やすとトレードでオファーできる案件が増え、また見つけることのできる、受けてもらえる「かも」という案件の数も増えます。

これは実際の感想とも合致する感じです。

何度も書くように、野球は他のスポーツに比べて制約がきついので、いろいろな価値観というのは比較的容易に見つけることができます。これを増やすだけで、トレード成立件数というのは結構増える感じですね。無論リーグのメンバーの性向にもよりますが。

実際の社会でも、ま、門外漢雑感ですが、再生案件とかはまさにこんな感じなんでしょうかね。再生対象が決まっている場合は金集め(投資家探し)で、お金・投資家がすでにいるファンドでは案件探しで、こういった、受ける「かも」の層をより広く見つけることができるというのは、結構重要視されるのかもなと。

2008-05-15

トレード (11)FAの実力を知る

add/dropでもトレードでも、いつでもアクセスする事ができるFAの状況を知るというのは非常に重要になってきます。


FAとは

FA(Free Agent)とは、どのチームにも所属していない選手の一団をいい、この状態の選手については、基本的にどのチームでも即座に自分のチームに加えることができます。

add/dropの対象となるのはFAにいる選手ですので、これらの選手の状況が重要になるのは当然です。一方トレードの場合は、FAという選手を非常に安価で提供してくれる第三者としての役割を果たします。

このFAについて、通常のパブリックのフォーマットで遊ぶ場合、圧倒的に外野手、先発投手に有力な選手が集中するということは従前より書いているとおりです。

FAの実力をはかる

こういった機能を果たすFAについて、多くが語られることはとても少ないです。そこで、ここでは手探り状態ながら、FAの実力をはかってみたいと思います。

そもそもこのFAの実力、人数が多すぎることもあり、どのように把握すべきか、それが悩みとなります。ここでは、ゼロサムゲームであることを利用した計測をしてみたいと思います。

大リーグの1週間の記録は全て、各ファンタジーチームに所属している選手かFAにいる選手により記録されます。で、ファンタジーチームに所属している人数はほぼ一定です。

FA層が薄いと感じる場合、多くの記録が各チームに所属している選手により記録されているということでありましょうし、FA層があついと感じるということは、多くの記録がFA選手により記録されていることになると思います。

add/dropも私の遊び方の場合、多くはそれ専用の枠を用いた短期的な成績を求めるものです。また、トレードで他の人が選手を獲得するかというのを判断する場合、選手のそのときの調子というのはとても大きな役割を果たします。もともとランクの高い人からトレードしているので、皆がランク通りの実力を発揮していればトレード・レギュラー獲得用のadd/dropの必要はないのですが、レギュラーに一定数は不調選手・怪我選手が発生しますし、FA選手にも大化けする選手・絶好調になる選手というのが発生するため、これらが必要となるのです。

こういった遊び方を想定する場合に、一番知りたいのは、今現在のFA市場の状況です。これのはかり方として、野手・先発の場合1週間の成績を考えるということが可能ではないかと思います。

1週間のうちどれくらいの割合の記録(野手の場合本塁打・盗塁・得点・打点・安打数、先発の場合勝星・奪三振・投球回数)が各チームに所属している選手によって記録され、どれくらいの割合の記録がFA選手によって記録されているかをチェックしてみることにしました。率系の数字は把握が難しいこと、クローザーをはじめとするRPは情報により取得する確率がおおいことから、計測の対象とはしていません。

具体例

以下は、私がコミッショナーのリーグ(14名のリーグ。比較的コンペティティブで、FAが薄いと感じます)の今日現在のFAとチーム所属選手について、昨日までの1週間を対象としたデータです。選手欄のall taken players とall available playersを利用しています。イニング数は1回1/3を投げた場合1.1と表示され、1.1と1.2を足すと本来3ですが、この集計では2.3となるので、正確ではありません。


taken

%占有率

FA

%

HR

114

71.7%

45

28.3%

SB

77

66.4%

39

33.6%

R

500

62.7%

298

37.3%

RBI

476

60.6%

310

39.4%

H

998

58.7%

701

41.3%








%占有率



W(SP)

35

49.3%

36

50.7%

K(SP)

433

53.3%

379

46.7%

IP(SP)

543.6

47.1%

609.6

52.9%




これが総合計ですね。FAに残っている割合の少ない順にHRでした。投手はいずれも半数くらい残っている感じですね。この週はどうやらエース級の登板が少なかったようで(おそらくローテーション3-5番手が多かったかと)、チームに保有されている投手の占有率が50%位になっていますが、その前は60%くらい保有されていました。また、その影響からから、攻撃statsの総数は相当違い、この週の方が高いです。ただ、野手に関しては割合は一緒くらいでしょうか。

今週活躍した人(週間Orank100位以内)

Orank100

Taken

(total)

typical

FA

(total)

tipical

Wright 07

per 7 games

人数

49


12


160

7

HR

72

1.5

16

1.3

30

1.3

SB

34

0.7

9

0.8

34

1.5

R

230

4.7

48

4.0

113

4.9

RBI

237

4.8

53

4.4

107

4.7

H

408

8.3

75

6.3

196

8.6















Orank 100

Taken

(total)

typical

FA

(total)

typical

Peavy 07

per 2 game

人数

15


12


34


W(SP)

16

1.1

16

1.3

19

1.1

K(SP)

145

9.7

88

7.3

240

14.1

IP(SP)

152

10.1

137

11.4

223.1

13.1



これを見る限り、野手は、盗塁をのぞいて、1週間限定であれば超一流選手と同様の数字を残すFA選手というのも十分に手当可能ということになります。ちなみにこのFA12名のうち外野を守れるのは6名で、やはり半数でした。その前の週は実にFAの平均盗塁0でしたので、一般に盗塁を活躍するFAから稼ぐというのは結構難しいのかもしれません。add/dropのところで書いたように数字が少ないので、add/dropでねらう対象としたいところですが、なかなか難しそうです。走りまくりのレギュラーをFAからとるということはできてもadd/dropで日々稼ぐというのは難しそうですね。よってレギュラーで盗塁は確保したいかも、と思われます。

投手についてやはり目につくのは、奪三振率の難しさと、勝ち星の容易さでしょうか。SPをadd/dropしてやっていくというのは結構作戦として良さそうですが、その場合、よっぽどレギュラーで奪三振率というのをしっかり確保しておいた方が良さそうですね。そうしないと年間1000奪三振(0.8K/IP)が厳しくなりそうです。少なくともこの週、前週の活躍したFA先発の平均奪三振では足りませんでした。言われているように奪三振率重視で投手をとるのもいいのかもしれません。逆に奪三振のないタイプをドラフトで指名した場合add/dropでイニングを補うというのではなく、しっかり頭数をそろえてローテーションを守る方がいいように思われます。

以上は1週間の成績ですし、成績のいい人はすでにaddされていたり、スポットでのadd/dropの結果、今FAでも成績自体はチームにカウントされている場合もあると思います。またその分析も人それぞれと思います。ただ、全般的なざっくりした傾向は、結構感触とあっているかなという感じです。

自分のチームの選手がどのくらいの成績を残しているのかというのを比較する対象にもなるかもしれません。特に結構活躍しているというためには、ざっくりHが10本、R/RBIが各5点、HRが2本、盗塁1つくらいは欲しいというのは、実際使いやすいデータではないかと思います。ま、不調選手がいても好調選手で補えていればいいんですけどね。

毎週こんな事をしているわけにもいきませんが、たまにはいいのかもしれません。



ネットサービスは夜つかわない

今日はやってしまいました。



Facebookというサービスを利用しているのですが、先日飲んだ友人も使っているというので、友人として紹介しようと思い立ったのが昨日深夜・明け方。

Gmailのアドレス帳から友人を捜すサービスがあるのでこれはいいと、これを利用したところ、、、、アドレス帳に載っている全員に招待状が行っちゃいました(爆)。

前の職場の同僚も、今の職場も、教授も、よく知らない人(笑)も。加入しているMLにも。

皆さんもご注意ください。

こういう危険のある作業はトレードで疲れた頭でやってはいけません。。。。

あー、しかし朝からへこむなぁ。
ま、加入時以来の爆発的な友人の増加だし、いいか。


2008-05-10

トレード (10)Orankの有効性

Yahoo!では誰でも気軽に選手の価値を計れるようにOrankというものが提供されています。これは非常に良くできていて、使い勝手がいいものです。


Orankの必要性・有効性

Original Rankの略でしょうか、ちょっと定かではないのですが、Yahoo!のファンタジーベースボールでは、選手をそのファンタジーにおける価値に応じてランク付けしています。それがOrank。

はじめて遊ぶプレイヤーは、実際の選手を知っていようと知っていまいと、ファンタジーにおける選手の価値というのは基本的に知りません。従って、これを測る物差しが欲しい。また、ある程度経験を積んだプレイヤーでも選手全員の価値を覚えておくなどと言うことは不可能で、なにか基準になる指標がほしい。それに答えてくれるのがOrankです。

Orankは実際にドラフトで選手を獲得する際の指名順位の検討、トレードの際の価値の検討、add/dropの際の将来性の目安など、さまざまな面で活用されます。とにかくわからないことがあったら、自信がなければないほど、頼るべきはOrankなのです。

Orankの優れた点は、全選手を1つのランキングで現していることです。一般の人間にはポジションの違う先発・抑え・打者のファンタジーにおける価値というのがわからないところ、これすべてOrank1つでとりあえずの指標が出るのです。たとえば、日本のプロ野球で言うと、神様仏様といわれた稲生と、世界の王、どちらがファンタジー的に価値があるのか、また、名勝負といわれた江川と掛布、今の阪神で言うと金本と藤川、どっちがファンタジー的に価値があるのか、さっぱりわからないわけです。同じファーストとかであればまだ比べられるものの、ポジションが違うと相当難しい。そういったものを1つのランキングであらわすというのは大変難しく、それだけに精度が高くそれをしてくれるとすれば、その価値は著しく高いのです。

Orankの精度については、いろいろ議論もあるところですが、少なくとも野手で50番以内、先発で言うと100番以内位をとって、1年間どうしようもなく失敗しているという確率は驚くほど少ないです。メジャー全体での選手の数から考えて、これだけ確率の高い選手をちゃんと選び出す眼力というのは本当に驚くばかりです。さすがファンタジー大国アメリカというのを感じることができます。

実際のゲームに当たっても、とりあえずOrankに従って選手を集めるようにすれば大やけどをする可能性はきわめて少なく、Orank集めということをするだけで、ふつうのパブリックのカジュアルリーグであれば勝つことができるのではないか、そんな風にすら思います。それくらいできがいいです。

実際に数十万リーグを運営して傾向をはかっているYahooだから精度が高いというのもあるのかもしれません。実証データが多いので。

はじめてファンタジーをする際は、是非このOrankというのを重視してプレイすべきではないかと思っていますし、実際そう進めています。

Orankの限界(フォーマットに応じた修正)

不思議なことにOrankを皆が重視してゲームをしていても、なぜか毎回勝つ人は勝ち、負ける人は負ける、そういう結論に至りがちです。

これは1つには、無論超大物新人を発掘する目というのがあります。たとえば野球であれば、やはりメジャー通という感じの人は強いです。特にマイナー情報にまで通じている方は。

ただ、友人連中といくつかのスポーツを一緒にプレーしていて思うのは、やはりフォーマットや、点数の付き方、稼ぎ方という型は結構あるのかなということです。Orankだけを重視していると毎回勝つとかいいところで競うというのは難しいのではないかと。

そりゃそうなんです、考えてみれば。

オートドラフトの時は基本的にOrankに従ってチームが作られます。そんなにリスト作りには時間をかけない人がオートであることが多いので。で、そのまま誰もadd/dropしなければ非常に競るか、というとそうでもないのかなと思います。やっているリーグは余り見ませんが、結構差がつくのではないかと。

これは神ならぬ身で結果を完全に見通せない以上、当然ですね。

従って、Orankは重視すべきであるが、リーグのみんなが同じくらい重視しても同じ成績(似た成績)とならず、結構差がつきます。そのときにできてくる各statsのポイントの格差を調整するバランス感覚が問われてきます。

Rotisserieでは、パブリックの場合その部門1位になると12ポイントが最下位になると1ポイントが与えられ、10部門の合計点をポイントとして競うという話は以前記載したとおりです。

各stats、ポジションといったいくつもの要素を乗り越えて一列に実力評価してくれているOrankですが、無論チームによる調整は必要になります。選手の調子が全く不変であって、プロジェクション通りの実力が出るとしても、実力のある同ポジションの選手2名より他のポジションの選手の方が合計点は高くなりますし、盗塁をやたらするタイプ2名で盗塁部門ぶっちぎるより、その位のOrankの人でホームランを打てる人をとっておいた方が全体のポイントは高くなるのです。

要は、1部門ぶっちぎりで1位(12点)で、もう1部門最下位(1点、合計13点)より、2部門ぎりぎり4位くらい(各9点、合計18点)の方がよっぽど点数が稼げます。

実際は誰にも読み切れない調子の波があり、しかも終盤はトレードができません。

そうすると、戦略としては、とりあえず全体が競うくらいのレベルに各Statsのプロジェクションを持って行っておくという調整が必要となります。

これができるか、というのがOrank重視の中でチームを作りながらも一番重要になる変更点です。これがいつもできる人は、結構いろんなフォーマットでファンタジーに強いということになりますし、それを意識しないで遊ぶとたぶん詳しいスポーツだけ強いということになると思います。

この集団がどのくらいの数字を出すか、そのためにはOrankに従った選手の選択からどの程度修正が必要か、そういうことを考えられるかですね。特にみんながOrankを重視する場合、これが重要になってきます。フォーマットに応じてOrank以外の価値軸を持って修正してやるということです。

Orankのその他の限界

Orankにはその他にも内在的な限界があるように思われます。

1 期待値を使用せざるを得ない

以前も書きましたが、ランクを作るというつもりになると、選手の結果の期待値順に並べるしかないというのがあります。故障者、期待の新人が活躍するか、何試合くらい活躍するかはある程度率で考えてやるしかないのです。どうやっているのか詳細は不明ですが、10の力のある人が7割くらいの確率でレギュラーかなという場合に、10を前提にランキングを作っていくのは難しく、割合的に7とするか、せいぜい8か9くらいとせざるを得ないのです。たとえば7にした場合、本来的にフルに実力を発揮して7の人とランキング上は並びます。ただ、割合的に7となっている人は実際は(理論上)0か10で7と並ぶことはないのです。期待値が一緒と言うだけで。

ここら辺の発想はドラフト時点でどの順位でどういう評価のタイプの人をとるのかという判断の時に結構影響する発想です。

2 各ポジションを1つの数列で表している

Orankは基本的なポジションプレミアムを考慮していますが、そのリーグのフォーマット、FAの需給状況は当然加味していません。

ポジションプレミアムでいうと、キャッチャー2名というYahoo以外のファンタジーの伝統的なスタイルだともっとキャッチャーのプレミアムはつくのかもしれませんし、1B/3Bを表すIF、2B/SS用のポジションであるMFを入れるとポジションごとのプレミアムは変わりますし、Utilの数、BNの数、投手のポジションの数などによってもプレミアムは変わり得ます。

また、何名が積極的にadd/dropをしているかということによってもFAの調子のいい人のうちavailableな人の人数は変わってきますが、これでもプレミアは代わり得ます。

従って、ポジションの一般的になプレミアムは加味されているものの、フォーマット、リーグの状況を加味した、「自分のチームにとってのプレミアム」は基本的に考慮されていないのです。Orankを重視したければ、Orankが想定する状況に自分を合致させるほかなく、それは結構難しいです。大概はOrankを修正して自分に適用する方が手軽ですから。

野手と野手・投手と野手・抑えとそれ以外、などOrankを修正して考える場面は多々あります。

4 各スタッツを合わせて1つのリストにしている

盗塁のできる人の次に、大砲が、次に先発が、抑えがと一見ランダムに並ぶのがOrankです。しかし自分のチームにはどのタイプもまんべんなく必要なのです。したがって、盗塁タイプのみ、先発のみと指名を重ねてしまわずに、どのタイプもバランスよく取りそろえたチームというのを常に念頭に置いてやる必要があり、その場合にもOrankというのは修正して適用されるべきです。

プレミアムという文脈で言うと、フォーマット、FA状況、自分のチーム状況等、具体的状況に応じた必要なスタッツのプレミアムは示されておらず、あくまで一般的なプレミアムがついているに過ぎないと言うことですね。

5 調子、怪我、起用方法、ポジションの変更が逐一反映されない

どのスポーツでも毎年新人王はおり、毎年どのチームも血の入れ替えというのはなされます。ただ、Orankというのは基本的には動かず、これらの情報の反映というのは後手後手に回らざるを得ない状況になります。

最終的なチームの強さは、これらの要素を加味したチームの方が強いのは明らかで(突然出現した怪物級の新人王がいるチームは強いです)、Orankが反映されていないうちからこういった選手を使いたいのは無論です。

それと同様に絶不調であることなども選手価値の下落要素のはずですが、Orankにはほぼ全く反映されません。従って、Orankをベースにしつつも自分で反映してあげないといけない情報の一つとなります。

この点でもOrankだけにとらわれない(他の情報で修正してあげる)チームの方が強くなります。

6 ゲームであること

Orankというのは価値の指標となっていると同時に、ドラフトで何も指示をしない人のチーム作成に大きな役割を果たします。特にプレイヤーが指示をしない場合、コンピューターがOrankに従ってチームを作るのです。

一部の人がライブドラフトで指示をしない場合はともかく、オートドラフトとか、全員が何もしない場合になるべく平等なチームになるように、毎年ある一定のランクのところにある一定の役割の選手を入れている場合があります。

フットボールを経験するとポイント的にはあまり稼がないもののその数の限定性からRBが上位に相当並びます。また、野球でも抑え、1Bの上位、先発の実績派、期待の新人など、少なくともここ2年くらいは、だいたい同じくらいの順位のところに特定のポジションの同じくらいの活躍が期待されている人が並びます。

本当に活躍度だけで判断するならば、毎年ランクは大きく変わるはずなのですが、この方がゲーム開催者の運営方法としてまとまりがいいのではないかと思われます。従って、本来は結構差がある同じポジションの人が並んでいたり、逆に結構差が少ないのにランク的には相当差があるように見える人というのが存在します。むろん、Ornakのやり方の「逆を行く」のがおいしいやりかたであることは言うまでもないですね。ま、どれがそれかわからないのがふつうというのはありますが。

7 下位のOrankの信用性が低い

Orank下位の人には毎日のレギュラーではない人(期待の新人で2軍にいる人、ツープラトン作戦の一部になっている人)が大量にいます。これらの人はレギュラーになったとたん価値が上がります。

また、クローザー候補の下位も優秀なセットアッパーより下に位置されていますが、これも確定クローザーになったとたん価値が急増します。

このようにそのチームの作戦次第で価値が急増する人のOrankというのは概して低くなっています。判断のしようがないので並べてあるだけだと思いますし、それはそれでいいのかなと思います。

こういったOrankの低い人のランクはある日突然数百上がることもありますし、ずっと放置されることもあります。ここら辺の感覚は正直よくわからないため、私の中でのOrank(低い部分)への信用性は低いです。

このようにいろいろ限界はあるOrankですが、トレードを戦略の一環として多用する場合、みんながこれを重視する以上、自分のチームも重視すべきです。Orankが高いというのはそれだけで選手の価値を高く見てくれる人が多いと言うことですから。たとえ不調の人であっても好調の兆しを見せるだけでトレードの材料にできたりします。一方、Orankの低い人だとそうはいきませんから。