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を切ったので「肥満」域を脱した。

脱線した。まあ今更顔出し気にしてもしょうがないんですが。(なおこの発言をするとアレをエロゲ扱いするなおじさんが湧いてくるところまでは把握済みです)

振り返って

毎年ではあるんだけど、夏場で体調崩していて、特に低気圧が近寄ったり離れたりで、頭が破壊されていて、ジムに行くチャンスがほとんどなかった。週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人集まった。ありがとうございます。 ベータテストにあの結城浩先生が参加してくださるということで、プレッシャーがヤバイ

要望

Twitter/はてブから抽出

  • textlintの組み込み
    • 一行当たりの最大文字数とかこれでいけそう
  • ワードカウント
  • 行数表示
  • Scrivener のコルクボード表示
  • 数式/図
  • mdbook
  • markdown以外の構文対応(Re:Viewとか?)
  • 扱いやすい中間状態の出力(とはなんだろうな)
  • 縦書き出力

予想以上にScrivenerのコルクボード表示の需要が高い。 全部やるとは限らないが、やりやすいのから検討していく。textlint は最初からやるつもりだった。

縦書きの組版は地獄なので、雑にやれるところまでやって、深入りしない方向で。

競合調査

この辺を研究しろとのこと

今後

今日OBT開始の Tree of Savior に進捗吸われないように気をつける

本を書くためのアウトラインエディタを作ってる

少し前からアウトラインエディタを作ってる。

こんなの

(画面は開発中のものです)

ファイルツリー

複数シート同時編集

ファイルツリーUIというのをスクラッチで初めて作ってみたんだけど、「当然こう動いて欲しいよな」というヒューリスティックな挙動をたくさん作るハメになってて学びがある。

なぜ作ったか

技術書を書いて Kindle Direct Publishing で販売しようと思って、Macで売れてるアウトラインエディタを一通り試したんだけど、惜しい物が多くて、個人的にしっくり馴染むものがなかった。なので、技術書を書く前に、自分が本を書くために必要なツールを作るところから始めることにした。

作家・藤井太洋に聞く 「小説を書くためのツール、Scrivener」 - DOTPLACE を読んで、その辺のアプリに対する感覚を自分でも意識して作ってる。Scrivener は wysysig なんで自分にとって論外。

エンジニアとして5年経って、個人でアプリを最初から最後まで作って販売した経験がないので、将来の選択肢を考えるのに経験を積んでおきたいというのがあった。あと仕事でElectronアプリ作って経験値溜まってるので、ホットなうちにその経験値を金に変換しておきたい。

Electronアプリを Windows に出す場合、どこに出せばいいんだろうか。

どういう機能を持ってるか

  • Markdown
  • 階層で管理
  • 複数シートの同時編集
  • epub出力(たぶん)

進捗

Done

  • プロジェクト管理
  • ファイルツリー
  • 右クリックで操作
  • キーバインド
  • ゴミ箱

これから

  • デザイン面のブラッシュアップ
  • 出力/プレビューのブラッシュアップ
  • 画像管理/埋め込み

配布形態

有料アプリ。どういう配布形態にするか決めてないけど、とりあえず最初はApp Storeで販売するのを目標にする。価格は1800円ぐらいの予定。たぶん変わる。

品質面で売り物にならないと判断したら、OSSにする。

どういうターゲットを想定しているか

  • 長いドキュメントを書く人全般
    • 技術書を書く人
    • 小説を書く人
    • ブロガーみたいな細かいドキュメントをたくさん書く人

リリーススケジュール

  • 基礎機能の実装(もうちょいで終わり)
  • 設計の見直し: 長期的にメンテできる構成か
  • デザイン面のブラッシュアップ
  • このアプリで本を一冊書く
  • 修正
  • βテスト
  • フィードバック反映

今年中に出せたらいいなぁ。 βテスター募集してるので、興味ある人は Twitter @mizchi まで。

追記

