ごらくらいふ

プログラミングしたりゲームしたり

iPadとハードウェアキーボードで‪"日本語入力"をDvorak‬打ちできる日が来ていた

iPadOS 13.4 にて、ライブ変換が導入されたと聞いて設定を漁っていたら見つけてしまった。

前提の話: ‪Dvorak‬ 入力とは

Dvorak‬入力は母音が左手のホームポジションに集中していて、英文入力に特化したキー配列になっている。 右手で子音、左手で母音を入力できるこの配列は、日本語のローマ字入力にも非常に効果を発揮する。

条件

  • iPadOS 13.4 以降である
  • ハードウェアキーボードを使う

設定箇所

設定アプリの 一般 -> キーボード を開くと、ハードウェアキーボード の項目がある。

f:id:yajamon:20200513121652p:plain

ハードウェアキーボードの項目で、ローマ字入力に使うキーマップを選択できるようになっている。 ここで、‪Dvorak‬を選択すれば、晴れてiPadで‪Dvorak‬打ちが開放される。

f:id:yajamon:20200513121721p:plain

DvorakJPではない

か行のために ckの代替にしたり、 拗音のために nhyの代替にしたり、 二重母音や撥音の入力を補助する母音キーの上下キーによる拡張はない。

いずれ取り込んでほしい。

z + (h|j|k|l) による ←↓↑→ の入力には対応してるのだけどなぁ。

関連リンク

node_modulesをexcludeに入れても参照してエラーになっているときは、@typesを確認する。

typescriptのプロジェクトを作るとき、毎回プロジェクト設定と1から向き合ってる。 色々忘れてるから毎回足を引っ掛けるんだこれが。CompilerOptionsの項目多いし。

前提

  • 発生時の TypeScript version: 3.7.5
  • typescriptのビルド設定はtsconfig.jsonを使っている

問題

  • tscnode_modules配下を参照してしまってエラーを吐くことがある
  • excludeの対象にnode_moduleが入っているにも関わらず

原因

  • typesの設定をしておらず、tscnode_modules/@typesの下すべてを見に行っていた
    • エラーをよーくみると@typesのものばかりだった

対応

  • tsconfig.jsoncompilerOptions.types を設定する
    • 特に外部モジュールを参照しないときは、空配列を与えた
    • compilerOptions.typeRootsの設定でも良い

関連URL

C97 に一般参加してきました。

