めざましテレビ
金曜日の早耳ムスメは臼田あさ美ちゃーん,お題は「美脚に見える! 注目のショートパンツ」.
久しぶりにあさ美ちゃんのファッションネタ♪
にしても,ショートパンツっていろんな丈があるのね.
あさ美ちゃんのイメージだとどんなショートパンツだって似合いそうな気のせいがするわけですが,実際には微妙なものも.
ホットパンツほど短くなくて,ハーフパンツほど長くない,まさに半端丈なパンツがそれ.
足が太く短く見えるような気のせいがします.
あさ美ちゃんでこれだから,この半端な丈のパンツは JESSICA ちゃん級でないと似合わないのではなかろうか?
この前,深夜の番組で JESSICA ちゃんがホットパンツで出てたけど,とんでもない脚の長さでしたよ.
その点,ハーフパンツの方はスッキリして見えますね.
個人的にはハーフパンツの方が中途半端な気がしてキライだったのですが,ちょっと見直しちゃいました.
ともあれ (JW),あさ美ちゃんの出番をもっと増やしてほしい今日この頃です.
そしてスタジオへ行くわけですが...
着替えることなく前で合わせるだけってのはいかがなものか?
スタジオ行かなきゃいいじゃんと思う今日この頃です.
SRS
5代目格闘ビジュアルクイーンとして西山茉希ちゃんが登場.
ちなみに歴代ビジュアルクイーンは書くまでもないけど書いておくと,
そんなわけで (どんなわけで?),CanCam と JJ の持ち回り制です (?).
っていうか,東原亜希は 4 代目格闘ビジュアルクイーンに決まった後に JJ モデルになって,でも JJ での出番はほとんどなかったわけですが.
ともあれ (JW),西山茉希ちゃんなら先輩 CanCam Models 同様の大ブレーク間違いナシでしょう.
デビュー戦となった金曜日の放送でも,ハセキョー初登場時並みのインパクトあるかわいさを発揮していたと思うのですが,キーワード的にはあまり反響ないみたい?
でもまぁ,時間と共に男どもにも浸透していくに違いない!!
やっぱり CanCam 最強伝説と思う今日この頃です.
引数名
S2Container 2.3.9 に含めてリリースしてしまった BeanDesc
の引数名取得機能ですが,肝心要の Java interface
からは引数名を取得できないという指摘をきむきむから頂いてしまいました.
調べてみたら,確かに取れない...
interface
に対して使うことを意図しておきながら class
に対してしかテストをしていなかったという...
心より恥じる.
実際には,interface
のメソッドだけでなく,抽象メソッドの引数も取れません.
メソッドの引数名はメソッド情報 (method_info
) の コード属性 (Code_attribute
) 中の ローカル変数テーブル属性 (LocalVariableTable_attribute
)に含まれているのですが,JVM 仕様によると
If the method is either native or abstract, its method_info structure must not have a Code attribute.
とほほ...
要するに interface
のメソッドの引数名は class ファイルに含まれていないわけで,ランタイムではどう頑張っても引数名を取れないわけね.
でもでも,引数名が取れないと Kuina-Dao なんかでも S2Dao の Args アノテーションみたいな事をしなきゃいけないわけで,それはやっぱりいやーんな感じ.
ってことは,コンパイルタイムの助けを借りる (ポストプロセス) しかないわけね.
それはそれでビルダを外してクリーンビルドしなきゃいけない事態を招いたりとかいやーんな感じがしないでもないのですが,背に腹は代えられないわけで.
ともあれ (JW),その方法としては,
がすでにあるわけです,と.
んで,APT だと Java5 に限定されてしまうので,とりあえず Doclet 使う方向で再検討.
きむきむのは Doclet で取得した引数名をテキストファイルに書いていたわけですが,それに対して manhole さんから Javassist で class ファイルに書き込めないかというコメントがありました.
そんなわけで (どんなわけで?),その部分をまずは実装しました.
その名も ParameterNamesEnhancer
.
こいつは,外から与えられた引数名を次のようなアノテーションが書かれたかのように class ファイルに埋め込みます.
public interface Hoge { void geho( @ParameterName("foo") int foo, @ParameterName("bar") String bar); }
アノテーションといっても,class ファイル上は単なる属性の一つに過ぎないので,これは J2SE1.4 の class ファイルでも有効です.
そして Javassist を使えばこのアノテーションは J2SE1.4 上で読むこともできます.
そんなわけで (どんなわけで?),BeanDesc
は Javassist を使ってこのアノテーションを読み出し,引数名を取得できるようにします.
つまり,J2SE1.4 でも Tiger でも引数名を取れます.
もちろんこれはアノテーションなので,Tiger の場合は Method#getParameterAnnotations()
で @ParameterName
アノテーションとして取得することができます.
残念ながら Backport175 では引数のアノテーションは取得できなかった気がするので AnnotationReader
からの取得は (おそらく) 無理ですが,BeanDesc
から取れればたいていの場合は十分ではないかと.
ちなみに,Tiger では上記のコード例のように明示的に @ParameterName
を書くことで,実際の引数名とは異なる名前を与えることもできます.
引数名を上書きするイメージですね.
そして BeanDesc
はアノテーションがなければデバッグ情報を見に行くので,両方合わせると次の優先順位で引数名を解決することになります.
- 明示的に付けられた
@ParameterName
アノテーションのvalue
値 - Doclet で付けられた
@ParameterName
アノテーションのvalue
値 - デバッグ情報の引数名 (非
abstract
メソッドのみ有効)
ってことで,Kuina-Dao はこれを使おうと思います.
P.S.
Doclet 対応もでけた.
きむきむの ArgsDefMaker
のおかげです.