ストレス解消・・・とか思って、ついに、スマホのソーシャルゲームの「きららファンタジア」に手を出してみました。
リリース開始から、数日経って、遅れての参戦。リリース当初はサーバが弱かったのか、安定していなかったようですが、今は特に問題なさそう。
それにしても、このゲームはシュールな気がする。「まんがタイムきらら」連載の漫画の登場人物がファンタジー世界でRPGなのですが、このキャラが魔法で攻撃したり、剣で殴ったりとか、イメージに合わねぇ・・・とか。
まあ、そんな中でも、「ゆゆ式」の「唯」は微妙に攻撃的なところがマッチしていて笑える。特に攻撃の時の掛け声が「汁物全部こぼせ!ベッドの上で汁物全部こぼせ!」とか「よし、殴ろう!」とか、もうツボにはまって大変です。
そういえば、こういうゲームって、基本的な部分は同じだよね?FGOとか、システム的にそっくりなんですが。もしかして、こういうゲームエンジンがあるのかも?絵とかアイテムのパラメータとか書き直せば、ほぼ流用可能なのかもしれない。
12月 2017
ダメなコードをリファクタリングでダメなコードに・・・
他人のコードをコーディングガイドに合わせて書き直すのがこんなにストレスが溜まるものだとは・・・
例えば、こんな例
画面の「日付」と「時刻」がタグになっているが、データベースに登録する前に「日時」として組み合わせた上で登録したいという状況で、Controllerで画面から受け取ったEntityクラスの「日付」と「時刻」を直接参照して組み合わせた上で、「日時」としてEntityクラスに直接代入してから、EntityをServiceクラスに渡していた。
なぜにEntityクラスのメンバ変数がpublicで、Controllerから直接アクセスしているの?と、確認してみたら、「コーディング規約で、setter/getterとか使わずに直接代入することになっています」とかおっしゃる・・・
このお仕事のまあ、テクニカルリーダー的な人に、クラスのメンバに直接参照・代入とかおかしくありませんかと尋ねたところ、「Entityクラスは単なるデータの入れ物だから、直接アクセスでいいのです。」
え~?そもそも、Entityクラスの中の編集を他のクラスで行うこと自体おかしいでしょう?日付を参照した時にEntityが日付と時刻を編集した日付型を返せばいいのでは?と言ったところ、「こういうのは業務ロジックだから、Serviceクラスに書きます。Entityクラスはデータクラスなのでメソッドは書きません」とか・・・えええ~?
そんなことしたら、同じ画面から、ファイルを作成する機能があるのだけど、そっちのServiceにも同じ内容を書かないとダメじゃないですか。あとで、修正が入った時に、片方だけ直したりとかバグになりますよ?と伝えたら、「同じ画面の機能なので、Serviceクラスは一つにしてください。そして、この部分を関数にします」・・・えええええええ~?
他のSE・プログラマ達に確認してみると、「これが普通でしょう?何かおかしい?」みたいな・・・
いや、おかしいでしょう?それとも私がおかしいの?
そして、この標準に合わせて、コードをリファクタリングしないといけないのです。ダメなコードからダメなコードに変換するので、もう手が進まない進まない・・・というか気持ち悪くて吐きそう・・・
「現場で役立つシステム設計の原則」を推薦するまでもなく、ダメな状況のような気がする・・・
ベタープログラマを購入した
ベタープログラマ(Pete Goodliffe著)を購入した
エリック・エヴァンスのドメイン駆動設計をkindle書籍で購入したのだけど、その息抜きにベタープログラマをちょこちょこと読んでいる。この本は、リーダブルコードの次に読む本だなと思う。これも若手に読んでもらいたいな。
今なら書店によっては、オライリーのカレンダーがもらえるのでお得です。
洗濯機を購入した
昨日、洗濯をしようとしたら、洗濯機が動かない。スイッチは入って、水位、時間、脱水回数など選択はできるのに、スタートしない。
電源を入れ直したりしてもダメだったので、壊れたものと判断したが、ハイアール製なので修理を依頼するのが面倒。ということで新しい洗濯機を注文した。やはり今回もハイアール製。全自動で小型のものってここしかないのです。
問題は排水パイプがこれまでと逆位置についていること。延長排水パイプを買ってこないといけない。横向きに設置して、しばらくしのぐことにしよう。
それにしても、配送が20時頃って、遅過ぎだよねぇ。明日着ていく服がない。
iPhoneXの液晶保護シートを交換した。
先日、ちょっと手を滑らしてiPhoneXが落下。マーフィーの法則通り、落ちる面は一番嫌な液晶面であった。
まあ、液晶保護シートが傷ついただけだったので、貼り直しをしようとマルチメディアAKIBAでシート貼り付けサービスを依頼。650円かかったが、端が少し浮いている感じなんですよね。位置的にはぴったりなのだが。金とってこのレベルかと思うが、自分でやるとこんなに位置がぴったりできるか疑問だし、微妙だな。
それとも、製品が悪い?「気泡ゼロ」とうたった機能はなんなのか?
現場で役立つシステム設計の原則を購入した
現場で役立つシステム設計の原則 ~変更を楽で安全にするオブジェクト指向の実践技法(増田 亨著)を購入した。
今年は、1,2,3年目くらいの若手にきちんとしてシステム開発を教え込もうというのが私のミッションになっているのだが、ここ15,6年はインフラ周りをメインにしていたこともあり、プログラム開発・設計を勉強し直していたのです。
ところが、Javaやオブジェクト指向の書籍などで得た知識と、実際に業務などで開発されたソースを読み合わせると、微妙に違和感があり、知識が統合されず困っていたのです。
この違和感を解決しようと、色々と探した結果、この本に行き着きました。その結果、うちの開発技術は間違っているのではないかと結論した次第でございます。
オブジェクト指向のフレームワークを使いながら、内部での実装を手続き型に寄せているせいで、メソッドは膨れ上がり、クラスは適正に作成されず、変更に弱く、見通しの悪いプログラムが作成されています。
若手にはこのあたりをきちんと教え込もうと画策しているのですが、如何せん、実際に仕事でプロジェクトに入った際には、まともなオブジェクト指向技法は、ガイドラインやコーディング基準から撥ねられてしまい、旧態依然の手続き型手法を取らないとレビューも通らなくなることが予想され、どうしたものかと・・・
根本的なところが改善されないのに、「最近初歩的な障害が多い、若手を教育してなんとかせい!」とか言われても、無理としか言いようがない気がします。
BetabrandのUnder-The-Jack Packが届いた
BetabrandのUnder-The-Jack Packが届いた。リュックタイプのノートPCバッグです。
このカバンの良いところは薄いこと。ウルトラブックみたいな超薄型PCをカバンに入れた上で背負い、そしてその上からジャケットを着ても違和感がないほどの薄さです。
これが横から見ると
こんな感じです。
コンセプトは旅行時の盗難対策のような感じですが、私は忘年会などの飲み会の時にPCを肌身離さず安全に持ち歩けるようにと購入。まあ、今年の忘年会には間に合いませんでしたが・・・
さて、このバッグ、外国のサイトの直販でしか手に入りません。まあ、必要事項を入れるだけなのでそんなに英語は必要ありませんが。少し心配なので、決済はPayPalにしました。
最初購入しようとした時に、78$のバッグが割引で70$になっていたカラーがあったので、それを購入しようとしたのですが、75$以下の場合は配送料金が20$かかって合計90$になってしまいます。割引されていないカラーは78$なので配送料無料となり、割引品の方がトータルで高くなるとは笑い話です。