カテゴリー: Final Fantasy XIV

Home / カテゴリー: Final Fantasy XIV

目に見える更新を挟む

2018-12-13 | Cloud Functions, Final Fantasy XIV, Firebase, Firestore, Flask, GAE, GCP, halipe.co | コメントはまだありません

裏側のバッチ直してますとか、更新情報をシート管理にしましたとか、いわゆる運用タスク的な課題ばっかりをここ何日かはやっていた。すぐ先の未来の自分を助ける重要な必要な改修なのだが、ユーザの目にはなにも変化が見えない。
もっともそんな事を気にするほどの訪問数じゃないので別にいいのかもしれないのだが、しょぼい訪問数のうちから健全なイテレーションを回すのを習慣づけたいなという気持ちがある。

ぱっとみわかりやすいのは、地図の操作を直したとか、地図の画像増やしたとかそういうのだ。
一方でわかりにくいのがここ数日やってたような、裏方作業。
それぞれをいい塩梅に交互にやっていくようにしていくと、ユーザの側からは更新され続けていることがわかり、裏側に積み上がる課題も一定のペースで処理していける。

とはいえ動かす手は二本、頭は鈍いやつ一個でしかないので、Nozbeに積み上げていくタスクがなかなか減ってくれない。
チケットはいまのところ50件前後を行ったり来たりしている。Kubernetesやらの関連チケットを別のとこに分けてこの件数。
なかには大きな玉(作業量の大きなチケット)もあって、いきなり抱えるとしんどくなって潰れるので、小分けにして乗り越える必要がある。チケット増えちゃう。
改善タスク的な今やる必要のないものもあるけれども、それでもできたら20件くらいにしておきたい。
やることだらけだよ―という気持ちがだんだんオリになって心に沈殿していくのはあんまりよいことでない。

地図つなげる作業はひとことで言うとダルいのだが、頭を使わないで黙々とやれる。考え事の合間に消化するような進め方がいいかもしれない。こないだの週末みたいに地図60枚とかいう馬鹿げた作業をするから疲れるんだ。

ニームの書で使った道具

2018-12-12 | Final Fantasy XIV, Flask, halipe.co, JavaScript, Python, Responder | コメントはまだありません

そのうち使ってるツールを差し替えたりもするだろうから、いったん今のとこの技術スタック(っていうの?)をメモしておく。
基本的にはPython(Flask)以外はほぼぜんぶ初めて使うもので占められている。ふつうは知らないことを追加するのは+1にしなさいっていうんだけど、完全に無視した。のたうち回ったし、のたうち回っている。

ニームの書(halipe.co)

Backend

スクリプトはすべてPython。Flaskつかってて、Responderにリプレイスできるか試している。最初はElixirいくか!!とか息巻いてたが、API作るくらいのことで死にそうなのでやめた。
いまはGAEのFlexible環境にDockerコンテナ投げてAPIサーバが立ち上がっていて、ほかにはCloud Functionsで関数(これもPython)がいくつか。

そもそもはKubernetesに習熟したいという野望があってしこしこyaml書いてた。超楽しい。が、SSL証明書の取得と設定らへんで盛大にすっ転んだうえ、誤ったコンフィグを投げてはLet’s encryptにロックされて作業が止まるため、急遽GAEに逃げ込んだという次第。証明書やらドメインまわりやらが便利すぎてヨダレ出た。一方でデプロイ10分以上かかるのはちょっと辛い。
なんかStandard環境でもPython3使えるみたいなのを見かけたのでそっちに移す予定。jsonやyaml読んでjson吐くくらいしかしてないしょぼいAPIの為に毎月5000円払っている。しょぼいわ。
むろんそんだけの機能を、Kubernetesでクラスタあげようとしてたわけです。立ち上がってたら5000円どこじゃ済まないが、それはいいんだ。インフラ屋でもない人がこういうのの構築やるにはホビーくらいしかチャンスがない。
コマンド一個でPodが増えたり減ったりするのは、なんとも言えない愉しみがあった。あのPodやらService、むかしは物理サーバ一個一個でやってたんだぜまじかよってかんじ。

CI

リポジトリはBitbucket使っているので、マスタへのマージの際にBitbucket Pipelinesを起こし、Slackに通知するようにだけしている。
Python側だけテストが少し書いてあって、フックでテスト通すとこまでできた。これももちろん初めてだったので、動いたときはそれはもう大変に嬉しくて、ムダにPushした(程なく無料ビルド時間を使い切り動かなくなった)。
JS側がテスト書くまで至っておらず、まだ完成してない。Jestというのを見つけたので使ってみようと思っている。

