S2Container.getComponent時のキャストを無くす

しばらく触ってないとすっかり忘れますね(^_^;

Test test = (Test) container.getComponent(Test.class);

キャストっているんだっけ?と思って過去の成果物を見てみると、みんなAutoRegisterでコンポーネント登録してたからgetComponentなんて書いてない。たまにこういう根本的な部分のコードを書くと書き方忘れてますね。いつもフレームワーク頼みの部分です。実際はこう書きたい。

Test test = container.getComponent(Test.class);

getComponentの戻り値がObjectになってるのでキャストは必須だと思われる。この件とは別にこういう処理でキャストを不要にするにはどういう作りをすればいいのか?というのが一瞬思い浮かばず実験してみたら書けた。

public static  T getComponent(Class clazz) {
    S2Container container = SingletonS2ContainerFactory.getContainer();
    T component = clazz.cast(container.getComponent(clazz));
    return component;
}

※実際に上記コードと同じ事をしたければ
Test test = SingletonS2Container.getComponent(Test.class);
でキャスト不要です。上記は実験用の冗長なコードです。

このメソッドを経由するとキャストが要らなくなった。こういうもんか?と思いつつこのメソッドは使用しないでAutoRegisterにまかせる事にした(笑)

private @Binding Test test;

こうすりゃいいのでこっちの方が楽だった。publicにすればアノテーションもいらぬという。

趣味でプログラミングすると抽象的な何かができる

自動生成エンジンのコアにあるテンプレートエンジンを設計しているんですが、インターフェースだらけです。

最初は紙面上でおおまかなモジュールのかたまりと、入出力をまとめていました。その後に具体的な要件を書き足していって、要件ごとに抽象化をしていったんですが、インターフェースだらけになりました。具象クラスが1個しかあり得ないならインターフェースを作らなくてもいいんじゃないか?と思うんですが「いや、いつ具象クラスが増えるか分からないし・・・」とか思ってインターフェースを切り出してしまってます。入れ替える事を前提に考えてしまうんですね。それで具象クラスを入れ替える方法としてDIかFactoryにしようとか思ってたり。Factoryそのものも入れ替えられるようにして・・・とかいくと、結局全ての登場クラスがインターフェースを持つ事になってたりします。

何かを入力として何かをして何かを出力するインターフェースとか(謎)。それは入力と処理と出力があるって定義しているようなもんで、抽象的すぎる。でもクセなのかなんなのか抽象化をしてるとあまりにも抽象的なインターフェース郡ができます。いつか必要に・・・ならないと思いつつもそういう設計をしてしまうのは性格なのかクセなのか・・・弊害が無いのでいいんですけど、第三者には実態のつかみにくい作りでしょうね。害が無いなら蜜結合の方が追いやすいと思った今日この頃です。

ローカルにHudsonとかMavenリポジトリとかSVNリポジトリがあるので開発環境としては快適そのものです(笑)ひとりで開発してるのにいらない気もしますが、JARを拾ってくる手間が大幅に軽減されるのでMavenだけは手放せません。そんなわけで休みの日の時間がある時はコツコツプログラミングしているのでした。休みの晴れた日にパソコンに向かってるのも不健康だなぁと思いつつ楽しいからいっか!と楽天的な私でした。

日記のカテゴリ

過去のGAMEカテゴリを見返してみたらマニアックな話題ばっか(笑)

他のカテゴリも基本的には分かる人にしか分からない話題ではありますけど。カテゴリを見ると技術な人だったんだなぁと思います。ポ○ムカテゴリは今見ると「おまえは何を言ってるんだ(参考)」という感じ。。。

そういえばCABAL Onlineまだやってます。

約1年ぶりにゲームの話題を。それくらいの余裕が今はあります(こんな時間からやっと余裕になるのだが・・・)

CABALはいつからやりはじめたんだっけなぁと日記をさかのぼってみると2006/10/13から始めてました。もう2年以上続けてます。毎日やってるわけじゃないですし、2ヶ月以上ログインしなかった事もありましたけど、キャラは順調に育ってFA Lv135 TR/TRになってます。他にもBLとFBを育ててて2キャラともスキルだけはCP/GMになってます。

相当後半までソロでできる上、1回のプレイ時間5分とかでも大丈夫なコツコツプレイ可能仕様なので忙しげな私にはぴったりのゲームです。FA,BL,FBと育ててますが、爽快感はFBがいいですね。多段ヒットがすごいのとエフェクトがカッコイイので心地よいです。BLも多段ヒットしますけど、FBの方が派手で好きなエフェクトです。ただBLもFBも攻撃間隔が長いのでミスった時延々空振りを見なければいけないのが寂しい。サクサク狩りたい時はFAですね。ただちょっと火力が弱いのと打たれ弱いのでまとめ狩りしてる時にミスると即死亡です(装備が貧弱という話も・・・)。

3キャラ育てているのでその時の気分に合わせてキャラを使い分けてます。レベリングはあまり目的にならず、ごくごく稀に出るレアドロップに歓喜するか、攻撃時の爽快感を味わって気分をリフレッシュするだけなんですが、なぜか飽きない。まだまだ続けられそうです。

CABALを知ってる人にしか分からない話題でした。

一息ついてます。

11月に入れば落ち着くかと思ったら案の定落ち着きませんでした(お前が落ち着くとか無理だろと思ってた方正解!)

今は長期に渡った仕事がひと段落して、次の仕事へと仕掛かっている所なので比較的落ち着いてます。

と言ってもすぐに忙しくなってしまうと思います。この落ち着きがあと何日続いてくれるか・・・。

現在の仕事の課題は設計リードタイムの短縮です、自動化が進む製造工程は時間的に問題になる事が減ってきています。製造ミスによる差し戻しはまだ問題として残っていますが、自動化が進んだ分品質も一定以上を保つようになりました。人間が考える部分を減らす事(実績から自動入力)、意思の反映を補助する事(類似実績から入力)が近日の目標です。補助を受けるにあたっての入力情報が多いとそれだけで時間を食うので、ソフトウェアへの指示がもっと楽にできるデバイスが欲しいですね。コンピュータと双方向の意思疎通ができるようになるのはいつでしょうか。その時はきっと「雑念フィルター」が売れると思います(笑)

雑念フィルターで思い出しましたけど10年くらい前でしょうか。音声認識ソフトを始めて使った時とても誤認識が多くて「違う違う!」「そうじゃない!」「えーっと」とポロっと言った言葉もそのまま入力されてしまい使い方が難しいなと思ったもんです。「バックスペース!」と言うと文字が消えるのではなく「バックスペース」と出て「ですよね〜」とかも思いました。今は認識率が上がってそういう事も減りましたけど、雑音フィルターみたいなのは独立してるのを見たことが無いですね。内蔵されているのか必要ないくらい認識率が高くなったのか。なんにせよ人間の意志をコンピュータに直接入力できるようになったら雑念フィルターが欲しいと思います。誰でもきっと画面に出てこられると困る雑念があると思いますから(笑)

生きてます(゚Д゚)ノ

ごぶさたしてます!ちょうど1年間を空けて何事もなかったように再開しようかと企んでましたが生存確認が結構あるのと最近更新してないねぇ?というリアルツッコミに応答する形で久々の投稿です。

現在日本に居ますよ。転職して1年以上経ちましたがまだ落ち着いてません。今の居場所は生産工場のど真ん中です。

IT技術系は現在も手広〜く学習してます。ここにネタとして投稿すれば結構な量になるんですけど、忙しいせいでゆとりがなくて。。。時代についていくのは大変ですけど新しい発見があるのでやっぱりやめられない。暇を見つけてはコツコツと学習と開発をやってます。新しい言語を学んだり、新しいフレームワークを習得したり、新しいソフトをいじってみたり、自分的最強フレームワーク作ったりジェネレーター作ったりだけですけど。目指せ日曜プログラマー!な勢いです。

というわけで落ち着くのは11月に入ってからです。ではまたその時まで。