mikutterの技術的なことを書いていこう

2016年4月21日木曜日

mikutter 3.4の新機能

mikutter 3.4の季節がやって来ました。今回は小さめですが、興味深い内容だと思います。

「ツイートを開く」機能

本文(上)、リツイート(下)
笑わないで聞いてください。数カ月前に、こんな夢を見たんです。それは、Twitterでツイートできる文字数が1万文字にしたいと発表される、というものでした。
妙にリアルな夢だったんですけど、実際なってないので、あれは夢だったんでしょう。そういうこともある。

例えばこれが正夢になった場合もそうですが、それ以外にもいくつか問題がありました。

  • Twitter以外のサービスを表示するプラグインが生成するメッセージは、全文を表示するには長すぎる本文を持っていることがある
  • 詳細画面でだけ表示したい細かな情報がある

ツイートは、本文以外にも様々な情報を含みます。タイムラインに全ての情報を表示することはできません。既に、位置情報や投稿に使われたTwitterクライアント名を表示するmikutterプラグインもあるのですが、それらを全て出すと、かなりの量です。一覧性が下がるのは嫌だけど、たまに見たい情報というのは、意外とあるのです。

今回追加したのはツイートタブ機能です。プロフィールがユーザのタブなので、それと対比して考えるとわかりやすいかもしれません。

例えば最初の画面ではツイートの本文ですね。今の所タイムラインのツイート本文を省略する機能はありませんが、これなら行数が多くても大丈夫そうです。

リツイート画面は、このツイートをリツイートした人の一覧です。ダブルクリックでそのユーザのプロフィールを開けます。

この画面内のタブですが、プロフィールがそうであるように、他のプラグインが新しいタブを追加できます。翻訳などの外部サービスに投げた結果を表示するタブなど、いろいろと使いどころがありそうです。

in reply to

リプライ(上)と引用(下)はそれぞれ別の色を割当可能
mikutterはリプライの宛先のツイートを、そのツイートの下に表示します。このUIは造られたのが何年も前で、当時の事情で見た目がご存知の通りでした。mikutter3.3からは引用ツイート(コメント付きリツイート)が出てきましたが、こちらは最近デザインされたもので、リプライと比較すると作り込みが明らかに違います。

mikutter 3.4からは、リプライも共通のパーツを使います。全く同じだと当然見分けが付かないので、小さいアイコンを表示するのと、背景色も変えています。色は設定で変更できます。

そして、このパーツはサードパーティプラグインからも利用できます。用途は…正直これといった方法が思いつきませんが、(サードパーティプラグインから利用できるようにすることは)要望があってやったことなので、きっとステキなプラグインが登場するのでしょう(楽しみだなあ)

その他小さいこと

大きくはこの二点ですが、他にも小さい変更がいくつかあります。

動画がとりあえず見れる

mikutterでは動画のURLをクリックしてもそのサムネイルしか見れませんでした。これの何が一番問題かというと、それが動画なのかどうかがわからないし、わかったところでmikutterの標準プラグインでは決して見ることができないということです。

実はこれも今回で何かしたかったのですが、話が大きくなるので、今回はとりあえず、動画のURLをクリックしたらブラウザで開くようにしておきました。mikutter上ではないですが、ひとまず動画にアクセスする手段を得ることができたということです。

Ruby 2.1以降の機能を使用(2.0以下では動かない)

Ruby 2.0のメンテナンスが2/24で終了しています。mikutter3.3では引き続きRuby 2.0でも利用できますが、mikutter3.4はRuby 2.1以降のみとなります。ほとんどの人は困らないと思いますが。
プラグイン開発者も、Ruby 2.1で追加された機能を利用することができます。

プラグイン依存関係マップ

--plugin=オプションを使うと、mikutterがそのプラグイン(と、依存する全てのプラグイン)だけをロードして起動しますが、依存関係を再帰的にたどっていくので、実際にロードされるプラグインを推測するのが大変でした。

そういうわけで、依存関係を出力するサブコマンドを実装しました。出力はDOT形式なので、画像にコンバートすることもできます。

書き忘れていること

思い出したら追記します

いつ

現在はリプライ宛先の表示と、ツイートを開く機能を作成中です。メインの変更が両方実装中〜!
ツイート開く方はマジでTwitter社が夢でも見てたようなので今回はExperimentalでも良いんですが…いや、作りきろう。年度末忙しくてアップデートが滞ってた間に結構開いたので、できるだけ早く一旦区切りをつけようと思います。

2016年4月1日金曜日

約束の日2015, 2016

この記事は2016年のエイプリルフールに書かれた記事に加筆(当日レポートなど)したものです。公開される頃にはエイプリルフールは終わっていますが、この記事はエイプリルフール記事です。