DB

DBはCloud Firestoreをつかっている。ゼロの状態からNoSQLのDBつくんの初めてだった。リレーションとかあんま気にしないでいい単純なアプリなので、あんまり深い困りごとには遭遇してない。タグ検索とかの実装用にインデックスのテーブルこさえたりしたけど、テーブルそのものに張ってるindexつかうのとどっちがいいんだろうみたいな感じ。活用してる感はない。
更新情報とかはSpreadSheetに書き付けていて、反映用のスクリプト叩くとFirestoreにデータを放るという運用をやっている。一番最初はvueファイルにまるまる書き込んでたので、更新情報のっける程度の用事でデプロイが発生していた。

Frontend

TypeScript + Nuxt.js。どっちも使ったことないので採用。ホビーとはいえ無茶な挑戦だった。困ったときにTypeScript/Vue.js/Nuxt.jsいづれの問題なのかの切り分けすらできないような三下が、まるっきり全部わかんない状態で挑んだ。
作業の大半は調べ物の時間で、文字通りヨレヨレになっていた。
いっぽう尋常でない学びはあった。イベントハンドラって何?みたいな基礎部分への理解も危ういくらいの人だったんだが、なんとかなりつつある(まだ危うい)。
CSSまわりはBulmaを入れた。じつはCSSフレームワークの導入からやったのも初めて。
ほんと今まで何やって食ってたんですかねという感じなんだが、すでに動いてるプロジェクトに参加することが多いと下地はあらかた出来上がっていたりで、構築にはあんまり関与しないで済んじゃってたという背景がある。

ほか

手元でバッチやらを書く下地はJupyterNotebookを使うことがある。ド頭から動かさずに気になるとこだけ叩けるというのがことのほか便利で感動している。
表の操作はPandasとか使ってるけど、必要でというよりは使う理由になるので入れてるといった感じ。慣れておきたい。

地図をはじめ、さまざまな画像は基本的にFireworksでやっている。今となっては太古のアプリなんだろうか。あたしの用途ではこいつを超えるアプリケーションが地上にない。Vectorスイスイ書いてビットマップを切り取る切り抜くとかを、こやつだけが軽快にやってくれる。問題は古いのででかい画像に超弱い。もともとメモリの危ういソフトなんだがすぐ吹っ飛びそうになるのでおそるおそるやっている。横1900のPNGを9枚も食わすともう挙動不審になる。

ロゴのVectorを作るとかはIllustlatorをつかっている。これも昔々のやつだけど、あたしは線が書けてaiが書き出せたらいいので、それ以外のことでは全く用途がない(せいぜいトレースくらい)ので、たぶんもうこの先新しいIllustlatorを買う機会もあるまい。いまはそっち側で食べてるわけでもないし。
あ、名刺作るときは活躍してるんだった。赤作るときはYMを100にするだけじゃなくて黒10%入れろとか、ああいう細かい話がたまーに活きることがある。
オンデマンド機だと関係ないけれども。

相変わらずにーむのしょをいじっています

2018-12-08 | Final Fantasy XIV, halipe.co | コメントはまだありません

WP5.0に上げたら編集画面がWordみたいになった。なんでこういう余計なことをするんだ。まあいい。
昨日今日あたりは、スマホでタグ付けらんなかったのを修理(というか回避というか)して、認証コケるやつの背景を調べて(まだ糸口つかめない)、あと運用周りの準備してた。
いままで500エラー出てもなんも気づかないとかだったので、とりあえず500とtracebackひっかけたらSlackに飛ぶようにして、少なくとも検知はできますよと。あと、ユーザ登録時に認証状態が半端になるようなところがあるので、そっちもイベントで引っ掛けて検知だけでもできるように。

仕事でやってるとテストだの運用だの監視だのってダルいんですけど、さすがに自分のサービスなんでモチベーションが違うよね。それでも昔ツール書いてたときって障害とかには無頓着だったんだけども。たぶんGCPとかにあらかたツール揃っていて、アクセス解析や障害検知のセットアップしなくて済んだのが大きい。
そう考えると昔の人は偉かったんだなあ。すっごい他人事なのは、当時はまるっぽ知らんぷりで人任せにしてたからです。

火曜はリセット日なので

2018-12-05 | Final Fantasy XIV, halipe.co | コメントはまだありません