鉄は熱いうちに打てと言いますが、コミケの戦利品は夜明けまでに上げるのが良いでしょう。 日が経つにつれて公開するのが億劫になってきます。(実績を伴う

ということで戦利品。今回は朝寝坊*1が多くて、ささやかな戦果になりました。

*1:まぁ寝坊したのは朝早いと分かってるのにRTA in Japan見始めてしまったからなんですがね!!

git: 書き出しが同じコミットメッセージの手間を省く

コミットメッセージの書き出しがしばらく同じで、でもコミットメッセージはエディタで書きたいとき。 git commitを叩いて律儀に手入力するのも疲れるし細かい無駄が発生するのでどうにかしたい。

結論

git commit -em 'template message'
  • -m はコミットメッセージを入力するオプション。
  • -e はコミットメッセージを編集することを伝えるオプション。

この組み合わせによって、書き出しが同じコミットを連ねるときの負担が軽減した。 historyからコマンドを拾って叩けばよいので。

FGOを1部4章まで終えた感想

FGOはストーリーに価値があるとされているスマートフォン向けゲームです。 ストーリーのシナリオそのものの善し悪しについては一旦脇において、 ADVパートの作りがクソクソのクソであり、こんなもんじゃストーリーの価値なんてねーだろボケがという話です。

「騙されたと思って」とか言ったアイツも。なんかどこぞの章のシナリオは良かったのに制作陣の感性がどうのとか宣って袈裟まで憎みだしたアイツにも。

「テメーの褒めるストーリーの良さなんざ欠片も感じねーよバーカ!!!!!」っていう、よくも騙してくれたなという怒りと、楽しんでいるように振る舞って煽る姿への憎しみのメッセージを込めた感想文です。

ADVパートに何を感じたか

まず主人公のモノローグが無い。当然だよないわゆる無口な主人公だから。いやいやいや、ドラクエじゃねーんだからさ。Fate/Extraでさえモノローグはあったわけよ。 代替として選択肢を使用した。 この選択肢もふざけている。AかBかなのではない。A-Bをつなげて読む。選択しても意味はない。

それに加えて地の文がない。状況の描写なんてありもしない。 テキストはどこまでいっても画面下2行のセリフ枠の中。

そして喋る。ぜーんぶ喋る。ひたすら誰かが状況説明だけのセリフを垂れ流す。 ここはどこなのか、いつなのか、地の文を書かない方針の結果、ただ一行挿入すればできることをしない。 だから苦肉の策としてマップのポイントに名称をつけて、かろうじて場所・時間を表現するしかない。 これが、"あとから同じ体験ができない"という現象を引き起こす。マテリアルを読んでも、どこだか・いつだかわからないのだから。

一枚絵がない。背景と、暗転したり振動する立ち絵しかない。 Fate Stay/Nightを見ろ。セイバーとの出会いを描いた一枚絵、殺気に満ちたランサーが構えた一枚絵。 そういったシーンを象徴する切り出しの一枚絵があってしかるべきなのだ。ADVパートを使うなら。紙芝居をするなら。fateであるなら。

察するにこれはADVシーンの作りがクソなことにも由来している。セリフ枠は必ず出しっぱなしになるからだ。 一枚絵を書いてもぶち壊しのインターフェースが常に重なる。 こんなダサいイラスト殺しなブツはない。

そもそもカッコいいシーンを描くことができないだろう。なぜなら戦闘はADVパートの外で行われ、見せ場は宝具演出で行うからだ。 状況によっては、サポート鯖に蒸発させられるカスのような鯖がADVではいっちょ前に一枚絵でキメた演出かけたりすることになる。 これは噴飯ものだ。興ざめにしかならない。

イラストレーターが異なることもキャラクターを載せた一枚絵を作れない理由のひとつだろう。並べられないのだ。できたところでせいぜいが概念礼装のペラペラに描くかどうかだ。

一方で戦闘パートがADVパートを補うこともしない。ヘラクレス押し込んで消滅させるとか、戦闘パートで演出できれば素晴らしいだろう。ソロモンに軽く消し飛ばされるのだって戦闘パートでやっていいじゃないか。 戦闘パートが戦闘の責任を果たさないがために、ADVパートでわざわざ ダメージを受ける -> 消える の手順を踏むことになっている。 その前の戦闘はいったいなんだったんだ? "既に死んだ" で十分すぎる。

ぶつ切りのADVパートにも大いに不満がある。すべてが戦闘でぶつ切り。中断させられる。一貫して話とおすことはない。 いうなればフレーバー。ぷよぷよの対戦前後のちょっとしたテキストと同じ。

FGOはストーリーに価値があるなどというが、このADVパートの構造はその価値を軽く吹き飛ばす程にひどいものである。 ストーリーに価値があるなら戦闘パートは不要で良いはずなのだ。しかしそうではない。

つーかストーリー・シナリオが良いんじゃなくて、プロットが良いの間違いでしょ。アニメで見ると良かったんだもの。

選択肢の価値がない、シナリオに変化もない、モノローグもない、地の文もない、状況説明はMobが垂れ流す。 無口な主人公が主役のドラクエ(無印)でさえ話す相手や順番を選ぶことができる。 抜きゲーでさえルートが変化するのにそれにも劣る。

これらをもって判断すれば、FGOサウンドノベルではない。そしてRPGでもない。どれにラベリングしても恥じる以外にないだろう。

ではFGOの価値はどこにあるのか。それはFateのステータス表現システムそのものであると考える。 カッコいいカワいいキャラクターが偉人のフレーバーを纏ってステータス表現されること。あの偉人がFateのステータス表現をしたらどうなるかな?そういうアレやコレやの妄想の種を実現させることに意味がある。価値がある。 そこにしか無い。

つーかストーリーに価値があるなら復刻を終えたイベントのシナリオ解放くらいしてしかるべきでしょ。 実質1.5部とか実質本編とか持て囃されてあれはご褒美とか言うならマテリアル公開したら?

一括でRenameしたよ、というコミットをサクッとレビューする

gitのお話。 ディレクトリ整理とかで多数のrenameが発生した修正のレビューをすることになった。 pathの変更を見ればいいだけなんだけど、長すぎてGitHubのPull-Requestでは省略されてしまう。といったシーン。

結論

fetchしてdiffやshowで確認する。 --summaryオプションをつければよい。

git show --summary {commit-ref}
# あるいは
git diff --summary {base-commit-ref} {commit-ref}

diff部分がまとめられて、renameの状況が確認しやすくなる。 たとえば foo/baz/foo/bar/baz/に移動した場合、次のように表示される。

rename foo/{ => bar}/baz/aaa.txt
rename foo/{ => bar}/baz/bbb.txt
rename foo/{ => bar}/baz/ccc.txt
rename foo/{ => bar}/baz/ddd.txt
rename foo/{ => bar}/baz/eee.txt

xyzドメイン切れたしmastodonインスタンスの更新を始めた

.xyzドメインがお役御免となった。

.devドメインのためにGoogle Domainsを使い始め、ついでに .com ドメインも取得したので、もうxyz維持する必要もないのだ。

これに伴い(自動更新で意図せず)生きてるVPSの整備を再開しようと思いたち、今mastodonの更新をしてる。

yajamon.hatenablog.com

この記事のやつね。(当時v1.2.2、現在v1.3.2)

2019/06/25現在、mastodonの最新バージョンは v2.9.2らしいので、正式バージョンだけでもおよそ50件近い更新作業が必要らしい。早速 v1.3.3 に更新した。 一日に一件程度のペースで着実に更新していけばなんとかなるかな…。

雑多にやったこと

サービス再起動のたびにコマンド打つのが面倒で、シェルスクリプトにまとめた。

#!/bin/bash

echo "mastodon stopping..." >&2
service mastodon-streaming stop 
service mastodon-web stop 
service mastodon-sidekiq stop 

echo "infra restarting..." >&2

service rh-redis32-redis restart
service httpd24-httpd graceful

echo "mastodon starting..." >&2
service mastodon-sidekiq start
service mastodon-web start
service mastodon-streaming start

もはや && でつないでさえいないけれど、まぁこれでいいのだ。initスクリプトにrestart足してもいいんだけどね…

参考リンク

また飽きたりしても大丈夫なように、参考リンクとか残しておく。