これから先10年、フロントエンドに関する予言
これは怪文書です
- ここから10年はWASMがDOMのGCインテグレーションを果たしてJSを置き換えるか、JSがWASMに追いつかれる前にまともな言語として進化しきれるかのチキンレースになる
- ES Modules のブラウザ実装が枯れた頃に先鋭化したフロントエンドツールセット群は一旦そこで破棄され、シンプル化への揺り戻しが起こる
- 仮想DOMはブラウザエンジンの何らかの処理で更新が隠蔽されるか専用のDOM更新APIができ、Reactのような実装の手を離れる
- WASMで git, vim, bashなどが porting されるにつれ、再びWebOSのようなものが試みられる
- TC39でJSの型アノテーションの構文だけだけ決めよう => V8 が型アノテーションを元にランタイムを最適化したぜ! => 気づいたら標準化みたいな流れがある
- IE11のサポートは延長されず、MSがなんらかの強攻策に出る
- Houdiniの大部分は頓挫して少数のAPIの追加に留まる
- WebGL上でHTMLレンダラのサブセットが実装される
- WASMがDOMインテグレーションを果たす前にWASM上のGLレンダラーでGUIツールキットがDOMを代替しようとする動きが一度ある
- その反動としてJSでよくね?ってなるタイミングもある。特にセマンティクスの観点から。またはWebGLでレンダリングしたものにセマンティクスを付与する仕組みを作ろうとする。
- HTML/DOM は、今のHTML3,4時代のレガシーを引きずった仕様から一度仕様をリフレッシュしようぜ!って動きが出る。というかGoogleがやると思う。
- AMPは実は↑みたいなことを目指してたんだ!とGoogleが言い出す。AMPが流行らない場合は別の概念でお茶を濁す。
- Facebook は標準化の動きを無視してReactNativeの延長上で環境を抽象化して独自世界を築いていく
- あるいは Facebook が自前のブラウザを持とうとして、それはMobileのFacebookの描画に最適化される
- 今時点のストッパーであるSafariだが、iPhoneがシェアを失えば失うほどSafariの標準準拠度は上がっていきどちらかというと準拠度は高い方になる
- WebVRや3DのビューのためにCSSプロパティ群が追加される。depthとか。使われるかどうかともく。
- 開発者向けにLinuxデスクトップの文脈でElectronOS或いはそれに準じた環境が出る(使われるかどうかはともかく)
- Web開発者の環境はMacを見捨てて何らかのLinuxデスクトップか Docker on Windows に主戦場が移る
10年スパンで2割ぐらいは当たってほしい。
ペルソナ5 クリア済み感想 ネタバレ無し
P5、115時間でクリア。最初から最後までずっとハード。クリア時はLv70。ペルソナはソロネ/コウリュウ/トランペッターが主力。最終パーティは竜司、真、祐介。ラストダンジョンは途中から面倒くさくなって煙玉で逃げたり雑にハマ成功率UP付けたマハンマオンぶっぱなしていた。
コープは意図的に6で止めた竜司と、解禁条件をたぶん見逃した三島10以外埋まった。最終的にはずっと筋トレしていた。
シナリオ
シナリオについて色々言いたいことはあるがまあコアターゲットを考えればこんなものだろう、という印象。とはいえ名称と解釈と演出に既視感が強すぎる。お決まりの演出を積み重ねただけとも言えるけど、パロディらしくメタっていく要素もないのでもやもやする。偽○○○○はウオーって思ったけど。
怪盗というコンセプトと、ペルソナという世界観のシナジーはあったと思う。
竜司は英雄願望・脳筋というキャラクター設定とピカレスクという作品コンセプトからウザいキャラにならざるをえないのはわかるが、それにしてもイライラして、しかもゲーム後半になるほど高まるので、やはりキャラの動かし方を失敗してると思う。後半見せ場を作って帳消しにしたいというニュアンスを感じたが、その程度では許せなかった。
メカニクス
ゲーム的に警戒度、予告状といった一部の要素があんまりワークしてないように感じていて、多分開発途中で難易度、というかアクション性を下げる方向に仕様を変更したんだろうなという感じがある。本来はスタイリッシュな操作をプレーヤーに要求するデザインだっただろう。
ゲーム後半、そこそこやりこんでいく過程で、エンドコンテンツがないのが気になった。レベル制限が外れるので、レベル90代のペルソナも無理すれば作れるが、本編中でそこまでして攻略したいダンジョンがない。ラスボスはギリギリだったけど、途中からレベリングを放棄して突っ走ったので適正かやや下ぐらいで着地した気がする。効率プレーして溜め込んだアイテムを使う場所がほとんどなかった。
音楽
BGMの品質が低いわけではないが、4つぐらいのBGMを使いまわしすぎてて気になった。使いやすいのはわかるが。というか無理矢理当てはめてるので雰囲気にそぐわないシーンがいくつかあった。
総評
だいぶ文句言ってるけどそもそもクリアしたゲームがここしばらくなかったので、全体としての満足度は高いです。
俺が戦ってるのはゲームの中の敵じゃなくて意図されたゲームバランスなので、インフレさせてゲームバランスぶっ壊したらその時点で勝ちなんだよな
— 現場の声 (@mizchi) 2016年9月19日
Steamの雑なゲーム大量にやってからP5やると、プレーヤーへのおもてなしが過剰な感じはあるけど、Steamの雑なゲームは雑だからこそやっぱ投げ出すわけで、これぐらいやんないとプレー意欲をもたせられないだなーという気もする
— 現場の声 (@mizchi) 2016年9月23日
まあP5だってアトラスの文脈あってこそのゲームではあるが、アトラスのモンスターじゃなくて完全にオリジナルでも成立はするけどコストの問題ではあるだろうな
— 現場の声 (@mizchi) 2016年9月23日
世界樹の迷宮、いくらジョブを追加しても体験が変わらないのは、やっぱ問題はキャラクタービルドの多様さではなく、攻略すべきダンジョン、倒すべき敵に新規性がない、のが問題な気はする
— 現場の声 (@mizchi) 2016年9月23日
悪魔合体システムのいいところはLvを更新するために合体が必要なんだけど、リソースの分配によって何かしら不足が出るので、リソースの不足を解消するために、その場で解決策を捻出する必要があり、そのパズル感がメリハリを生んでいる、というのをP5やって思った
— 現場の声 (@mizchi) 2016年9月23日
ビルド幅が広すぎてゲームバランスがぶっ壊れたのが世界樹の迷宮3で、ビルド幅がとくに意味をなしていないのが世界樹の迷宮5。初代はぶっ壊れてはいるけどその上で楽しみ方がちゃんとあった。
— 現場の声 (@mizchi) 2016年9月23日
JavaScript で クラスベースの設計より関数指向の実装を薦める理由 + GraphQL について
最初に: 「Functional Programming 最高!」という話ではないです
JSは通信やストレージに保存するデータの扱いの関係で、JSONにシリアライズできることが至上命題になるケースが多いので、クラスベースの設計で自身に副作用を起こすメソッドより、イミュータブルな T => T なstatic methodとして切り離しておくと扱いやすいケースが多い
— 現場の声 (@mizchi) 2016年9月6日
複雑なオブジェクトのシリアライズは簡単だけど、逆にシリアライズされたオブジェクトからビルダを構築するのが難しいので、JSONの構造体自身とは別に独立して独立したメソッドとしてビルダが切り離されている方が扱いやすい
— 現場の声 (@mizchi) 2016年9月6日
一応コンストラクタ名を保存してシリアライズ/復元する方法はあって、RPGツクールMVのコードを読むとそういう感じになっていた。
— 現場の声 (@mizchi) 2016年9月6日
HTTPやWebSocketでJSONを構造体を投げ合う / サーバーサイドでMongo環境である / クライアントサイドでIndexedDbで保存する / 出力形式としてJSON フォーマットを持っている、などがJSONシリアライズを強く意識する環境で、とくに通信
— 現場の声 (@mizchi) 2016年9月6日
そういうドメイン的な都合とは別に、イミュータブルな構造体の変換(T -> T)の関数をインスタンスの実装から分離するといいよね、というのはモダンな言語でも流行りのアプローチなので、実際にはthisが第一引数へ、副作用の代わりに同じ型のインスタンス返す、というそれだけの話
— 現場の声 (@mizchi) 2016年9月6日
JSで immutable-js 使わなくても、強い心で副作用を起こさない、というアプローチを取ることは可能です。今なら object literal shorthand があるので const next = {…prev, foo: 1} と書けて記法的にもそこまで辛くはない
— 現場の声 (@mizchi) 2016年9月6日
こういうのもある https://t.co/MReB2a2NLf
— 現場の声 (@mizchi) 2016年9月6日
GraphQL について
mizchi さんに GraphQL(実装ではなく、仕様とコンセプト)について評してほしいの気持ち
— 21話 (@KOBA789) 2016年9月6日
GraphQL ちゃんと掘ってないけどクエリがだいたいJSONなんだからJSONでよかったやろと思っちゃいる。アレのせいでクラサバにパーサが必要になってだるい。サーバーはいいけどサイズ絞りたいクライアントはなーという。たぶんbabelみたいなプリプロで変換できるけど。
— 現場の声 (@mizchi) 2016年9月6日
GraphQL、コンセプト的にREST APIと対立するというかREST APIの否定感が強くて、クライアント本位なら別にいいけどREST倒すほどのものかというと厳しいのではという感じがある
— 現場の声 (@mizchi) 2016年9月6日
@Quramy なんとなくやってそうな気がしましたが、やっぱやってるんすねー
— 現場の声 (@mizchi) 2016年9月6日
JSONでクエリ書けばいいやん!ってのはやっぱ思っててコード中インラインでクエリ書くのは静的解析辛いだろうしシンタックスハイライトとかエディタ側でし辛い(できないとは言わないがだるい)
— 現場の声 (@mizchi) 2016年9月6日
Mongoのクエリは書きやすかったという話です(Mongoがよかったという話ではない)
— 現場の声 (@mizchi) 2016年9月6日
要約するとGraphQLは目的に対して独自構文まで持ちだしたのはやり過ぎなのとREST倒すだけのメリットを提示できてない、という感じですあとグラフデータベース的な側面はFacebookみたいなソーシャルグラフを扱ってないとあんまり生きないのでは、という気持ちもある
— 現場の声 (@mizchi) 2016年9月6日
OLE開発記(2)
Tree of Savior のオープンβで進捗に悪影響がありましたが、最初の熱が醒めたので、どうにかなります。なると思う、たぶん…
何もしてないわけではなく、色々作ってはいた。
OLEという名前について
OutLineEditorの略のつもりだったが、Windowsにそういう仕様があって、というツッコミが多かった。全く知らなかった。
OLEとは|Object Linking and Embedding - 意味/定義/解説/説明 : IT用語辞典
元々ole(仮)なので、名前を変えることには抵抗はないけど、まだ名前が思い浮かばないので、とりあえずこのままで。。
Markdownコンパイラの実装
色々と文法を拡張したり出力をコントロールするのに、自前のコンパイラを持っておくと便利と思って、remark をベースに実装した。
数式プレビューしたり、キャレット位置でコンパイル先とスクロール位置を同期する仕組みを作ったりしている。textlint の組み込みもできる。
スクロールの最適化
フォーカスが当たった瞬間にwysiwygのエディタを有効化した場合、下押しっぱなしで高速に移動したい場合に突っかかりまくって邪魔だったので、編集に入るまでは雑に pre につっこむ感じにしてみた。
正直やや違和感ある。特定の分量を超えたら、でコントロールしてもいいかもしれない。
タイトル
元々シート(編集単位)は記事名の情報を持っていたが、中身と独立してシート名が存在するのが実体と乖離して嫌な気がしたので、inline-yaml記法(独自記法ではなくgithub flavored markdownの仕様の一部)でtitleプロパティを埋め込んだらそれを表示するようにした。タイトルを持たない場合は、文頭をtruncateして表示する。
編集に入ったときに titel: < ここ
の部分にcaret移動したい。他のメタ情報もここに書けるようにする。
タイトル名の同期
このためにファイルツリーの部分更新の仕組みを入れた。 編集する度にタイトルが編集されてないか監視してるが、入力の度に監視しているので、コスト的にあまりおいしくない気がしている。あとで入力まとめて最終入力から 1s ぐらいにイベントを束ねる。
シート結合/並び替え
同階層で複数選択してcmd+shift+j でシートを結合できるようにした。 cmd+shift+↑↓で並びを変更できるようにした。
複数階層にまたがった記事の結合パターン、なにが正しいのな何もわからない(ヒューリスティックも思いつかない)ので、とりあえず禁止しておくことにする。
次やること
- グループに出力に含むかの設定を持たせる
- グループに出力時の階層設定を持たせる(headingの数をずらす)
- 出力(仮)
- シート検索
- グループごとの階層コントロール
- リビジョン機能を作るか検討
リビジョン機能
シート単位で特定の状態のスナップショット作って、あとで現在の状態と比較できるようにしておきたい、と思いついてはいるが、ぶっちゃけ他にやることも多いので後回し。
リリース目標
出力機能の仕様がまだ決まってないので、DBスキーマを変更する可能性が高く、まだまだβテストやるのは厳しい。出力機能の仕様が固まったら安定しそう。まず機能面を固めて、スキーマが決まったらデザインのブラッシュアップする、予定。
とりあえずDBのdump機能とマイグレーションがあればどうにかなるっちゃなるんだけどなー。
同調圧力、その再生産
皆が面白いと思うものを面白いと思えないから、面白くない、と言うと「水を差すつまらないやつ」とか「斜に構えて気取ってる」みたいな扱いされるんだけど、こっちは本当に面白く無いと思っているわけで、その可能性を検討できない人は、同質的なコミュニティだけで生きてきた幸せなやつなんだな、と思う。
「嫌なら見るな」という言葉も嫌いで、まあ僕は見ないんだけど、結果としてそういうものに囲まれて生きることになるので、「政治的なアクション」として、否定的な見解を発していくのは必要なことだとも思っている。たとえそれが自分に通じる範囲にしか響かなくても、僕が快適にしたい領域はそこなので。
たとえばシンゴジラは僕も見てよかったと思ってるけど、国威発揚的な演出はクッセーと思ってて、嫌いな人いるだろうなって思うし、絶賛以外許さんという連中はまさに多数派の同調圧力の発露なので、個人的な嫌悪の対象にある。
僕が18まで無理矢理通わされた「教会」は、一般的な価値観を否定することによって同調圧力を強固にする仕組みになってて、あれに18年も拘束されたのは人生における一番の無駄だったし、結果として「同調圧力を生産する仕組み」に対する憎悪に囚われてしまった。
そういう諸々から、LGBTの生きづらさの感覚は多少共感するものはある。生理的には、受け付けないけど。
ダイエット三ヶ月目 72.6kg => 69.0kg (三ヶ月で-10kg)
進捗
- 1ヶ月目: -4.2kg
- 2ヶ月目: -2.2kg
- 3ヶ月目: -3.6kg
身長169cm/69kg, BMI24.16, 25を切ったので「肥満」域を脱した。
ダイエット進捗 69kg です pic.twitter.com/eEeIsradHH
— 現場の声 (@mizchi) September 1, 2016
エロゲの主人公みたいな髪型になってる
— 現場の声 (@mizchi) September 1, 2016
だいぶ昔に「このエロゲをやれ!エロゲの最高傑作で、人生変わるから!」と近所の熱心なお兄さんにKanonとAir勧められてプレーしたんだけど、面白かったけどこれが最高傑作なら他はやんなくていいやとなって、エロゲの道には進まなかった
— 現場の声 (@mizchi) September 1, 2016
今思えば、Kanon/Airよりも、近所のエロゲの布教に熱心なお兄さん、という存在のほうがエモいな
— 現場の声 (@mizchi) September 1, 2016
脱線した。まあ今更顔出し気にしてもしょうがないんですが。(なおこの発言をするとアレをエロゲ扱いするなおじさんが湧いてくるところまでは把握済みです)
振り返って
毎年ではあるんだけど、夏場で体調崩していて、特に低気圧が近寄ったり離れたりで、頭が破壊されていて、ジムに行くチャンスがほとんどなかった。週3.5のペースで行ってたのが週1.5回になってるので、来月は頻度を戻したい。体重とは別に代謝も上げないとリバウンドする。
とはいえ、体重は1ヶ月目に相当するぐらい落ちていて、原因は2ヶ月目は推測したとおりホメオスタシスが発動していたのと、3ヶ月目の途中から主食をザバスのプロテインダイエットに切り替えた結果だと思う。豆乳で割って飲むと結構おいしいのと、そこそこ腹持ちするので、食欲が収まり、精神的に良い。
(アフィ貼ろうと思ったが、今までの記事がアフィ記事だと思われたくないので貼らないことにする)
プロテインを豆乳に溶かしてシェイクするだけというお手軽満腹リソースなので、これはダイエットやめても続けていきたい。あと、うまい(大事)
結果
会う人会う人に痩せたねーと言われる。
腹の肉が目に見えてつまみやすくなった。むしろ下腹部がなんかずっとスースーする感じがある。 腹の肉はいいとして、皮が若干余ってる気がする。80kgのとき三段腹になってた部分が、まだ三段になるんだけど、押し出されてるのが皮だけって感じ。
「100kgの巨漢が-40kgダイエット!」みたいな衝撃的な写真で見たほどではないが、まあ3ヶ月で痩せたら皮は余るか。まだ大丈夫だけどあと5kgぐらい減らすと顕著になりそう。
痩せて体調が良くなったとかそういうのはない。上述したとおり8月はだいたい体調崩してたので…。ただ、肩こりが多少低減されてきた気がする。
今後
今度またインタビュー記事でるんですが、あれは72kgのときにとったやつなんで、察してください。
169cm/69kg という状態、まだまだ平均を上回っていて、痩せられる余地があり、精神的にも余裕があるので、あと2ヶ月ぐらい続けたい。
とはいえ社長(yaotti)にとあるお詫びに中華をおごる約束してしまってるので、一回の中華でどんだけ太るか測れそう。腹一杯に楊の汁なし担々麺くいてえな。
OLE開発記(1)
昨日のブログでそれなりに注目が集まったので、開発メモ的なことを書いていくことにする。 OLE = OutLine Editor です。たぶんこのまま開発コードになる。リリース時にオシャレネームつける可能性はある。
昨日やったこと
- ゴミ箱に全部削除ボタンを実装
- D&Dでアイテムとアイテムの隙間にドロップして挿入したいよね〜という内なる声に従って D&D 改良中。これ単純に難しい。実装できるか不明で後回しのがいいかも。
- ブログ書いてベータテスター集めた。
ベータテスト開始の目標は10月頭としたい。
最悪DBスキーマさえ決まれば、ベータテストはできる。データワイプやらずに済むよう、スキーマとマイグレーションの仕組みをきっちり決めたい。
ベータテスター集まった
10人集まった。ありがとうございます。 ベータテストにあの結城浩先生が参加してくださるということで、プレッシャーがヤバイ。
要望
- textlintの組み込み
- 一行当たりの最大文字数とかこれでいけそう
- ワードカウント
- 行数表示
- Scrivener のコルクボード表示
- 数式/図
- mdbook
- markdown以外の構文対応(Re:Viewとか?)
- 扱いやすい中間状態の出力(とはなんだろうな)
- 縦書き出力
予想以上にScrivenerのコルクボード表示の需要が高い。 全部やるとは限らないが、やりやすいのから検討していく。textlint は最初からやるつもりだった。
縦書きの組版は地獄なので、雑にやれるところまでやって、深入りしない方向で。
競合調査
- Scrivener
- Ulysses
- Quiver
- Atom
- Tree2
- OmniOutliner
この辺を研究しろとのこと
今後
今日OBT開始の Tree of Savior に進捗吸われないように気をつける