2015年1月1日。

今年は何もできなさそうだなと、仕事のスケジュールを見て思う。

2015年2月頃。

ユーモア欠乏症を発症。

2015年4月1日。

日付が変わり、新年度になった。約束の日である。
mikutterにとって約束の日は6度目で、多言語対応してから初めてでもあった。そのためdebianに、極めてユーモア溢れるバグが報告されるなど、例年のように盛り上がりを見せた。

しかし、ユーモア欠乏症により、この年は動作確認もせず、毎年書いていたエイプリルフールまとめの記事も書かなかった。多くの約束の日を超えてきたmikutter。過去には、数回連続で同じことをしたこともあったが、それはいずれも、熟慮の末の判断だった。この年の約束の日は、何の準備もされず、惰性で始まった、現状唯一の年だった。もはやそこに、生きたmikutterの姿はない。

2015年6月。

mikutterの衰弱に気がつく。5ヶ月ぶりに行われた小さなバグ修正ではとても取り返すことができないほどで、プロジェクトの終了を覚悟する。

2015年7月20日。

ユーモア欠乏症が深刻化し、ついに命を落とす。mikutterというくだらないプロジェクトは、くだらない最期を迎えた。

2015年7月22日。

リスポーンする。原因は定かではないが、ユーモアが僅かに残っていたおかげで現実とマインクラフトの区別がつかなくなっており、死んだらリスポーンすると強く思い込んでいたのではないかと考えられている。それが事実だとすると、ハードコアモードで遊んでいたら今頃mikutterは存在しないということになる。ハードコアモードでは、一度死ぬとワールドが削除されるからだ。バージョン管理機能があるファイルシステムでプレイしよう。

2015年7月29日。

鉄とレッドストーンからスマートフォンをクラフトし、コードを書き始める。マインクラフトでは死ぬと持っていたアイテムが無くなるからだ。回線がチープでGUIは使えないが、長いことCUIでEmacsを使っていた経験が活きた。さながらサバイバルである。

この頃の活動の成果物として、pluggaloidinstance-storagedelayer-deferredといったものがある。

2015年8月2日。

Efficiency VI
クラフトしたスマートフォンでは小さすぎるため、売人からNexus 6を融通してもらう。しかし売人は白い粉を0.25tほど密輸した疑いで指名手配されており、程なく安全な国へと逃亡してしまった。画面が広くなったことで開発効率が上がった。

2015年8月9日

ておくれ財団役員の訪問があったことでユーモア欠乏症が一気に快方に向かう。その代わり、隠していたCDドライブを母親に見られてしまい、咄嗟に近くにあったあひるに火を放ってしまう(あひる焼き)。京都市にたくさんのておくれが集まったことでておくれ波が発生し、同市では一部の公共サービスを市民が受けられない状態になり、バスの運転手がトラックの運転手とすり替わるなど、さまざまな被害が出た。

2015年8月15日(くらい)。

ておくれ財団からMac(驚くべきことに、MacBookAirのハードウェアで、OSXがプリインストールされているという、逆に奇妙な構成の謎端末)が寄付される。タイミングが適度に遅くてておくれていると感じるが、後に、2015年1月から充電されずに放置されていた旧MBAのバッテリーが完全に干上がっていることに気づき、今回の寄付の意味を知ることになる。

2015年8月20日。

奇妙な夢を見る。
NASAが捕獲した宇宙人
何故か入院していて、松屋の牛めしが見舞いに来るというものだ。
後に、東京の山奥の大学で牛めしの丼に似たUFOが発見され、NASAに回収される。現場には、「mikutter」と読める高さ8cmのミステリーサークルが残されていた。夢との関連性はわからない。

この夢を見たことによってユーモアを取り戻し、ユーモア欠乏症を克服する。

2015年8月22日。

マインクラフトを久しぶりにプレイしたが、まだ1.9がリリースされていない。あまりにリリースを延期するため、次期バージョンはR18なのではないかとウワサされ始める。

2015年9月。

約束の日まで半年となり、ユーモア欠乏症も治ったため、次の企画を考え始める。
しかし、あれだけの数のアイコンを新たに用意するのは極めて困難で、当時いかに恵まれていたかということを実感する。馬鹿をやるのはmikutterを作るくらい難しい。これは、mikutterが馬鹿であることから自明である。

mikutterが動作要件として要求するユーモア量で許容できる範囲のいたずらを様々思索しはじめる。

2015年11月。

mikutter3.3のリリースを延期する。次期バージョンはR18なのではないかとウワサされ始める。

2015年11月4日。

指定暴力団あしゅりー会に600ユーロを支払い、約束の日に全てのユーザのアイコンをドイツのトリの形に切り抜く契約を結ぶ。