ベータテスター10人集まったので募集締めきりました。引き返せなくなったぞ!

JavaScript の難しさとは何か

ブログを書き続けること

昔から気をつけてることなのだけど、ある程度、ブログ、とくに技術テーマ以外の記事を書く頻度はコントロールしよう、と思っていた。具体的には、1ヶ月の間に2, 3回ホッテントリなどに入ることは問題ないが、2, 3ヶ月連続で耳目を引き続けるのは、避けた方がいいのではないか。とくに落ち着いて暮らしたいなら。

中長期的にあまりに注目を引き過ぎると、勝手に記事間の文脈を悪意を持って補完されたり、固定のウォッチ対象にされてしまったりすることがある。粘着なアンチは聞く耳を持たないので無視するに限るが、人間何に反感を持つかわからないもので、自分がコントロール出来ない要素をたくさん抱えると、書くことそのものが億劫になっていく。日常生活にも影響が出る。少なくとも僕は、自分が書いたものが自分のコントロール下から外れていないか、怖くなってエゴサーチばっかりしてしまう。

「悪意を持ったコメント」に対抗する方法は難しく、たとえば僕がやることが多いアプローチとしては、過激な意見を述べるときは、想定される反論に対するエクスキューズを予想して事前にそれらを多めに準備し、そこを執拗に責める悪意がある人間の方が、異常に見えるような演出をする、といったことをするのだけど、想定反論の想定に失敗した時点で破綻するし、事前の下調べも、細かなレトリックの調整も、なかなかに難しい。あまり難しいと、そこまでやってして書きたいことだったか?と、自問してしまうし、その自問によって破棄した記事も、いくつかある。

書きたいことだけ書き続けられるか

基本的に、僕がこのブログで書くことに関しては、書きたいことだけしか書いていないのだけど、積極的にこれが書きたい、という動機以外に、何か漠然とした恐怖や、ストレスが溜まると、文章に逃げる傾向も自覚している。何かが上手くいってない時の、逃避としての文章。

今この文章を書いているのは、今述べたうちの「漠然とした恐怖」を元にしている。ここ数年の努力の甲斐あってか、一通りのストレス源を排除し、漠然といろんな物事、僕が向き合うと決めた物事については、上手くいった手応えはあるのだが、それがなんとなく怖い。

その不安とは、自分を今の自分足らしめた衝動が、失われているのではないか?排除したストレス源とは、本来真っ当に向き合うべきではなかったのか?初期衝動を失った自分は、果たしてそれらを享受しつづけることができるのか?というもので、「初期衝動を失って、飢えていない自分」が、自己規定から逸脱しそうになっている。

承認欲求と冷却期間

自分はなんだかんだで見栄っ張りだし、承認欲求も強いし、書いたものは見てもらいたい。その感情を否定するつもりはない。ただ、必要量以上を摂取して自家中毒になるのは避けたいし、コントロール出来ない反響を生み出したくはないとも思っている。さっき述べた、粘着なアンチとか。

継続してブログを書き続けたいなら、定期的に「冷却期間」は必要だと思っている。たしかに、継続的に書き続けると、時系列的な注目度があがって、いろんな読者にリーチし、承認欲求を満たしやすいものではあるのだが……悪い意見は好意的な感想の倍以上、心にクるので、扱う感情の総量を増やすと、心が折れやすくなる。よっぽどタフでない限り、いつか折れて、失踪する。そういう人を、沢山見てきたし、瞬間的な熱量が高い人ほど、彗星のように輝いて、そしていなくなる。

ここでいうブログとは、最近どこぞで流行ってる「ブロガーのブログ」とは違って、アクセス数を伸ばす為のものではなく、「個人の日記」としてのそれであり、僕がやってるのはそれである。そしてその目的は、アフィリエイトではなく、個人のブランディングであり、自己紹介の省略のためであり、人間関係における不満のアピールでもある。

とはいえ、覚悟をしないと得られないものはあるわけで、覚悟がない人間がその先に進むことはできない、という感覚も、なくはないんだけど。

