ホーム エンジニア サーバーサイドエンジニア ソーシャルゲームにおけるミッション機能のサーバーサイド実装の考察:実践編
ソーシャルゲームにおけるミッション機能のサーバーサイド実装の考察:実践編
 

ソーシャルゲームにおけるミッション機能のサーバーサイド実装の考察:実践編

アピリッツ コンテンツデザイン部の金井と申します。前回前々回に引き続き、ソーシャルゲームにおけるミッション機能の話をしていきます。

関連:ソーシャルゲームにおけるミッション機能のサーバーサイド実装の考察:問題編
関連:ソーシャルゲームにおけるミッション機能のサーバーサイド実装の考察:思考編

前回までのあらすじ

 ソーシャルゲームにおけるミッション機能とは

  • 構造的に改修し辛い
  • 処理の時間が掛かり易い
  • 問題が発生した場合それが大事になり易い

 加えて実装面でもミッション機能を構成する要素が複雑に絡み合う事が多々あり、クソコードになり易い。

 それらの問題を解消する為の自分の結論としては、API単位でミッションの処理を纏めるしかない。

とうとう修正をデプロイするエンジニア

実際にやってみた

 ええ、やりました。詳しくは言いませんが、出来る環境になった事があるので。
 そして目の前には、そこそこの期間付き合ってきた、さながら油でべたつく茶色にコーティングされた換気扇を思わせるようなコードがあったので。

 さて。綺麗に出来るタイミングにせよ、やるべき事は大量にありました。上記の仕組み以外にも、

  • マスタ、ユーザーデータの構成が冗長である
  • 過去のユーザー単位で1回しか通らないバッチ処理がそのまま残っている

 等々。
 それらも綺麗に出来るのならば、一気に綺麗にしてしまいます。どうせ、全体的にコードの差分が莫大になるのは明らかなのですから。
 ただ、しかし。マスタ、ユーザーデータの構成を変えてしまえば、もうそこから先に碌な休憩地点はありません。プロジェクトを健全に保つテストコードの文句を黙らせるまでは(え、テストコードが無い? ……ご愁傷様です)。

どの程度の時間的コストになったのか

 まあ、これの為には自分の経歴も多少書いておいた方が良いと思いますので。

  • ソーシャルゲームサーバーエンジニア歴新卒4年目
  • ソーシャルゲームの開発、リリース、運営を2度経験

 端的に書くとこんな感じです。まあ、入社して3年間でソーシャルゲームの全般を2度程経験した形ですね。
 そしてこの位の経験がある自分が、使い込まれたミッション機能を根本から作り直す事には、それだけに注力した状態で1~2ヶ月は掛かりました。

 また、実際のコードの差分は3500行、80ファイル以上でした。
 馬鹿でかいプルリクですが、基本的にここまででかいプルリクというのはマスタの構造の変更等で流し読み出来る部分が多かったりするものだと思います。
 しかし、このプルリクの中身は基本的にロジックの変更になります。要するに、大半が流し読み出来ないものです。
 更に言うならば、これだけ差分が大きくなる事が予見出来ようとも、自分の場合は途中でプルリクを出す事を出来ませんでした。自分が携わっていたそのコードを改善する為には、全体の挙動そのものの改善が必要だという事が途中で判明し、1APIだけを新挙動に書き換えて一旦プルリクを出す、というようなコンパクトな事もできなくなった為です。
 まあ、はい。コードレビュー等も必要に応じて行うべきかと思いますが、これだけのプルリクを見る事が出来る人が必要ですね!

全てを終えて深い眠りに就くエンジニア