なにかといそがしい。
明日から奥様がバイト行くっていうので、今日は夕ご飯のあとにレクリエーションをしました。いつも気の利いたこと思いつけないので、こういうのは我が家ではけっこう珍しい。

たまたまGoogleがクリスマスのアドベントカレンダー的にアレコレ詰め込んだサービスの塊を出していて、そんなかにScratch(教育用コンピュータ言語。ブロックつなげて動作を作る)をつかったパズルがあったので、一緒にやったりしてました。

奥様もかつては、あちこちのホームページを見てはScriptを目で追い読み込み手で試し、自作のCGIやらも含めていろいろやってたらしい。そのまま続いてたらそれなりに高給取りだったのにもったいない。
今じゃロジカルな部分など毛ほど見せない人ですけど、一緒にパズルを解くくらいは付き合ってくれるかなということで遊んでました。
上下左右に進むのとループのブロックだけのシンプルなパズルだったのだけれど、大変に楽しかったみたいで、よかった。

リセ日です。リセ日なのですが、明日以降は慣れない仕事でヨレヨレということを考えると、のんびり一緒にパズルで遊んでくれるのは今日くらいということでそんなんやってました。

ほんでそのあとFF14にログインし、地図のスクリーンショットを撮り、にーむのしょのイケてないスクリプトを修理し、アルファ編やらエキルレやらを積んできょうはおしまい。

今のとこ大して人も来ないしまるで使われてる気配のないしょぼいWebサービスですが、このまま更新続けていきます。この次に作るやつも粗々まとまっているので、そろそろ設計開始であります。

画像の変換が辛い

2018-11-29 | Final Fantasy XIV, halipe.co, Python | コメントはまだありません

ニームの書(https://halipe.co/

まだ全然データ足りないんだけど、色んな人にボコボコにしてもらうほうがモチベーション保てると思って見切り発車しちゃった。地図足りてないんで日々追加してます。

SS撮る(1600ピクセル四方くらい)→Firewirksでつなげてトリミング→色調補正バッチに食わせて出力→サーバに転送

なんてダルいんだ。色調補正バッチがうまいこと稼働してるので、地図張り合わせるのがすごくダルいくらいで済んでる、それはいいんだ。
今日の問題は色調補正バッチ。さくさく変換してくれるのはいいんだが、一枚あたり30秒かかる。ほっときゃいいとはいえ辛い。というか、あきらかに遅い箇所があって、さすがにバカなことやってる箇所だから直したい。

実験用にJupyterNotebook起動。

import os,sys,re
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from PIL import Image
import matplotlib.pyplot as plt
import itertools as it
import time
%pylab inline --no-import-all

いつものやつ。余計なのも入ってるが気にしない。

img = Image.open(r"la-noscea_サスタシャ浸食洞.png")
im = np.array(img)

サスタシャの地図を一枚読み込む。
今回やろうとしとるのは、ゲーム内の画像そのまんまだと色調があまりにもくすんでいるので明るい感じに修正する、というもの。実際には前にやっていて(FF14の画像をバッチで画質処理+コピーライトの貼り付けしたい)、こんかいはそれのリファクタというかありえないコードになってるとこを直す話。

元のコード

30秒かかるのは流石にやばい。これ書いた当初は「画像の変換って時間かかるんだな~」とか牧歌的に思ってたが、PhotoShopがこんな速度でフィルタかけてたらAdobeは今頃地上から消えていたはずだ。
なにが問題かというとまあさすがに明白で、ピクセル一個ずつをループで丁寧に変換して歩いてるところ。当時は書き方わかんなかったし、改善よりも歩を進める事を優先したので斯様な惨状を放置する運びに。

なんでじゃあ改善するかというと、リリースしてガンガン地図増やすぞという頃合いになると、所要時間がだんだん冗談で済まされなくなってくるから。
いま作り終わってる地図が33枚あるんだけど、こいつの処理完了に15分かかる。ちょっとこれは引く。

修正後

あれこれすっ飛ばして結論。行列への関数適用をずばっとやってくれる関数を見つけたので、何となくこうですか的な具合で書いてみる。
0.27秒。意味がわからん速度が出た。いやわかるわ。30秒が意味分かんないわ。
ということであっけなく変換バッチの改善作業が終わった。

まったく苦労してないので、今回もまたnumpyとからへんが身につくほどの作業量にならずじまい。
画像の変換は触り始めると楽しいので、継続的にやってこうかなという気にはなってる。

こんかいつかったnotebook(gist)
https://gist.github.com/mezquita/0d4d99e2d66c9397949966840853779e