もぐてっく

人は1つ歳を取る度、1ビットづつ大きくなれると信じてた。

Ubuntuユーザに送る!国産 Twitter クライアント「mikutter」の楽しみ方( 14.04版)

去年の年末に書いたmikutter Advent Calendar 15日目 Ubuntuユーザに送る、国産twitterクライアント「mikutter」の楽しみ方 - もぐてっくが時の流れで色々上手くいかなくなっているので14.04向けに加筆修正してみました。

Ubuntu14.04にmikutterをインストールしてみよう

mikutterはUbuntu13.10からUbuntuソフトウェアセンター経由でインストールが出来る様になりました。

さっそくソフトウェアセンターの検索窓に「mikutter」と入力し、インストールを始めましょう。

f:id:moguno:20131215003958p:plain

検索に引っかからない場合は、まずソフトウェアアップデートを行うと良い様です。


では、画面左側のランチャーからmikutterを起動して見ましょう。

mikutterが起動すると、流暢な日本語でTwitterのサイトから暗証番号(PINコード)を取得する様に促されます。

f:id:moguno:20131215004044p:plain

「あれ、mikutterってもしかしてアレ系のソフトなん・・・?」などと一抹の不安を抱きつつ、URLをクリックしてユーザ名とパスワードを入力し、PINコードを入手しましょう。

インスタントメッセンジャーを思わせるウインドウが表示されればセットアップは完了です。

f:id:moguno:20131215004208p:plain

起動直後は検索タブがアクティブなので何も表示されませんが、「t」アイコンのタブをクリックする事でタイムラインが表示されます。

プラグインを導入してみよう

mikutterの特徴はまぁ色々とあるのですが、その最たる物は強力なプラグイン機構だと思います。

mikutterのプラグインは非常に簡単に作成出来るため、有志の皆様が日々モリモリとプラグインを量産しています。

その結果、12/15の時点で公式Wikiに登録されているだけでも78種類。
その全てが日本語完備と言うちょっと凄い状況になっています。

  • 公式Wiki(7/30現在落ちてます。)

Plugin - mikutter Wiki

Mikuregator


プラグインTwitterを使いやすくするものからTwitter以外のWebサービスに対応するものまで実に多彩です。
プラグインを使いこなすことで、まさに自分だけのmikutterを手に入れることが出来ちゃいます。

それでは、プラグインの一般的な配布形態であるGitHubからのインストール手順を解説して行きます。


(1)ちょっとその前に俺の話を聞いてくれ。

実は、mikutterには「みくったーちゃん」と言うマスコットキャラクターが住んでいます。

f:id:moguno:20140730111031p:plain
(mikutter 3.0.3 icon.pngより)

はふぅん。可愛いですね。

彼女はmikutterのナビゲーター的存在で、実績やアクティビティなどのイベントを可愛く通知してくれます。

そんな僕らの心の清涼飲料水であるみくったーちゃんなのですが、残念ながらUbuntu版には彼女は出てきません。

(パッケージ登録時のMLを拝見すると、どうも初音○クと混同されてライセンス的な所がグレーと判断された様です。)

じゃあ、Ubuntu版ではどうなっているかと言うと、ピンク色の丸い人工知能がその役目を担っています。

f:id:moguno:20140730111336p:plain

これはこれでまっとうなTwitterクライアントっぽくてアリなんですが、やっぱりみくったーちゃんと一緒にいたい!

と言う訳で、今回は「みくったーちゃんに帰って来てもらうプラグイン」を導入することにします。

(2)GitHubのサイトを開く

それでは、拙作プラグイン「mikutter-okeri」を導入してみます。
まずは、GitHubのページに飛んでください。

moguno/mikutter-okaeri · GitHub

(3)GitHubで[Download ZIP](Zipでくれ)ボタンを押して、プラグインをダウンロードします。

f:id:moguno:20131215004915p:plain

(4)Zipファイルの展開

(a)ダウンロードしたZipファイルをアーカイブマネージャで開き、展開ボタンを押します。

f:id:moguno:20140730111429p:plain

(b)Ctrl + Hを押して隠しファイルを表示させ、.mikutterフォルダに移動します。