精神的疲弊

 何日も何週間も同じ事柄へのリファクタリングを続けていると、流石に疲弊してきます。

 プランナーと掛け合い、無駄や冗長を削ぎ落としたミッションの仕様を新たに殆ど一から構築し直す。
 その為に既存のコード……仕様が追加、変更された事により、まるで後先考えずに違法増築を繰り返されて巨大地震でも来れば粉々に瓦解してしまいそうなそれを必死こいて読み直し、それらを綺麗に纏め上げる。
 纏め上げる最中に不必要になった変数や新たに必要となるユーザーデータなどが発生して来れば、それらの一つ一つが本当に不必要か、必要かを吟味した上で削除、追加をしていく。
 テストコードもそのままでは失敗を叫び続けるだけであり、その新たな規範に沿って作り直すところから始めなければいけない。

 ……そんな作業の一つ一つを地道に、丹念に続けるにはかなりの労力が必要になります。更に続けていると、

 途中でどうしてこんな事に手を出してしまったのかという後悔が湧いてきたり。
 業務中に暫くぼーっとしたくなったり。
 業務終了後も帰りの電車の中でぼけーっとミッションの事を考えたり。
 夢の中でミッションのコードを弄っていたり。
 誰かのプルリクが飛んでくるとミッション以外のコードを見られる事に喜んですぐにレビューを飛ばし、そして同時にマージする時のコンフリクトの量がまた増えた事に辟易とし。

 ただ、それでも自分は精神的支柱があったからこそ出来たと思います。
 それは何かと言われると、まあ、はい。クソコードに対する憎悪、それに尽きます。

 以前はこのクソコードを根本的にどうにも出来る余裕がなかったから、余計にクソコードを追加して負荷や計算量を減らすしかなかった。
 このクソコードが分かりづらいから本番でエンバグを何度も引き起こした。
 このクソコードのせいで休日に出社する羽目になった。
 このクソコードを新しいプロジェクトでも残し続けていたらまた同じ目に遭う。
 クソコード……駆逐してやる! このプロジェクトから……一行残らず!

 そんな意志が私の最大の精神的支柱でした。
 流石にソースの全体に及ぶ程に大きい改修するのは初めてでもあったりして、挑戦するような気持ちもあったのですが、そんなものは二の次で。
 お前は存在してはいけない生き物だ、と某生き恥ポップコーンさんに告げるような絶対なる意志を用いて滅しました。

改修は本当に価値があったか?

 はい。それは断言出来ます。
 少なくとも、

  • 各所に散乱していた似たようなロジックや冗長な処理
  • 殆ど実際に動く事は無いのに常に通ってクエリだけを投げていく処理

 は巻物を投げつけられたドラゴンの如くジェノサイドされ、

  • 現状の仕様を満たす処理はそれぞれ端的に纏まった形で集約されている
  • 仕様変更に対してもそれらのみを改修する事によって対応可能

 という状態にする事が出来ました。
 デイビークロケット並の予想だにしない仕様改修依頼が無い限りは、ミッションの処理はここに集約されたままに出来ると思える位には。
 勿論、まだ怪しい部分もあります。しっかりと負荷試験をして性能を数値として出してはいませんし、改修した中でも時間の掛かる冗長な処理がまだ残っているかもしれません。
 もしかしたらそんなデイビークロケットをパンジャンドラムに乗ったプランナーから渡される可能性もあります。
 しかし、まあ、そんな仕様は来ない事を信じたいなあ……。

最後に

 この巨大プルリクを半日掛けて見て下さった先輩に感謝します。