強い意見、大きな主語

自分の意見を、とりわけ強い意見を公開したことに対して、否定的な意見がつくのは、しょうがないことだし、ある程度覚悟はしている。その覚悟がないなら、インターネットで何かを書くべきではないし、胸のうちに秘めておくべきだと思う。それが本当に必要になる時までは。

今現在、自分のことを基本的にはエンジニアが主たる要素だと定義しているが、父子家庭のモルモン教徒の二世、その宗教への反抗という、やや特殊な生まれと環境のせいで、社会に対する不満や、家庭や義務教育による抑圧など、自分の人格を歪めたと認識しているものに対する敵意が強く、それらについて過激な意見を持っていると自覚している。この意見は、表明するとそれなりの反響があるのはわかっているし、過去には何度か、そのコンテキストで必要なものに対しては表明している。

ただし、それらは基本的には自分自身の、社会人や、エンジニアとしてのブランディングとして役に立たない。エンジニアとしてある程度、名前が売れるようになってからは、意図的に抑制してきた。そういうのはコミュニケーション障害と受け取られたり、人材としてのリスクと思われる可能性が高いし、実際に一部の経営者から冗談交じりでそう宣言されたことはある。それらを踏まえ、自分自身のキャリア形成にとっては害となる可能性があるというのは認識している。

ただ、それらを完全に排除した自分は、自己規定から外れてしまう、というアイデンティティクライシスに直面し、その葛藤から、この自己言及的なテキストが生まれている。

テキストを雑に/シリアスに書くこと

最近、というかここ数年は、テキストをだいぶ雑方向に振ってて、hitode909文法を借りたりして、とにかくその生成コストを下げようとしていた。とにかく、数と機会こそが大事だ、と。

そのほうが確かにコミュニケーションは楽だし、こんなテキストを書き溜めるより、何かと円滑に行く。それが望まれてる。それが社会性だとわかっている。しかしそれは、なにか大事なものを失っているのではないか、という感覚も常にある。

で、もはや昔のようなテキストを書けないのではないか?という不満からこれを書き始めて、意外と昔どおりだったので、人間はそう簡単に変わらないのだな、と感じた次第ではあって、読みづらいのも、昔のままだろう。こっちのほうが素に近い、頭からスラスラと出てくる文章だ。

まあ、そういう内省的な文章を書く人間なので、こういうテキストを定期的に書いてガス抜きしていたりする。

一般的には、エンジニアとは、理詰めでモノを考える人間、という偏見があって(たしかにその傾向はあると思うのだけど)、こういう系統のテキストを書ける、というのは、自分の長所であると認識していて、それを活用してきた。そしてある程度成功した。成功したがゆえに、ここ最近はやることがなくなってしまったのだけどね。

30歳に向けて

28歳になり、若者とは呼ばれにくくなり、少なくとも「インターネットの若年層」ではなくなった今、インターネットで生きやすい自分の人格を再定義する必要に迫られており、若さだけで無責任に暴走するといったアプローチは取れなくなってきた。

とはいえ、大人になったら昔より許せるものが増えると思っていたが、そんなことはなく、怒りは怒りのままで、ただ自分の怒りは特殊なものではなく、よくあるものだよなーよしよしと笑って流すのがうまくなっただけと思う。

正直に言えば、大学生の頃は、自分がまともに社会人として働けるというイメージは全く無かったし、いまでも、自分は真っ当な社会人ではまったくないと思う。自分の能力を担保に、相手に妥協させてるという感覚はある。そして、それが有効なうちは、手持ちのコマとして使い続けるつもりではある。

自分がありのままを通したければ戦うしかないし、そこで戦うことを諦めるのも、1つの社会性の獲得なのだろう。あるいは、妥協しながらそれらを同時に行うことも。

妥協とか、撤退とか、駆け引きとか、信念とか、自分を通し続けるのも、難しいことなのだな。