f:id:moguno:20131215005141p:plain

(c).mikutterフォルダにpluginフォルダを新規作成します。

f:id:moguno:20131215005352p:plain

(d).mikutter/pluginフォルダにZipを展開します。

これで~/.mikutter/pluginフォルダの下にmikutter-okaeri-masterフォルダが出来たはずです。

(5)展開したmikutter-okaeri-masterフォルダのフォルダ名から-masterを削除します。

f:id:moguno:20140730111519p:plain

プラグインの.rbファイルとフォルダ名を合わせないとプラグインとして認識してくれないので、ここ何気に重要です。


以上でプラグインの導入は完了です。
mikutterを再起動すると、みくったーちゃんとの感動の再会が果たせますv

f:id:moguno:20140730111648p:plain

もしもプラグインが気に入らなければ、フォルダを削除してmikutterを再起動すればOKです。

「バグ技(察し)」でもっと便利に

実はmikutterにはプラグインフォルダに特定の名前のファイルを置くと、何故だか昔のUIに戻ってしまう」と言う問題があります。

作者もこの問題は認識しており、Twitterのデザインガイドラインを逸脱する恐れがあるとして、ユーザに注意喚起を行っています。

しかしながらこの問題はフレームワークの基本設計に関わるため修正が困難で、現在に於いても解決策は見つかっていません。

そんな状況を良い事に、Twitterデザインガイドラインが気に入らない一部のユーザは、このバグ技を利用して直感的な旧UIを使っていると言う状況です(察し)。


ここでは、mikutter初心者の皆さんが誤ってこの問題を再現させないために、具体的な再現条件を書いておきます(察し)。

(1)~/.mikutter/pluginフォルダを開く。

f:id:moguno:20140730180558p:plain

(2)空のドキュメントを作成する。

f:id:moguno:20131215011507p:plain

(3)ドキュメントのファイル名をdisplay_requirements.rbに変更する。

f:id:moguno:20140730180616p:plain

これで再現手順は完了です。

mikutterを再起動すると、懐かしのUIが出現してしまいます。怖いですね(察し)。
下部の青い鳥がいなくなっていたり、時刻表示が絶対時刻になったりしていますね。

f:id:moguno:20140730180647p:plain

なんか実績「display_requirements」が解除されていますが、きっとバグでしょう(察し)。

mikutterを使う際には、誤って上記の手順を踏まない様に十分注意しましょう(察し)。

タブのアイコンサイズ変更&タブ名表示mikutterプラグインを作った

これなん?

mikutterのタブのアイコンサイズ変更とか、タブ名を併記させたりとか。

f:id:moguno:20140729130621p:plain


次の2つのプラグインで実現しています。

  • mikutter-tab-hardpoint

タブプラグインのための前提プラグイン
サンプルとしてタブのアイコンサイズを変更する機能が付いてます。

  • mikutter-tab-label

タブにタブ名を併記させます。要mikutter-tab-hardpoint。

インストール

GitHubからダウンロードしてプラグインディレクトリに格納して下さい。

moguno/mikutter-tab-hardpoint · GitHub
moguno/mikutter-tab-label · GitHub


設定

mikutter-tab-hardpoint

f:id:moguno:20140729130722p:plain

  • タブのアイコンサイズ

タブのアイコンサイズを変更出来ます。
mikutterデフォルトのサイズは24です。

mikutter-tab-label

f:id:moguno:20140729131011p:plain

  • 保存された検索
  • プロフィール
  • リスト

タグ名を表示するタブの種別を選びます。
デフォルトは「保存された検索」のみチェックしています。

mikutter-tab-hardpoint API

filter_tab_update_widget { |i_tab, widgets| }

  • i_tab: GUI::Tab

タブ

  • widgets: Hash

タブに追加するGTKウィジェットインスタンスを格納します。
ハッシュの構造は下記のYAMLの通りです。

left:
  []
center:
  []
right:
  []

ウィジェットは:left、:center、:rightの順にタブに追加されます。
また、ウィジェットは配列の若い順にタブに追加されます。

たった180円で独自ドメインの超高機能ダイナミックDNSが構築出来ちゃった話

