カテゴリー: Final Fantasy XIV

Home / カテゴリー: Final Fantasy XIV

星導山寺院

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

ロケハンちゃんというサービスを作ってて、その合間に見っけた小ネタを書いています。

アラミゴのえーと、ラールガーズリーチにあるでっかい寺院?廟?
CFとかの一覧にあるラベルは「壊神修行 星導山寺院」となってます。このへんてこな4文字の枕詞みたいなのは入れないと死ぬんだろうか。
奥に幽霊の爺さんがいる、モンク修行所兼お化け屋敷みたいなインスタンスダンジョン。英語名はThe Temple of the Fist。ゲンコツ寺院ですって。こういう乱暴な名前は大好き。

ここのフロアは星導山中腹、星導山山頂って名前になってるのですけれども、例によって英語名を調べに行きます。
星導山中腹   Dilemma
星導山山頂    Enlightnment
うん?わりと意味が異なる命名になっているような。
Dilemmaは文字通りジレンマ。板挟みだの窮地だのといった、進退きわまっちゃってつらいみたいな状態を指す言葉です。
そして山頂の側のEnlightnment。あたしには見慣れない言葉ですので調べます。とかいってますがジレンマの方も調べてます。はりさんは物を知らない。
んでEnlightnment はいったいなにかというと、「啓発」。
啓発ですか。

「憤せざれば啓せず、悱(ひ)せざれば発せず」から》人が気づかずにいるところを教え示して、より高い認識・理解に導くこと。

「憤せざれば啓せず、悱(ひ)せざれば発せず」から》人が気づかずにいるところを教え示して、より高い認識・理解に導くこと。 コトバンク

なるほど。確かにモンクの道を導く修行の山としては、英語名のほうが実態をよく表現している気がします。
やりやがったなコージ。設定本書いちゃうだけあるよねやっぱり。

こんなちょこっとずつチマチマじゃなくて、フロアの英語名なんてまとめて見とけよって思うかもしんないですけど、やれそうな範囲だけちょこちょこ見に行くほうがモチベーションの低下にならないのです。面倒は面倒です。
地図画像とエリアのデータを作るタスクはわりと脳死作業というか、あんまり考えずに黙々とやるたぐいのもので、定型化しているながら手作業が避けられないという性質を持っています。

そんでそこで見っけたちょいとした小ネタをこねくり回して、たまに日記の種にしていこうという算段。算段というほどのことでもない。

言語切り替え四方山話(1)

2018-12-28 | Final Fantasy XIV, halipe.co | 1件のコメント

人生二向聴のはりぺこです。
ロケハンちゃんを作る原資になっているのが各地の地図と地名であることはおわかりかと思います。あとはあたくしのしょぼい努力。
で、昔のコンテンツの地名であればライブラ エオルゼアにぜんぶ地名入ってたんだが、それはもう過去の話になっちゃったので、手で「各地の地名」と「フロア名」を集めなくてはなりません。なんかゲーム内でフィールドワークし始めることになっちゃって色々となかなかです。
コンパニオンアプリは起動が重いので程なく使わなくなり、あたしは愛するライブラ エオルゼアを単に失っただけとなってしまった。つらい。

さて。
「失われた都 ラバナスタ」とかあるじゃん、あれだけじゃないんよ。各フロアにちゃんと名前がついてる。ラバナスタ廃墟ガラムサイズ水路王都ルザリアの3つ。ロケハンちゃんはいつか多国語対応もしちゃうんだもんねとかいうわりと大仰な目標を掲げたままスタートしたので、何が何でも、最低でも、英語の名前表記だけは必要だという事情と、そもそも地名のキーを英語版のものにしてるのが主な理由。日本語でもいいんだけどURLが%記号だらけになるから避けたかった。

オープンフィールドなら地名だけでいいんだけど、階層構造をもったID内だとフロアの名前もないと識別できないの。
1F、2F…でいいかとも思ってたんだけど、イギリス英語では1階がGround floorで、2階のことをFirst floorっていうよね。アメリカは1階を1Fっていう。もうやだ。
あたし個人がイギリス人に配慮する理由はまったくないんだけど、1階はグランドフロアっていうんですよ~みたいなことを言われるたびに同じ話をするのも面倒くさい。結局、ゲーム内表記をフロア名に用いれば何もかもが解決する。
※FF14内では1階のことをだいたいは1Fと表記しています。”ストラテゲイオン1階” は”Strategeion – 1F”です。そりゃどこだっって?あたしも知らない。カッパーベルあたりは逆で、1FをGround Floorとしています。

で、この3つのフロア名は英語版だと、Charred Ruins、Garamsythe Waterway、The Royal City of Lesaliaってなるんだけどこればっかりは英語版でログインして見に行かないとどんな名前かわからない。
そんでは地名やらの更新作業を以下に並べてみます。

  • たのしくルレ行ったりブロック積み上げてナメクジに殴られたりする
  • 地図の更新をすべく重い腰を上げる
  • 地図をスクリーンショットとって地名メモってFF14終了
  • 即起動して英語版に切り替え
  • また地図開いて地名メモってFF14終了
  • 地図のスクリーンショットをつなげて一枚の地図として切り出す
  • たのしくたのしいデータ更新作業と反映作業

こんなかんじ。わりとつらい。なんかパリッとどっか叩くと取得できるなんらかの方法がほしい。英語版のFF14攻略サイトでもないかなともって探しに行くんだが、半ば自動生成の中身空っぽガイドみたいな変なのしか見つけることができず折れてる。ほんとはフランス語とドイツ語のフロア名も欲しい。あそこにあるのでは!?ここでは!?とか色々探すけど、いまんとこフィールドワークするしかないっぽい。

目に見える更新を挟む

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とかにあらかたツール揃っていて、アクセス解析や障害検知のセットアップしなくて済んだのが大きい。
そう考えると昔の人は偉かったんだなあ。すっごい他人事なのは、当時はまるっぽ知らんぷりで人任せにしてたからです。