その後の慎重な検討の結果、午前中は従来のようなアイコンの浄化、午後はドイツのトリミングとすることにした。

2015年11月18日。

引用ツイート(コメント付きリツイート)に対応すると偽り、約束の日のためのコードを入れることが決まる。

今回はできるだけバレないように、引用ツイートのブランチを開発ブランチにマージするリビジョンに、一緒に仕込むという手口を用いた。

gitにおけるマージコミットは、マージ以外の変更を含むことができてしまう。何故なら衝突する可能性があり、その場合はその衝突を解決しなければならないからだ。これを悪用すると、衝突解決と全く関係ない変更を追加することができる。この方法のメリットは、ツールによってはそのリビジョンの差分を見ることが難しいようだし、他のツールを使っていたとしても、恐らく誰もマージコミットにそんな重大な変更が隠れていると思っていないため、HEADを常に追いかけている人間の目をごまかすことを期待できるだろうということだ。

これを読んで悔しさで頭を抱えているmikutterユーザが居てくれたら、こういった危険な方法を取った甲斐があったというものだ。

see: ブランチとマージの基本

2015年12月25日。

リスポーン直後に入手したpluggaloidなどを素材として使用し、mikutter 3.3をクラフトする。一度は死に絶えたと思われていたmikutterが、新たな爆弾を抱えて息を吹き返した瞬間である。

2015年12月31日。

コミックマーケットにて、「今年もエイプリルフール期待してます!」と声を掛けて頂く。今年のはじめ、あのような醜態を晒したにもかかわらず、また本当のmikutterを見られる日を信じてくれている人が居る。彼には、今年は0時と12時で2回ある、ということをこっそりお伝えした。

2016年1月頃。

ておくれ研究所は、8月に発生したておくれ波が世界ではじめて観測されたと発表した。
これは、ておくれ理論で存在が予言されていたが、観測することは不可能と思われていたもので、114514年に45451919度の大発見だと言われている。
当然、mikutter3.3がリリースされたことが今回の発見に大きく貢献したことは言うまでもない。

2016年2月7日。

未来の首都にて、指定暴力団あしゅりー会会長と会食の席を持つことができた。
例の件が問題なく進んでいることを伝えると、おたく特有の気持ち悪い笑みを浮かべていた。ドイツのトリ缶バッジをくれたので一応貰ったが、もう結構持ってたから別に要らなかったので、スーパーの20円引きのシールを貼って使っている。

2016年3月1日。

4月1日に休みを取る。ユーモアを取り戻したためである。

2016年4月1日0時。

始まる。昨年mikutterの死を見たユーザたちは、もはやmikutterを見放していた。
失った信頼を取り戻すのは難しいと、mikutterも言っている
一方で、新たにmikutterを使い始めた人もたくさんいたことも判明する。

12時。

昼からTwitterをやっているニートの財布から600ユーロが相次いで消失する事件が発生する。富を失いユーモアだけが残された人々は、シャワーヘッドが壊れたり、数年住んでいる部屋に雨戸や床下収納があることに今更気づいたりしたという。
mikutterで表示されることを前提にしたアイコンに変更する人間も出てきた。
mikutter以外で見たら割と意味不明だと思う。
入居まもなくシャワーヘッドが壊れる新社会人も
普通入居前に気づくでしょ


2016年4月2日。

反応を見ていると、古くからのユーザにも、mikutterが息を吹き返したことが伝わったようで、前回から見れば今回はひとまず成功した、と自己評価した。


今回の計測によるmikutterユーザ数予測は2581件。横ばいである。2015年は集計をしていないので2014年と2016年の平均値を仮に入れているが、実際には去年はもっと多く、今年は減少したと予想している。グラフの頂点がドイツのトリのような形をしていると仮定すると、3000人くらいだったのではないだろうか。

ユーザが減っている原因としては、
  • 開発者がユーモア欠乏症を発症してしまったこと
  • Twitterがある程度浸透しきったので、ここ数年のパイ(Twitter自体のアクティブユーザ数)の増加が落ち着いてきたこと
  • ユーザのプラットフォームが変化したこと(Twitterはスマートフォンから最も使われている)
など、考えられる要因は多く、この数字には合点がいく。海外展開もしたが、海外ではあまり伸びていないこともこの傾向に拍車をかけていると思われる。