あらすじ

ある日、外から自鯖に接続出来なくなった。
調べてみると愛用のDDNSサービスの規約が変わって有料化。名前を解決してくれなくなっていた。

今まで大分お世話になってたので課金しようかなとも思ったけれど、DDNSだけで¥500/月はちょっと・・・。

仕方ない。他のDDNSにするかと色々探していると、

有り難いご提案が。早速サイト拝見。

GehirnDNS | ゲヒルンサービスサイト

おおー!DDNSと言うよりは、フルスペックのDNSサーバをAPIを使って操作出来るようなサービスって感じ。すごい。
しかも2ドメインまで無料でホストしてくれると。ここに決めた!

Gehirn自体にはドメイン取得サービスは無いようなので、ドメインは最近広告がバンバン出てるお名前.comさんを使う事にしました。

お名前.comで取得したドメインをGehirnDNSで運用するまで

お名前.comもGehirnDNSも本格的なDNSのサービスなので、作業手順はDDNSと比べてかなり複雑です。
お名前.comとGehirnDNSのサイトを行き来しながら設定する事になるので、手順ごとにサイト名を記載しました。

[お名前.com]ドメインを取得する。

まずはお好きなドメインを取得します。
クレジットカード払い&審査不要のドメインなら契約と同時に使用可能になります。

今回はセール中だった.xyzドメイン(初年度:¥180/年)を契約しました。
今回掛かる費用は、このドメインの代金のみになります。


契約時に自動契約更新オプションが有効になっていましたが、今回は宗教上の理由でオフしました。

[Gehirn]ドメインを認証する。

ドメインが取れたら、Gehirnのコントロールパネルから「管理ドメイン一覧」を開きましょう。
ドメインを追加する」ボタンを押して、さっき取得したドメイン名を入力します。

f:id:moguno:20140719165745p:plain

そうすると、ドメインに認証のための認証コードを含んだネームサーバを設定せよと言われます。
なるほど、ドメインの設定を変える権限が無いと登録出来ないんですね。

f:id:moguno:20140719165910p:plain
(認証コード部分は適当に入力したドメインの物です。悪しからず。)

この画面を維持しつつ、別タブでお名前.comに移動します。

[お名前.com]ネームサーバを設定する

お名前.comに戻ってきたら、ドメインNaviの「ネームサーバーの設定」を開きます。
「他のネームサーバーを利用」を表示するとネームサーバの設定画面が出るので、Gehirnの指示通り設定します。

f:id:moguno:20140719170429p:plain

[Gehirn]認証を完了する。

しばらく待って(今回は30分ほど)、さっきの画面の「確認コードを認証する」ボタンを押すと登録が完了します。

f:id:moguno:20140719170615p:plain

[Gehirn]Aレコードを登録する。

引き続き、コントロールパネルの「管理ドメイン一覧」にてさっき登録したドメインの「設定」ボタンを押します。

設定画面の中程にAレコード(ホスト名に対応するIPv4アドレス)の欄が有るので、自鯖のアドレスを設定します。

f:id:moguno:20140719171052p:plain

IPアドレスが変わった時に迅速に変更される様に、TTL(周りのネームサーバが自分のIPアドレスを忘れてくれる時間)は600秒(10分)にしました。

この時点でnslookupなどで名前が解決出来る事を確認しましょう。

[Gehirn]APIキーを取得する。

後述の更新スクリプトで使用するAPIキーを取得します。
コントロールパネルの「APIキー管理」画面にある「APIキーを追加」ボタンを押して、TokenとSecretを得ます。


これにて設定完了です。

GehirnDNS API

前述の通りGehirnDNSにはリモートでDNSをメンテナンス出来るAPIが搭載されています。
このAPI、なかなかシンプルかつ強力です。

DNS APIリファレンス | ゲヒルンサポートセンター

認証はシンプルなBasic認証。OAuthの様な複雑な手続きは不要です。
高機能な言語とライブラリが無くても容易にバッチ処理が可能です。
(セキュリティはhttpsで確保。)

APIで触れる範囲は「コントロールパネルで出来る事全て」でよいと思います。
コーリングシーケンスもRESTの法則に忠実で書きやすいですね。

