JSFじゃんけん作った
TweetPosted on Monday Dec 29, 2014 at 09:37PM in Technology
Java開発者クラスタの間で若干流行っていた「じゃんけん」を作り,せっかくなのでJSFで画面を付けてみた.
今のところ,デプロイしてあるのを遊ぶ事も可能.ソースはGitHubに置いてある.
JSFなのでサーバサイドとの通信が起こるのだが,Ajaxにしてあるので大して重くはない.無駄にハイスコアと連勝記録が残るようになっている.記録は@ApplicationScopedのBeanに入れてあるので,APサーバが再起動されるまで残るようになっている.このような複数スレッドからのアクセスが想定されるケースでは,CDI管理対象Beanの場合,synchronized文などによる排他制御が必要なのが若干面倒なところである(EJBのSingleton Beanの場合は自動的に1つのインスタンスへのアクセスは1スレッドのみとなるため必要がない).
じゃんけんの勝敗判定には実装者によって違いが見られ興味深かった.まず勝敗をMapで持つタイプ.
ソースが汚くてイヤなので、じゃんけんプロジェクト作った https://t.co/OgtCgAdpyl
— Yuichi Sakuraba (@skrb) 2014, 12月 26
一応じゃんけん書いたけど色々ひどい
https://t.co/xXO6UC6569
— ヤンク@EnableKotlin (@yy_yank) 2014, 12月 27
次はswitchの分岐で持つタイプ.Spockで書いたテストが素敵です.
はてなブログに投稿しました
じゃんけんあそび - Mitsuyuki.Shiiba
http://t.co/Hu1Xl6djsy pic.twitter.com/ZJYGQn0ANe
— Mitsuyuki Shiiba (@bufferings) 2014, 12月 27
最後は謎の短い計算で勝敗を導き出すタイプ.
じゃんけんロジック短く書くとこうなる https://t.co/O3Oc90I5BK
— Toshiaki Maki (@making) 2014, 12月 26
詳細は「じゃんけん勝敗判定アルゴリズムの思い出」を読むと納得である.
個人的にはコードが一番短く済む最後のタイプが好みである.JSFじゃんけんもこれを採用した.引数と戻り値をenumにしてある.多分使いやすいと思う.
Tags: jsf