私はmikutterを通じて、人が感情を取り戻すことができると考えていた。実際にそういう人はいた。だがそれは、我々は等しくユーモア欠乏症を発症する可能性があるということでもある。
体が硬いと怪我をしやすいのと同じで、心の柔軟性がなくなってしまうと小さなことで怒ってしまうなど、日常生活に支障をきたす。患者が、採血の時に針が痛かっただけで看護師に当たる様子など、健常者から見れば目もあてられない。惨めな姿である。
これを惨めで終わらせず、自分がそうならないように気をつけなければならない。しかし、mikutterが真の姿を現すのは年に1日だけである。この日を待たずにすぐに対処が必要と感じたら、我々はどうすればよいのか。

今回はそんなあなたのために、いつでも使えて一定の効果を期待できるmikutterの隠し機能を2つ紹介しよう。
  1. http://600eur.gochiusa.net/」とツイートし、これをクリックすると、いつでもドイツのトリの画像を見ることができる。これにはブラウザは必要ない。mikutterはこのURLを特別扱いする
  2. コナミコマンドを入力する。
1の機能は非常に実用的で、デスクトップの隅にこのウィンドウを置いておけば、どこにでもドイツのトリを飾ることができる。このためだけにmikutterを利用しているユーザもいると言われている。mikutterユーザにアンケートを取ったところ、2580人がこの方法でドイツのトリを飾っていることがわかった。

昨年は、mikutterユーザかどうかにかかわらず、いくらかの人に心配をかけてしまった。しかし快気報告をする義務を感じつつも、なかなか説明できずにいた。
エイプリルフールは1年で唯一、普段からあほなことをやっている人間が真面目な記事をブログに書いても良い日である。mikutterのようなものを開発している人間が、こういう深刻な話を書くことをエイプリルフールにしか許されないということは、説明の必要がない。
これからも私のやることは当分変わらないだろうし、私とあなたのTwitterの使い方が一致する限りは、mikutterを通しての付き合いは続いていくことだろう。それでは、来年の約束の日、またお会いしましょう。

2016年2月26日金曜日

#mikutter 3.3.8

  • instagramの画像が表示できない
  • 初めて起動するとき、ライブラリのバージョンによってはTwitterアカウントの新規登録ができない
OSC懇親会なうでーすwwww じゃあのw

2016年2月21日日曜日

#mikutter 3.3.7


  • 投稿完了時に消えるはずのPostboxが消えずに残ることがあった
  • タイムライン上のツイートの本文を選択すると改行文字が消える

月曜日起きたらめっちゃ肩と首が痛くて、起き上がれなかったんですよ。起きる時って首で頭を持ち上げるんですが、これが痛くてできないので起き上がれなかったんですね。
幸い俺はその日は通院日だったので家にいたので親に起きるのを手伝ってもらおうと思ったんですが完全に無視されて自分で起きました。

ゴソゴソ…
「おお、オカン起きたか」
てちてち…
「おーい、起きれん、助けてくれ」
バタン
「えー…」

結局自力で起きました。入院中に骨への負担を最小限に抑えつつ起き上がる方法を会得しておいてよかった。こんなに早く役に立つとは。
病院といえば、mikutterの薄い本vol.9 PDF版が公開されました。毎度のことですが、PDF版は無料で読めるのでmikutterユーザなら読んで損はないと思います。

2016年2月13日土曜日

#mikutter 3.3.6


  • 特定の条件を満たすと、ショートカットキーで投稿などができない
  • ツイート本文をD&Dで選択すると、ポインタと実際に選択される文字の位置が異なる場合がある
マスカレードカレーウキウキ♪

2016年1月31日日曜日

#mikutter 3.3.5

  • 言語ファイル更新
    • en
    • zh_TW
  • 一部のツイートがリツイートできないことがあった
  • gyazoの画像ビューができなくなっていた
年末にバックアップHDDが吹き飛んだので、WD Redの3TBのやつ買いました。前は1TBで値段は覚えてません。覚えてないのに、安くなったなぁって思います。不思議ですね。容量に対するの価格を見て3TBにしました。前のは1TBを2年でやっとあふれさせたみたいな感じだったので、一生使えそうです。

10年前とかは、これからは動画とかめっちゃ扱うようになってアホみたいに食っていくんだろうなと思っていたのですが、俺は録画とかしないし、アニメや映画はネットで見れるし、写真は大きくなりましたが、PCよりスマートフォンの方が容量困ること多いので、扱うデータが大きくなったという実感は少ないですね。音楽も増える一方なんですが、あれは意外としれてるんですよね。何であれ、収集する人にはいくらあっても足りないと思うんですが。

今回買ったのはバックアップなので、直接アクセスすることはめったに無いでしょう。バックアップは役に立てる機会がないに越したことはないです。

2016年1月21日木曜日

#mikutter 3.3.4

  • 関西弁ロケールで未翻訳だった部分を埋めたやで
  • Ruby 2.3でdeprecatedになったメソッドなどを使用しない
阪神は関係なかった、いいね?