IPアドレス更新スクリプト

と、言う訳で自鯖IPアドレスを定期的に通知するスクリプト(Ruby製)を作りました。

moguno/gehirnddns · GitHub

スクリプトを実行する度に、さっき登録したAレコードを自鯖のグローバルアドレスに書き換えます。

./gehirnddns "ドメイン名" "取得したToken" "取得したSecret"

細かいパラメータ変更や他のレコードの更新はスクリプトを直接いじればある程度対応可能です。

mikutterプラグインのTIPSをコツコツ纏めて行きたい。

TIPS

メッセージをageる

msg.is_a?(Message)
  msg[:modified] = Time.now
  Plugin::call(:message_modified, msg)
end

Delayer実行時は、プラグインが全てロードされている事が保証されている。

Delayerは必ずメインスレッドで動作する。(GTKがidleの時に実行される。)

Reserverはメインスレッド以外で動作する。

イベント

on_appear(messages)

Messageオブジェクトを生成した時に発生。

on_update(service, messages)

TwitterからRESTまたはUserStreamでメッセージを受信した時に発生。

on_gui_timeline_add_message(i_timeline, messages)

messagesはMessageまたはMessagesのインスタンス
Array(messages).eachで統一的に扱えるぞ。

on_message_modified(messages)

Messageの内容が更新された時に発生。
(ふぁぼられ、リツイートなど)

ポケットミクたんといちゃいちゃKit for Windows

Gakkenのポケットミク(NSX-39)の機能をお手軽に体験できるWindowsアプリです。
出先でポケミクのデモをするのにWindows8.1タブレットを使いたかったので作りました。

f:id:moguno:20140430124603j:plain

見た目

f:id:moguno:20140506124330p:plain

インストール

1. 下記サイトからzipファイルをダウンロードして下さい。

https://www.dropbox.com/s/si8pgc2w6ns2chl/NSX39Mog.zip

2. ダウンロードしたzipファイルを適当なフォルダに解凍します。

3. setup.exeを実行します。

あなたも超モテ!ポケミクたんといちゃいちゃテクニック!

アプリをきっかけに楽しくお話ししよう

さっそくアプリを起動してポケミクたんを接続してみましょう。
すると、画面下部のステータスが「ポケミクがいないよ」から「ポケミクにんしきちゅう!」に変わります。
Windows7だと少々時間がかかることがあります。)


この状態で画面の鍵盤の1段目に触れると、ポケミクたんが歌ってくれます。

鍵盤左側の「MOD」ボタンを押すとポケミクたんの声にビブラートが掛かります。
(マルチタッチ対応:押している間はON。マルチタッチ非対応:押すたびにON/OFF切り替え。)

ポケミクたんの隠れた魅力に触れてみよう

実はポケミクたんは楽器の演奏も得意です。
鍵盤部分の2段目に触れるとGM音源に準拠した128種類の楽器と1セットのドラムを演奏する事が出来ます。


マルチタッチ対応であれば鍵盤の同時押しが出来るので、頑張れば伴奏付きでポケミクたんに歌ってもらう事も出来ますね。

オリジナルソングを歌ってもらおう

画面中央のテキストボックスにひらがなで歌詞を入力してみましょう。
「セット」ボタンを押して鍵盤(画面、本体どちらでもOK)に触れると、ポケミクが歌詞の通りに歌ってくれます。

「セット」ボタンを押した時に赤くなった文字はポケミクが歌えない文字になります。
(歌えない文字を「ん」に変換して送信します。)

エフェクトでロマンチックな雰囲気を演出

画面上部の「リバーブ」、「コーラス」、「バリエーション」コンボボックスの項目を選択してみましょう。
すると、ポケミクの声に色々なエフェクトが掛かります。
(なんと230種類以上のエフェクトがあります!)

コンボボックス下のスライダーは各エフェクトの掛かり具合が調整出来ます。

ポケミクたんのいつもと違う一面を楽しみましょう。

ソースコード

このソフトウェアはオープンソースです。GitHubソースコードを公開しています。
機能追加などは各自で行った方が色々良いと思います。