翌週に有給を取り平日の空いている江ノ島に行き、その頂上にあると言うフレンチトースト専門店を訪れようとしたその朝に鳴る会社からの電話
採用のお知らせ
アピリッツは一緒に働く仲間を募集します
私たちと共に、セカイの人々に愛されるインターネットサービスをつくりましょう
くわしくは[採用情報]をチェック! もしくは[今すぐ応募]からのエントリーで、
採用担当者からすぐご連絡をさしあげます!
記事を共有
味噌スープ。それは紛うことなき混沌である。そしてなるほど、それを構成する要素の一つ一つは単純明快にして、しかしながら一つ一つに手を加えられている。例えば味噌と豆腐と油揚げを見てみよう。これらは全て同じ、ソイから出来ている。ソイはビーンズの仲間であり、はたまたビーンズとはジーンズとは一文字違いである事が極めて甚大なエッセンスであるのだ。つまり、私が何を言いたいのかと言うと、プリンはプルプルである事が唯一にして最大の特徴であるという事である。だがしかし、だがしかし、だ。ペストマスクの先に入れられているハーブがマリモだったとしたら、この特徴は唯一にして最大の特徴ではなくなる。何故ならプリンのプルプルさはマリモが洞爺湖の空中を歩く様と密接に紐付いていないからだ。断絶された超弦理論の第三次工程であるオックスフォードシャツとチノパンの縫合処置において、バミューダトライアングルと東京都はプラナリアによって結婚二十七年目と三千六百九十二の昼からの営みを繰り返した夫婦のような関係に成り果てる。そして世界はキツツキの砂肝と認識されるのであった。その世界に於いて、さて、私達は如何様に並行世界を直列に繋ぎ直さなければいけないかを考えてみよう。これは命題でありそれへの帰納である。メビウスの輪は即ち、卵と鶏のどちらが先かに対しての答えを持つと同時にまた曖昧にしている。要するに端的に言うとするのならば、どうでも良いと言う事である。カレーライスに茹で卵が入っていようとも生卵が入っていようとも、トランペットから吹き出される福神漬色の音色は変わらない。あたかもコロラドにある川のせせらぎのように。塩漬けにされた二重螺旋の螺鈿細工は並行世界をまるで台風に乗ったブルーシートのように華麗に飛び回り、そしてその行先は幾多にも乗算を重ねられた算盤の先にしか想像する事が出来ない。しかしながら地を這い、木漏れ日の下から雷を睨みつける北京原人ならばその先を可能性の揺らぎを定める特殊能力によって87.24%まで持ち上げられるだろう。破壊と創造を繰り返した先にあるその素数の羅列はブリリアントでドメスティック且つ平凡的な至ってパラミジカルな結果を齎すようにそれを利用した先にあるものは確かに並べられた無数の世界を地球7周半と太陽9840392周の距離を足し合わせて階乗にした値と合致する。私達はそうして観測された神羅万象の一個として秋刀魚のように泳ぎ、海豚のように眠り、そして時折飛ぶ翼を持たぬ鳥のように海中を泳ぎ、地上をせわしなく駆け巡らなければいけない時もあるのだ。さすればきっと、地獄と煉獄の隙間に存在するサタンとルシフェルと閻魔大王とシヴァが手と足を掴んで作る歪でありながらも一切の淀みの無い輪の中を潜ってポリゴンと葉緑素で四割と七部三厘で構成された味気ない天国へと迎う事が出来るだろう。けれども、そのような天国に向かう事にどれだけの幸福と不幸があるというのだろう。誰かが言った言葉である、幸福と不幸の最も美しい比は黄金比と等しいという事を。社会に疲弊するからこそその後に食する長年愛されたポストアポカリプス的栄養素ブロックと大衆的退廃的文学に支えられた安価で酔える酒は美味なのだと。発酵と乾燥を重ねられた多様な食品を混沌と変化させる事によって生成される白い四角と犬が食せば毒となるものを浮かべた飲料は朝に体を起こさせる為に、これから義務として、そしてその夜を迎える為にこそ戦場へと向かう徴兵された農民の如く生きる為に必須なのだと。まるで数えきれぬ程に埋め込まれたトラップを有する城へと潜入するその新月の漆黒を表すかのような鞄を肩に掛け、最低限の身なりを整えて地球がπ/6の回転をする度に給与の数割を貪る根城からのっそりと姿を露わにする。その姿はまるでパラミジカルにポリモーフィックでメンタグラフィを携えたペリメニのよう。空の明るさはアニメで恥部を隠す謎の光のようであり、同時に辺りを杖を突く老人のような速さで歩いていくその白は硝煙のように薄らとしながらこれからの妄想を豊かにする。未だに暑きこの熱帯雨林、アマゾン川。昼に用意された冷やし中華の身なりをしたカレーうどん風シュラスコはきっとこの身に3%ほど染み渡るだろう。ゔぉんゔぉんと蝉が鳴く。どの種でもその秒間きっかし27918回の羽ばたきは今では正確な暦を知る為に深海へも連れて行かれる事は極限られた周知の事実である。ゔぉんゔぉん、ゔぉんゔぉん、べべべんべん、べべべんべべん。どこからともなくその狂騒曲に三味線が響き渡る。どこかの国ではエレキギターが59分毎にチーズの発酵具合をその音色で知らせると言う。夏祭りは後379日と9210年後。それまで私が生きている事は確定的虚実ではあるが、しかし生命の連なりによって引き継がれていく伝統というものはいつしかやはり、単なる固執と切って捨てられる事であろう。べぇーーーーん! 「校長先生がメソポタニア文明から生き永らえて、けれど後刹那と那由多の間にある命なんだって」子供達の声が聞こえてくる。聞いてみれば、校長先生はまさしくシュレディンガーの狸。箱を開けるまでそれが茶釜かはたまた薬缶か、もしくは犬式潜水艦なのかは分からぬのだと言う。そんなa^n+b^n=c^nがa,b,cが整数の時にnが3以上の時に成り立たない事を示す程に簡単な事は、私の脳裏にも浮かばない。何故なら私の記憶領域は後、667GBしか無いからである。それを考えるのならば、ニコチンとカフェインを伴った概算でも1PBのメモリ領域とそれの丁度e倍ぴったしの記憶領域が必要になるであろう。車が目の前を走っていく。まるでいつか見た同級生の心の中のように縞々な横断歩道。白と黒は混じらないのである。ペンタゴンとパタゴニアが協力すればその限りでは無いかもしれないが、そんなギャラクティックでミニマリズムを私は実践しようとは思わない。微塵たりとも、しかしプールの中で懐中時計の部品が一つに纏まり自由の三上像となるのならばやっても良い。その通りである、破壊と駆逐は乱数によって決められるべき事象なのだから。パノラマグラフィーの如く広がる六角形の世界線を幾多も乗り越えてそして私は最寄駅へと辿り着く。鼻につく匂いはまるで穀物を膨らませる為だけに生きてきてそして最終的には水が気体にならざるを得ない高温で加熱殺菌させられる哀れな生き物達を想起させる。即ちそれはとても美味であろう事である。彼等彼女等は一体最期に何を思うのだろうか。助けて助けて私はまだ死にたくない死にたくないんだだからここから出してくれどうしてもどうしても私は生きなければいけないんだまだ何もしていない私はまだ何も為していないんだだからだから誰か助けて嫌だ助けて熱いんだ熱いんだよだからだから私をこの中から出してくれどうしてこうなったんだ分からない分からない分からない分からない嫌だ嫌だ嫌だ嫌だ熱い熱い熱い熱いいいいいいいいいいいいいあああああああああああああ゛あ゛あ゛あ゛あ゛あ゛あ゛あ゛あ゛あ゛あ゛っ。歴史とはそういうものである。残念ながら悲しい事に、とても悲しい事にそういうものなのである。そんな大河の流れを想起しながら私は階段を下る。マリンブルーとエメラルドグリーンな人達を眺めながら私はウルトラヴァイオレットとダークブラウンとそれからスパイスにヴィンテージスモーキーなホワイトを100:1000:0.9で混ぜた気分で改札を潜り抜ける。電車から吹き出す風はまるでこの都会の醜悪さを薄めて皆にシャワーで浴びせかけているよう。桃色の風、桃色の風。カバの汗の桃色の風。エスカレーターにはくたばり損ない共が乗る。私もその一員である。プラナリアよりも私達に生きる価値というものはあるのだろうか。そんなものは自分達で決めれば良い誰だってそうしている、きっと6割程度の誰だってそうしているのだから私もそうする。プラナリア・S・カルゴン様の言う通りに私は決めた。多分、プラナリアの1.5倍くらいに生きる価値がある。論理と感情の果てに決めたその終末論は私にとってきっと、持って振り回して遊ぶくらいの役目を持ち、そしてその内折れる程度にやや腐った枯れ枝程度の重要さであるのだ。電車がやってくる。再びの桃色の風。糞食らえである。しかし私はその元凶に乗り込み、無害な大衆を装って明日の為に、来年の為に、老後の為に、カンパニーへと乗り込まなければいけないのである。何と言う義務。何と言う労働。仕事と趣味が合致している人程恐ろしいものは無いと言われていなかったりするが私は正にその通りだと思うのである。フィジカルロジカルパラミジカル。ブリリアントな我がイースト酵母。フィジカルロジカルパラミジカル、それは誰もが尊び誰もが蔑む神様の名前、フィジカルロジカルパラミジカル、それは暗黒と灰色の微笑と激怒の鎮魂歌。フィジカルロジカルパラミジカル、フィジカルロジカルパラミジカル。龍の慈しみと放心する雷の音。赤紫色の夏の夕方。フィジカルロジカルパラミジカル、誰もに訪れるジェネリック転換期。フィジカルロジカルパラミジカル、それは~より大きいと言う、未満の対となる言葉。フィジカルロジカルパラミジカル、球体の蛇は蒼色の湖に向かって謳うその様。フィジカルロジカルパラミジカル、確かにそれは架空と現実の間に確固として存在する不安定な揺らぎ。そう、それは何にも染まるパラライカ。ペスカトーレ。電車が止まる。外に出る。薄い緑色をした藻が漂うような湿気と僅かな息苦しさを感じさせる真夏の地下鉄。国境の長いトンネルを抜けるとそこは雪国であった。地上へと向かう階段を登るとそこはコンクリートジャングルであった。み゛ーんみ゛ぃーんと鳴く残り僅かな生命から小便を掛けられない事を祈りながら私は歩き始める。すぐさまに一説によると小便より汚いと言う汗をだらだらと掻き始める。そんな日が毎日やはり続くのである。悲しい事である。とてもとても悲しい事であるのだ。しかしながらそれは冷やし中華を食べたいという意欲にも繋がるのである。クーラーの効いた部屋の快適さを一層感じられるスパイスとなるのである。そう信じるのである。地球温暖化、北極の白熊を考えるなと言うが南極のペンギンの事を考えたっていいじゃないか。ぐるぐる回っておしくらまんじゅう。食べ物をめいいっぱいお腹に詰め込んで長旅に向かうペンギン。フンボルトペンギン、アデリーペンギン、コウテイペンギン、キングペンギン、ジェンツーペンギン、アゴヒモペンギン、ペンギン高速道路には眠たげなお姉さんがカフェの中で待っている。一筋の風。湿度の高い島国の風。汗は乾かない。会社という名の現代の城に着けばまず先にする事と言えば打刻でもなく汗を拭う事である。制汗剤の付いた紙切れを数枚使い、体を清潔にするのである。そうしなければ臭いが出るかもしれないし、体に不潔な凹凸が出来るかもしれない。丹念に拭う。後悔というものはいつだって後から深く忘れない程に刻み込まれるものであるのだから。くそったれでこん畜生。シャケだからイクラだからこん畜生。クーラーの効いたオフィス。太陽光の差し込まないオフィス。趣味の物をデスクに置いてある人の多いオフィス。真っ白なデスク。モニター。リンゴマークのコンピュータ。それらを繋ぐ雑多な回線。一度徹夜した事があるから分かる、早朝に掃除の人が入って清潔に保たれているそのオフィス。リリース前の地獄。リリース前の阿鼻叫喚。サーバーの台数はこれで大丈夫か? スケジュールは迫っている、負荷試験はまだ終わっていない。過負荷が掛かった時にも遊べるか? キャッシュサーバーは耐えられるか? データベースは耐えられるか? 各種ツールを駆使して調べろ、サーバーの中に入ってコマンド叩いて調べろ、あーあーあーあーあーあーあーあーあーあー、眠い寝たいでもリリースは間近、神様なんていない神は死んだ頼れるのはサーバーチームの知識とネットの海に転がる経験談のみ、エンジニアは論理で闘う仕事だ、それを放り投げたらきっとけれど確かにエンジニアではない、画面を見ろそこに全てはある、なければキーボードを叩け、さすれば世界は広がる。しかしやはり、私はその世界は広がり過ぎたとも感じている、エーダブリュエス、イーシーエス、イーシーツー、イーシーアール、イービーエス、クラウドウォッチ、ルートごじゅうさん、オートスケーリング、ラムダ、パイソン、ジャバスクリプト、クラウドフロント、クラウドフォーメーション、アイアム、データベース、ユニーク制約、インデックス、計算量、ネスト、私はどこを彷徨い歩いている? この電子の海の座標が分からない。私はどんな船に乗ってどこへ向かって舵を切っている? 私には分からないのだ、私には分からないのだ。けれど出来る事はある、もがいて、足掻いて、それでも前を見る事だ、最終的に前を見て歩いていけばきっとどこにはたどり着ける。本当に? 自分の立っている位置すら分かっていないなら、ただぐるぐる同じ場所を歩き回っている事に気付かないこともあり得るのではないか? そもそも海を歩くってどういう事だ、キリストか天草四郎にでもなったつもりか、そうだ彼等にはプログラミングなんて出来やしない、即ち、私は神だ。いや、しかし私には水の上を走る事など出来やしない。......そうだ、確か、水の上を走るトカゲとやらが居たはずだ。バジリスク、なるほど彼等彼女等は偉人達がノロノロと水の上を歩く事しか出来ないのに対して走る事さえ出来るのだ。即ちバジリスクこそが神に相応しい。バジリスク教の生誕である。一つ、バジリスクを敬う事。一つ、バジリスクの繁栄を約束する事。一つ、人は皆等しくバジリスクの一つ一つの挙動から教えを乞う事。一つ、もし、バジリスクが水の上を駆ける姿を見た時には、それに平伏し、そしてありのままの感情を口から吐き出す事。ああ、いと素晴らしきかなバジリスク教。そんなわけでgitから最新のソースをpullする。目の前のコードエディタに広がるのは長年引き継がれてきたソースである。ある程度は整備されているが、ふと気になって脇道に逸れてみれば、そこは整理されておらず汚いコード。運用中ならば大掛かりリファクタリングも中々に手を付けられずにそのまま放置されている。まるで渋谷のようである。渋谷はある程度綺麗である。しかしそれはポイ捨てをする人が居ないからという訳ではなく、毎日掃除している人が居るというだけである。ゴミ箱のない自販機の前には空き缶やらが置いてあり、そしてあったとしてもそこには話題になったタピオカの空き容器が適していないものにも関わらず突っ込まれていたりする。結局、田舎だろうと都会だろうとモラルのない人間というものは一定の割合で存在するものである。それを都会の極一部が多少、目に見えにくくしているだけである。私がプロジェクト内で出来る事といえば、そのポイ捨てを許さない事である。プルリク、もしくはマジリクを見て、いや、どうしてgithubとgitlabでプルリクとマジリクと言い分けているのだろう。どっちも意味は同じなのにそもそも最終的にする事がマージならばどうしてプルリクと呼ぶのだろう。そういや、近頃gitがバージョンアップされてプルする時にオプションをちゃんと設定していなければwarningが起きるようになったな。強制的に合わせるか合わせないかだったか、まあ、そういうものだったのだろう。とにかく、私がプロジェクト内で出来る事と言えば、そのポイ捨て、時に無自覚であるそれを許さない事である。エンジニアは時に無自覚に糞尿を垂れ流している。時に手掴みでご飯を食べて、時にカレーを作ろうとしているのにカレールーの代わりにハヤシライスのルーを使おうとしている。そんな無自覚を自覚させなければならぬ。そして私自身も気付かぬ内にそうしているかもしれない、インドカレーを作ろうとした時に豚肉や牛肉を使おうとするようなガンジーが女装して助走して全速力で殴り抜けるようなそんな事をしているかもしれないと怯えなければいけない。完璧なコードなどどこにもないのだ。出来る事はほんの少し、より綺麗で早く、見やすく、正しくあろうとするだけなのである。私はそれを新卒よりも数年続けているだけなのである。そもそも正しさとは何だろうか、正義とは何だろうか。ヒーローとはきっと正しくあろうとし続けている存在の事を言うのだろうと考える。自らの行いが正しいと断言してしまった時点でそれはただの押し付けであろう。その末路はインディアン狩りであり魔女狩りであり人種差別でありアウシュビッツであるのだ、きっと、多分。歴史は失敗を教えてくれる。そして歴史は繰り返すという事も教えてくれる。結局の所人類の中で突出した才能の持ち主がぽつぽつと生まれる事はあろうとも人類全体は未だに救い用のないバカなのである。ひたすらに躓き、それでも諦めを知らない無尽蔵のエネルギーを抱いた偉大なる考える葦、偉大なるバカ。ドン・キホーテ。そう、私はどん、気泡手。特に意味はない。マリアージュされた納豆と葱のように、決別を言い渡された安っぽいメロンと安っぽい生ハムのように。私は質問をパリィし逆に質問する。リリースまでのたった数日でこれだけの機能を実装してQAを通して本番環境に流せると思っているんですか? しかし相手は言うのだ、今回だけは頼むと。その今回が一体何回目なのか、私は忘れた。仕方なく私は指を動かす。慣れた事だ。多少の残業は必要だろうが、多少で済む事である。今日の昼飯はどうしよう。ピッツァかピザかそれともスパゲティかスパゲッティーニか、それかサンドイッチかサンドウィッチ伯爵か。依頼された事柄に沿って指を動かす。実際実装自体はそこまでの時間を要さないであろう、しかしその実装は例えるのならば高級住宅街のど真ん中にエナドリばかりが置かれた自動販売機を置くようであり、はたまたインドの商店街のどこからでも見えるような高級マンションを打ち立てるようなものである。即ち、似合わないという事である。景観に溶け込むように設計しなおさなければいけない。エナドリならば、そうだ、外側を高級なお茶にしてしまえばいい。どうせ茶もエナドリも中身にカフェインが入っている事には変わりない。それだけで九割九分同じようなもんだ。そうだろう? 見た目をそれっぽくして、そして自動販売機自体もそれっぽく和のテイストを醸し出させる。ちゃんと成分とかには嘘は無い。結局、人を良いように動かすのに必要なのは嘘っぽい真実と真実と真実っぽい嘘であるとどこかの誰かが言っていたような気がする。はたまたインドの商店街のどこからでも見えるような高級マンションは、さて、どうするべきか。いや、今回はそこまで大変じゃない。そうだな。そうだ。エナドリをお茶っぽく偽装するだけで良いのだから。さて、頑張ろう。サーバーがまず最初にソースを完成させなければクライアントも接続確認やら出来ないのだから。実際にコードを書くだけならすぐに終わる......なんだこのクソコードは、他の誰かがapproveしたところだな? あーもう、ちゃんと見てるのか、まあ、次いでに直してしまえ、ここはQA走るんだ、だからある程度強く直しても大丈夫だ。ここはこうして、あーここの条件ちょっと複雑だなどうしたら良いか、メソッド化するのも別にここだけでしか使わないしなあ、うん、まあ、一目で分かりやすいように、そうであれば多少冗長でも良い。うん、こんな感じ。そこまで書き終われば後はここのデータをマスタに従って変更して保存。クライアントに返す。おしまい。さて、テストコードだ。ぶっちゃけテストコードやら書くのが実装と同じくらい面倒なんだよな。ダミーデータ作って改修した部分がちゃんと通るようにデータ操作して、API叩かせて、実際その通りにデータが変更されているかを確認する。そして通っていない時には変更されていない事を確認する。面倒面倒。でもやらなきゃいけない事でもある。はー。タカタカタンタカターン、眠いなあ、一応6時間は睡眠摂ってるし朝飯もちゃんと食ってるけどそれでも眠いもんは眠い。睡眠は1日の1/3程を占めるものなのだから、2桁万円のベッドやらを買っても全く浪費ではないと聞いた事があるし、それに対しては同意もするけれど、実際手を出そうと思うとやっぱり躊躇するものだったりもする。ホテルのベッドは良いよなあ、ふかふかのベッド。実際にそこで寝た後はHPの最大値がハート3~4つ分位増えているようにも感じるし。その後にバイキング形式のブレークファーストを食べるのだ。カリカリに焼かれたベーコン、焼き立てのパン、小さい容器に詰められたバターやジャム、目の前で作りあげられるプレーンオムレツ、和食はご飯に梅干し、納豆から焼き魚から、豆腐。それにデザート。果物だったらパイナップル、リンゴ、梨、オレンジとか。他にもヨーグルトとか。飲み物は牛乳、オレンジジュース、コーヒー、そこあたりが鉄板。旅行は幼少期は別にそこまで好きじゃなかったけれど、歳を取ると何だか行きたい欲が段々と増してくるものだった。取り敢えずパイナップルがあったのならば、唇が切れるまで食べるのが流儀である。で、テストコードだ、ファクトリーガールのガールが何かあんまりよろしくないと言う事でボットに改名されたヤツを使ってダミーデータ使ってガリガリ書きますよ、実はrailsのrspecって最終的にデータをrollbackして全てなかった事にしているから、commitされた後のデータ検証とかには面倒な事やらなきゃいけなかったりするんだよな、非同期通信で加算処理が同時に走った場合に正常に加算されているか、とか。そういうのにはredis使っておけば良かったんだよなあ、と今は思うけど、何かデータベース使わないといけない理由でもあったんだっけな、覚えてないや。まあ、テストコード書き終えたし、動かしてみれば案の定落ちる。はいはい、ここでtypoね。vscodeのrubocopの拡張、妙に色々文句言ってくるから煩わしくて外してるんだよな、もうちょっと文句言ってくる頻度落とすというか、何と言うかもうちょっと静かになって欲しいわ。typo直して再実行、はいエラー、今度は何ですか、今度はテストコードの方がおかしいか、分かりましたよ、こうすれば良いんでしょうこうすれば! 通った、他にテストコード書かなければいけない事とかあったっけ、別にエラー制御も入れてないし、このくらいで良いか。後はAPI定義書も書き換えて、はい、commitしてpush。プルリク出して午前中はおしまい。ご飯ご飯。え、ちょっと本番バグ? マジで? やめてそういうの。これからご飯行こうと思っていたの私! 美味しいお肉が私を待っているの私恋焦がれているのお肉に! 近くのビルの5階の焼肉屋で一人焼肉ランチしようと思ってたの私! しっかりつけ込まれたお肉を網に乗せて焼かれる様をじっくりと眺めるという仕事が私を待っているの、それも仕事でしょ? ね? だから、だからね? 私を焼肉に行かせてぇぇぇぇぇぇぇぇえええええええええええ!!!! ダメですよね。はい、分かってます、知ってますよ。はい。やりますよ。はい。はい。ええ、はい。で、このバグ? まあ、エラーは通知されるようになっているからすぐに分かりますよ、原因は期間を跨いだ時の検証不足が原因ですね、ユーザーに不利益も無いしそこのソース書いたのもapproveしたのも自分じゃないから自分には殆ど責任ないけど、まあ色々纏めなきゃね。その実装担当者は丁度飯行ってるし。はい、影響人数もこの時にこの動作をした人にしかありません。で、ユーザー不利益もありませんし、イベント終了時に一回タイトルに戻されるだけです。まあ、そんな軽微な事なので焼肉行って良いですか? ほっかほかの白飯、テールスープ、キムチ、そしてお肉が私を待っているんです。もうちょっと待って? まあ、そうですよね。うん。まあ、チャットツール見てれば行っても大丈夫だろうけどさ、チャットツールを見ながらご飯を、お肉を食べるなんて、そんな無味乾燥な事ありゃしないじゃないですか。モノを食べる時はね、誰にも邪魔されず自由でなんというか救われてなきゃあダメなんだ 独りで静かで豊かで......。だからね、私待つわ、いつまでも待つわ。カルビカルビ、ハチノス、タン、ホルモン、レバー、ハラミ、サーロイン、ヒレ、ぼんじり、つくね、あー焼き鳥も食べたいな、そうだ、焼き鳥だ、つくねだ。つくねを生のピーマンで包んで食べる、それ以上の喜びがあるだろうか。つくねはタレで、そして軟骨が入ってコリコリしているのが良い。え、謝罪文出すから、その内容が正しいか見て欲しい? 謝罪文作られるまで後十数分掛かる? 自分一回飯行っていい、って聞けたらいいけど、一応本番バグだしなあ。待ちますよ。あーお肉。
前の記事 Google サービスの便利機能6選 ~デスクトップアプリ、Gmail、Calendar、 検索、Google Alerts 、マイプレイス ~
次の記事 Unity作業が捗る便利設定3選 ~ちりつも作業をなくしたい~

最近人気な記事