https://github.com/moguno/nsx39Mog

mikutter Advent Calendar 2013 17日目 肉食系プラグイン作成術

はじめに

この記事はmikutter Advent Calendar 2013(http://www.adventar.org/calendars/120)17日目です。

まだまだカレンダーには空きがございます。チャンスです。
mikutterを使ってみての感想とか、短めのエントリも全然OKと思います。
ぜひともmikutterへの思いを繋いで行きましょう。


さてさて、皆さんご存知の通り、mikutterのプラグイン機構はとってもエレガント。
ほんの少しのコーディングで様々な機能をmikutterに追加することが出来ます。

例えば、クリスマスムード漂うあなたのTLを真っ赤に染める位なら、ほんの数行でちょちょいのちょいです。

# -*- coding: utf-8 -*-

Plugin.create :red_background do
  filter_message_background_color do |message, color|
    color = [65535, 0, 0]
    [message, color]
  end
end


でも「mikutterちゃんにこんなこともして欲しい(>_<)」がエスカレートしてくると、用意されたAPIでは実現できないことも出てきますよね。

そこで今回は「肉食系mikutterプラグイン作成術」と題して、少々強引な方法を使って、あなた好みのステキなmikutterをgetする方法を書いてみようと思います。

復習:1分で何となく分かるmikutterプラグイン

mikutterは処理の要所要所で「フィルタ」や「イベント」を通じて、プラグインと会話しようとします。
プラグインは興味のある「フィルタ」、「イベント」をハンドリングする事でmikutterの挙動を変更しする事が出来ます。

上記の真っ赤なTLの例ではfilter_message_background_colorと言うハンドラを定義して、つぶやきが描画される際に呼ばれる:message_backgroundと言うフィルタを捕捉しています。
そしてfilter_message_background_colorの中で色コードを設定することで、つぶやきの背景色を変更しています。

さて、本題

この様に強力なイベント機構によってダントツの拡張性を誇っているmikutterさんですが、残念ながらこのモデルは万能ではありません。


例えば、タブに表示されるアイコンのサイズを変更したいとします。

この場合、タブのアイコンが書き換わるタイミングに発行されるフィルタをハンドリングして、少し小さめのアイコンを返してやれば良いと言う発想になります。

しかしながら、mikutterには残念ながらそのフィルタは用意されていません。
フィルタが発行されない事にはプラグインは介入のしようがありません。困りました。


ここであきらめるのも悔しいので、抜け道が無いかソースコードを読んでみます。
タブのアイコンを表示する処理はgtkプラグインのtab_update_icon()と言うシンプルなメソッドで行われています。

def tab_update_icon(i_tab)
  type_strict i_tab => Plugin::GUI::TabLike
  tab = widgetof(i_tab)
  if tab
    tab.remove(tab.child) if tab.child
    if i_tab.icon.is_a?(String)
      tab.add(::Gtk::WebIcon.new(i_tab.icon, 24, 24).show) # ここの24が書き換えれれば・・・
    else
      tab.add(::Gtk::Label.new(i_tab.name).show) end end
  self end

直接gtk.rbを書き換えてしまえば話は早いのですが、これだけのためにgtkプラグインをフォークするのもアホらしいですし、ユーザにパッチ作業を要求するのも非常にアレです。

どうにかプラグインで実現出来ないか?

黒魔術ですべてを思いのままに


まどか「・・・私なら、何でも願いが叶うって言ったよね?」

QB「ああ、君ならどんな不可能も可能にできるだろう。さぁ、願いを言うんだ。まどか。」


すーっ・・・


まどか「すべてのメソッドを、生まれた後に書き換えたい!全てのインスタンス、クラスとモジュールのすべてを!この手で!!」


QB「そんな祈りが叶うとすれば、それはオーバーライドなんてものじゃない。オブジェクト指向そのものに対する叛逆だ・・・君は本当に神になるつもりなのかい!?」


なれちゃいます、神様。


思い出してください。
mikutterはRubyで作られています。

Rubyと言えば動的プログラミング。
別名「黒魔術」を使えば、任意のタイミングでクラスのメソッドを変える事すら、我々には不可能では無いのです。


早速、黒魔術でプラグインからtab_update_iconを上書きしてしまいましょう。

Plugin.create :tab_icon_size do
  Plugin[:gtk].instance_eval {
    # 独自のタブアイコンメソッドを上書き定義
    def tab_update_icon(i_tab)
      type_strict i_tab => Plugin::GUI::TabLike

      tab = widgetof(i_tab)
      if tab
        tab.remove(tab.child) if tab.child
        if i_tab.icon.is_a?(String)
          tab.add(::Gtk::WebIcon.new(i_tab.icon, 12, 12).show) # 半分の大きさになれっ!
        else
          tab.add(::Gtk::Label.new(i_tab.name).show) end end
      self
    end
  }
end

このコードが実行されて以降、tab_update_icon()が呼ばれると、上書きした方のメソッドが実行される様になります。
すげぇぜRuby


この手法は、巷では「モンキーパッチ」と呼ばれている様です。
元のソースコードを一切触らずパッチが充てられるので、アプリケーションのHotFixなどに有効活用されています。
オブジェクト指向が流行った時に言われてた「差分プログラミング」って奴ですね。

でも、モンキーパッチは便利な反面、どこぞのプラグインがこっそりメソッドの挙動を変更した場合、非常に分かりにくいバグを生む恐れもあります。

mikutterに於いては、複数のプラグインが同じメソッドをモンキーパッチした場合、先にロードされたプラグインが正常に動作しない事になります。
また、モンキーパッチによってmikutterのコアの動作を阻害する可能性もあります。

(後、mikutterの薄い本vol.4でとしぁさんがモンキーパッチをちらっとdisってたのもちょい気になります。)


複数のプラグインが共存できないと言う点で、もはやこれはプラグインではなく「MOD」とか呼んで区別した方がいいかもしれません。


しかしながら有益な技には違いないので、何とか副作用を抑えて活用して行きたいところですね。


例えば、何かしらモンキーパッチを検出する機構を作って競合を発見可能にすれば上記の事故は起こらないかもしれません。


・・・


さて、エントリがやたらと長くなってきたので、今回はこれ位で。
次回はこれまた黒魔術を使って、モンキーパッチ検出機構を構築して見ようと思います。

(そのうち続く)

mikutter Advent Calendar 15日目 Ubuntuユーザに送る、国産twitterクライアント「mikutter」の楽しみ方

この記事はmikutter Advent Calendar 2013(http://www.adventar.org/calendars/120)15日目でございます。

2013年はmikutterがUbuntuの公式リポジトリ(てかDebian sid)に登録され、早速日経Linuxに取り上げられるなど、mikutterメジャーデビューの年となりましたね。

来年は、Debian系を使う色んな人がておくれ・・・ゲフンゲフン。
mikutterを楽しんでもらえる状況になれば良いなと思います。

と言う訳で、今回は来年のmikutterあべのミクすに拍車を掛けるべく、Ubuntu13.10でのmikutterとの付き合い方を纏めてみようと思います。

(以下情報が古いです。14.04以降はこちらを確認して頂ければと思います。)
Ubuntuユーザに送る!国産 Twitter クライアント「mikutter」の楽しみ方( 14.04版) - もぐてっく

Ubuntu13.10にmikutterをインストールしてみよう

前述の通り、Ubuntu13.10ではUbuntuソフトウェアセンターからmikutterがインストールが出来る様になりました。

さっそく検索窓に「mikutter」と入力し、インストールを始めましょう。

f:id:moguno:20131215003958p:plain

検索に引っかからない場合は、まずソフトウェアアップデートを行うと良い様です。


では、Unityからmikutterを起動して見ましょう。
mikutterが起動すると、流暢な日本語でTwitterのサイトから暗証番号(PINコード)を取得する様に促されます。

f:id:moguno:20131215004044p:plain

「あれ、mikutterってもしかしてアレ系のソフトなん・・・?」などと一抹の不安を抱きつつ、URLをクリックしてユーザ名とパスワードを入力し、PINコードを入手しましょう。

インスタントメッセンジャーを思わせるウインドウが表示されればセットアップは完了です。

f:id:moguno:20131215004208p:plain

起動直後は検索タブがアクティブなので何も表示されませんが、「t」アイコンのタブをクリックする事でタイムラインが表示されます。

プラグインを導入してみよう

mikutterの大きな特徴として、強力なプラグイン機構が挙げられます。

mikutterのプラグインは非常に簡単に作成出来るため、腕に覚えのあるプログラマ達が日々モリモリとプラグインを量産しています。
12/15現在、公式Wikiに登録されているだけでも78種類のプラグインがあり、その全てが日本語完備と言うちょっと凄い状況になっています。

http://yuzuki.hachune.net/wiki/Plugin

プラグインを使いこなすことで、掛け値無しで自分だけのmikutterを手に入れることが出来ちゃうと言う訳です。

それでは、一般的な配布形態であるGitHubからプラグインを導入する手順を解説して行きます。

(1)GitHubのサイトを開く

例として、ここでは拙作プラグイン「mikutter-hide-titlebar」を導入してみます。
まずは、mikutter Wikiのリンクから、GitHubのページに飛んでください。

http://yuzuki.hachune.net/wiki/Plugin

f:id:moguno:20131215004802p:plain

(2)GitHubで[Download ZIP](Zipでくれ)ボタンを押して、プラグインをダウンロードします。

f:id:moguno:20131215004915p:plain

(3)ダウンロードしたZipファイルをアーカイブマネージャで開き、展開ボタンを押します。

f:id:moguno:20131215005029p:plain

(a)Ctrl + Hを押して隠しファイルを表示させ、.mikutterフォルダに移動します。

f:id:moguno:20131215005141p:plain

(b).mikutterフォルダにpluginフォルダを新規作成します。

f:id:moguno:20131215005352p:plain

(c).mikutter/pluginフォルダにZipを展開します。

これで~/.mikutter/pluginフォルダの下にmikutter-hide-titlebar-masterフォルダが出来たはずです。

(4)展開したmikutter-hide-titlebar-masterフォルダのフォルダ名から-masterを削除します。

f:id:moguno:20131215005545p:plain

プラグインの.rbファイルとフォルダ名を合わせないとプラグインとして認識してくれないので、ここ何気に重要です。


以上でプラグインの導入は完了です。
mikutterを再起動すると、タイトルバーが無くなってすっきりした外観になっているはずです。

f:id:moguno:20131215010323p:plain

ウインドウの操作はステータスバーに増えたボタンで行えるのでご安心を。

もしもプラグインが気に入らなければ、フォルダを削除してmikutterを再起動すればOKです。

「バグ技(察し)」でもっと便利に

実はmikutterには「プラグインフォルダに特定の名前のファイルを置くと、何故だか昔のUIに戻ってしまう」と言う問題があります。

作者もこの問題は認識しており、Twitterのデザインガイドラインを逸脱する恐れがあるとして、ユーザに注意喚起を行っています。

しかしながら、プラグイン機構の仕様の副作用として発生するこの問題は修正が困難で、現在に於いても解決策は見つかっていません。

そんな状況を良い事に、Twitterデザインガイドラインが気に入らない一部のユーザは、このバグ技を利用して直感的な旧UIを使っていると言う状況です(察し)。


ここでは、mikutter初心者の皆さんが誤ってこの問題を再現させないために、具体的な再現条件を書いておきます(察し)。

(1)~/.mikutter/pluginフォルダを開く。

f:id:moguno:20131215011410p:plain

(2)空のドキュメントを作成する。

f:id:moguno:20131215011507p:plain

(3)ドキュメントのファイル名をdisplay_requirements.rbに変更する。

f:id:moguno:20131215011902p:plain

これで再現手順は完了です。

mikutterを再起動すると、懐かしのUIが出現してしまいます (察し) 。
下部の青い鳥がいなくなっていたり、時刻表示が絶対時刻になったりしていますね。

f:id:moguno:20131215011914p:plain

なんか実績「display_requirements」が解除されていますが、きっとバグでしょう(察し)。

mikutterを使う際には、誤って上記の手順を踏まない様に十分注意しましょう(察し)。