2014年12月22日月曜日

Yukari for Android ver.1.0.0

結月ゆかりさん、お誕生日おめでとうございます。心よりお祝い申し上げます。
VOCALOID 4に対応した純・穏・凛の新しいライブラリ、それらを使った作品が見れるのが今からとても楽しみです。

さて、Yukari; prototype 0.35 の公開から1年が経過した今、2014年の成果物として Yukari for Android 1.0.0 をリリースします。

0.166.1alpha からの変更点

  • オートミュート機能
  • ツイフィール ビューア
  • 表示域拡張を使用中、画面左下の「▶」をタップするとナビゲーションバーを再表示する機能
  • UserStreamが切断された時のメッセージ表示を復活
  • サムネイル対応の追加
    • Gyazo
    • totori.dip.jp
  • オプションの追加
    • 実況モード
    • RTレスポンス通知
    • サムネイルモザイク加工
    • 日本語のツイートのみの検索と、RT除外検索
    • Limited TL (画面上のツイート保持数の制限と自動破棄)
  • 画像添付プレビューで画像を正しい向きで表示するよう修正
  • Pixiv R-18画像のサムネイル処理でクラッシュするバグを修正
  • pbs.twimg.com直リンクの画像でサイズsuffixが付いている場合に表示失敗するバグを修正
  • フォロー関係の取得でクラッシュするバグを修正
  • DMタブが開かれた状態でアプリを休止すると、復帰時にクラッシュするバグを修正


期末試験が重なったために、11月は月末の定期リリースを行うことができませんでした。そのため、11月に公開予定だった機能も今回のアップデートにまとめています。

このアップデートをもって、私が2013年中に構想を立てていた全ての機能の実装を完了しました。私だけが使うアプリだったら、妥協に妥協を重ねてそれすら到達することは無かったことでしょう。ユーザの方々の声は確実にモチベーションに影響していました。ありがとうございます。

これからしばらくは、機能追加を優先して1年間放置し続けていたバグについての調査を行うことと、ライブラリの更新によるMaterial Design対応を行っていきたいと思います。
どうか、これからもよろしくお願いします。

2014年10月21日火曜日

はじめてのおーえすしー - OSC2014 Tokyo/Fallに行った

10月19日、明星大学にて開催された「オープンソースカンファレンス 2014 Tokyo/Fall」の2日目に行ってきました!
私にとっては初めてのOSCで、しかも技術系のイベントに参加したのは初めてかもしれません。とても新鮮な体験でした。

当日の私の行動は、朝イチで群馬を発ちEjectセミナーに参加。
何とかして時間に間に合わせました。

あっきぃさんの喋りはとても面白い、私はこういうの聞くの大好きです。
EjectでQoLの向上を図るということ、今までどういう目的なのか知らなかったのでなるほど〜という感じでした。
どのようなことをしてきたのかを聞いているうちに、アイデア次第で面白いことが出来そうだなと感じました。この辺は私の好きなmikutterプラグインシステムと何となく近い……?

そういえばセミナー中、特定されてました。

そりゃこんなAP立ててりゃ当然だ。仕方ない仕方ない。

この後は、気になったブースを巡っていました。

openSUSEユーザ会。ぎーこかわいい!!

NetBSDユーザ会。シールの量がやばかったですね。らこらこシールを持って行きました。

Gentoo-JP。カーネルコンパイルをしているというツイートに釣られて行ったら本当にやっていました。


そんなことをしていたら、フォロワーであるたけのこ氏からのリプライが。

行ったら本当にデコにシール貼った学生が居た。かなりビビりました。
デコにシール貼って食事してるんですよ、冷静ではいられません。しかし、ここでビビっていてはOSCでは生きていられないと判断し、落ち着いて学食を確保することにしました。
ここでは、きつねうどん(¥250)をいただきました。安くて美味しい、いいですね!
また、たけのこ氏からはプレゼントをいただきました。後日いただきましたが、美味しかったですー。
昼食の後は、たけのこ氏や、彼と行動していたKNH氏と共に行動しました。
Gentoo-JPに再びお邪魔しカーネルコンパイルの様子を眺めたり、SoftLayerブースではろまのふ氏と挨拶を交わしました。

GMOブースではたけのこ氏が楽しいことになっていました。ConoHaクーポンおいしいです(^q^) 後で何か使い道を考えたいところ。


その後、ついにmikutterユーザ会へ突撃を仕掛けました。ライブカメラ、ほほう……という感じでした。
そこに僕がやらかした「mikutter on Android」を設置させていただきました。AndroidでGIMPが動くアプリがあるというわかめそば氏による発見の発展形からできたものです。


意味不明さ故か、なかなか人目を引いていたようで面白かったですし意義を感じました。
ただ、居座ったのは本当に申し訳ないなあと思います、あの調子だと見たい人が寄りにくいなあと。次からは自重します。

この展示は怪しいものも吸い寄せてしまったらしく、一時はmikutterユーザ会ブースの前がAndroid Twitterクライアント作者会になってしまっていました。
「ツイッターするやつ」のムメイ氏、「メガネケエス」のひさき氏とお会いしました。
ムメイ氏からはTwitter4jのSPDY-Supportについて教えていただいたので、今後のYukariで採用していこうと考えています。

この後、Gentoo-JPにてTシャツの配布があったため頂いてくるなどして、結局最後のLT&じゃんけん大会までOSCに参加していました。
その結果、電車を1本逃し帰宅が遅れるという事態になってしまいましたが、めったにあることではないのでこれくらいは良いでしょう。帰れないほどの事態ではありません。

とても楽しく有意義な1日でした。もっとも、手を出している分野が狭すぎて、幅を広げたらもっと楽しめるかなあ、なんて思ったりもしました。
また、スタンプラリーを完結させることに失敗しました。次こそこの手のキャンペーン頑張っていこうなという思いを残すこととなりました。
次の東京開催のOSCがあれば、また行ってみたいなと思います。


最後に。
としぁさん、OSC中にアップデート攻撃は最新LiveDVDを提供しようとするふぇのまー氏がかわいそうです。



2014年8月20日水曜日

夏休みはmikutter-plugin

夏コミ終わりましたね。参加された皆様はお疲れ様です。私は行ってないです。
mikutterの薄い本、買いました? ラボ畜本、買いました? えー、それらが欲しかったんですよ……。

さて今年は最後の夏休みということで、惰眠をむさぼったり、Yukariの開発をすすめたり、mikutter-pluginを書いて思う存分遊んでます。課題?知るかよ

数がまとまってきたので、本Blogではまだ紹介していないものをちょっとこの辺に書きなぐってみようかなと思った次第で。

gstreamer

mikutterのサウンドプラグインとしてGStreamerを利用できるようにするプラグイン。
動作の詳細については、今後Web上にも公開される予定である「mikutterの薄い本 vol.6」の記事を参照されたし。
適当に言うと、mikutterが直接GStreamerを触るとアプリケーションがハングアップしてしまうことがあるため、mikutterとGStreamerの間に仲介役のプロセスを立てて通信を行いGStreamerを利用するといったもの。
まぁ例えば、授業中にちょっと離れてる友達に伝言を直接投げつけるのは難しいので、相手先の途中に座っている子にメモを渡して、それを送ってもらう感じですかね。
余計分かりにくいね。
ともかく、これを使うことでGStreamerの力でサウンドが再生できるようになる。通知再生プラグインとしてだけでなく、他のプラグインからGStreamerで再生を行うためにも使えるようにしている。
ALSA Pluginではaplayの都合でwav程度しか鳴らせないものが、これによって幅が広がるので、まぁ発想次第でいろいろ遊べるんじゃないかなと思っています!

mediaplayer

mikutter_gstreamerの力を使い、mikutter上でサウンドファイルを再生するためのプラグイン。
実際にはmikutter-gstreamer単体で再生可能だが、ユーザが使うためのコマンドを実装していないために別途書いた。
これを使うことで、とりあえず作業用BGMを流すといったことがmikutter上で完結する。まあ、mikutterはいつも立ち上がっていますものね?
ちなみにmikutter作者の@toshi_aさんにはこのような使い方もリプライされていました。
ておくれか…。

play_mikutter_drumnbass

mikutter_gstreamerの力を使い、Soundcloud上にアップロードされている「みくったーちゃんがドラムンベースをうたってくれたよ」(by @polamjag)をストリーミング再生するプラグイン。
Soundcloud APIのテストとして作成した。
コマンドを実行するとSoundcloud APIを通してストリーミング再生用URLの問い合わせを行い、それをmikutter_gstreamerで再生する。
そう、mikutter_gstreamerではURLも受け付けるのです。これも、使い方あると思うんだよなあ……。

mikutter_recotw

黒歴史記録サービス RecoTw に選択中のツイートを送信するプラグイン。
特にこれについてコメントは浮かばないのだけれど、あまりに気軽にできてしまうのも考えものだなと少し感じた。
あまり関係のない人を巻き込むとこのサービスは即座に問題案件になりそうなので、私はサービス開発者のツイートを執拗に登録して遊んでいる。インガオホー!

patch_charcount

mikutterのPostBoxに対してモンキーパッチを行い、残り文字数カウントの動作をt.coを考慮したものに変更するプラグイン。
これに関しては少し引っかかる点があり、「どうなのかなあ、良いのかなあ」と心配になっている。
1つ、既にこの件についてはRedmine上にチケット 機能#377が作成されていること。かなり古い案件ではあるものの、おそらく認知されているということである。
もう1つ、mikutter開発日記のこのエントリにt.coに切り替えづらい理由という記述がある。見る限り私はmikutterビルトインの短縮機能とのバッティングが心配である。
ということで、最初はこの内容をパッチとして送信することも考えたが、一旦保留した。
私自身は、ビルトインの短縮機能は使っていないので引っかからないのだけれど……ねぇ。

2014年8月17日日曜日

GNOME 3.12でコンテキストメニューにアイコンを出す方法

GNOME 3.12、私の環境だけってことはおそらく無いと思うのですがコンテキストメニューにアイコンが出ませんね。
しかも、Tweak Toolでも該当の設定が見当たりません。これは困りました。

ということで、GNOME 3.12でもアイコンが出るようにしましょう。

まずdconf-editorを開き、org.gnome.settings-daemon.plugins.xsettings を探してください。そこにある overrides キーを
{}
から
{'Gtk/ButtonImages': <1>, 'Gtk/MenuImages': <1>}
と書き換えます。環境によっては既に括弧内に値が記述されている場合もありますので、その場合は 'Gtk/Button〜 の辺りをカンマ区切りで追記すれば大丈夫です。

これで、アプリケーションによっては即時あるいは再起動後に、コンテキストメニューにアイコンが表示されるようになります。
非表示にしたい場合は追記したぶんを削ってください。


本エントリでは、次のページを参考にしました。Fedora勢はデフォルトDEなだけあってGNOME Shellに触れている人が多いので情報が蓄積されてますね。
https://ask.fedoraproject.org/en/question/23116/how-to-fix-missing-icons-in-program-menus-and-context-menus/

しっかしGNOME Shell、設定が減ったぶんやりづらい節があるなあ…

2014年6月21日土曜日

Yukari; prototypeの進捗(ver0.11x)

Yukariについて書くのは、公開時以来です。

2013年12月22日にVer0.35を公開し、それから約半年が経過しました。
現在はバージョン番号も無駄に進み、Ver0.11xを開発しています。(バージョン番号は作業した日に1日1回だけインクリメントしています、つまり110日と数日は1行でも作業したということですね)

さてそれだけいじり続けてきたYukariですが、目標のクライアントとして完成させるためにここで当初の計画を振り返ってみたいと思います。

Yukariは「モバイルでもTwitterの機能をほとんどこなせる力と、ツイートが読めること、そしてマルチアカウントの統合タイムライン」を目標に開発が開始されました。
Twitterの機能をほとんど使えるクライアントであれば「twicca」が、文字化けせずに読めるクライアントは「ツイッターするやつ」が、マルチアカウントの統合タイムラインは「Twidere」があります。
しかし、それぞれをいいとこ取りした、私の求めていたクライアントは見つかりませんでした。PCでやることをそのままモバイルでやろうとするのはおかしいのかもしれませんが、とにかく私はパワフルなTwitter環境を求めていました。

そして、マルチアカウントと多機能を目指して開発してきました。
未だにできないことは何でしょう。

私のToDoに書いてあるだけで、こんなにあります。

  • リストの管理機能(リストへのユーザ追加・削除とリスト自体の作成・削除)
  • スクロールロック
  • 条件カラーマーカー
  • ツイート詳細画面のアカウント切り替え対応
  • 短時間ミュート
  • DMスレッド表示
  • 位置情報の付加と表示
  • ブックマーク(アカイトリ4の積ん読機能のような)
思ったより残ったことが多いです。しかも、作業の重いものが。
大きいことはなかなか腰が重くなるんですよね、そう言うくらいなら実装したいものです。動ける人間になりたいですね〜。

これらの機能が実装された時、バグの大小や機能性の良し悪しに関わらず、Ver1.00として、正式版リリースを行う予定です。
いつになるでしょうね。

応用情報受かりました

やりました。

午後問の選択がいい感じに効いたのではないでしょうか。
まー受かってよかったです。これを活かせる進路が決まっていませんが。

2014年6月15日日曜日

群馬県情報処理競技大会でたよ

ささっと書きましょう。
団体で優勝、個人では準優勝でしたっ。

ううむ、去年は個人優勝したから、悔しいですねえ。
ちなみに今年の個人優勝は後輩の@raven_38_君です。競プロ勢つよい。
まぁ、2部問題では同点なんです。1部問題の計算問題が明暗を分けたとのこと。。。


今回の問題の感想。
1部、とても普通だったと思う。見かけるような問題が少なくないといった印象で、過去問等で対策をしていればもうちょっと取れたのかなあ。
データベース問題はちょっと理解しきれてないです。時間が迫っていて大問2との兼ね合いで思考時間を削らざるを得なかった。

2部、いつも通り表計算が時間を喰う。表計算問題、見づらいんですよね。問題文からセルを確認してそこからトレースしたりしていくの面倒臭さあります、仕方ないんですけど。
確か、うるう年を求める問題があったと思います。あれ、問題の出し方によっては詰みも有り得ましたがそうでもなくて良かったです。処理条件読めば何とか行ける感じ。しかし読みにk
短い方のフロー問題は、基本的な二分探索などが盛り込まれていました。配列の開始番号を読み誤ることさえなければ解けるでしょう…と書きたかったんですけど、開始番号について理解してなくても当該解答は埋めることができます。中央値の求め方を選択肢から選ぶだけでしたから。
長い方のフロー問題は、もはやただの時間との戦いです。攻略に際してはやたら長い文章、大きいフロー、これらに圧倒されず、かつ、表計算問題で時間を食われすぎていないことが条件となるかと。
実際の回答は読めば埋められます。1つ1つはごく単純な変数の指定や、計算式だったと思います。解答の文字数も枠に対して少なく済むでしょう。

こういう感想、不確定な場所を記録にしないように問題を読み返しながら書きたいんですけど、問題冊子は回収となっています。悲しい。

2014年5月7日水曜日

GentooInstallBattleをしたよ

うっわBlogの存在忘れてた どうもどうも

今年のとても微妙なゴールデンウィーク、あまりに何もしていないので何かをしようと思った結果、私は#gentooinstallbattleをしようと何故か思い立ってしまいました。

今まで、一度VMware上でGentooのインストールは試みたことがあるのですが、Kernel Panicによりぽっきり心を折られてしまい、それっきりでした。

ですが、今回は何とか成功しました。とりあえず、流れを覚えているうちに感想文として書いておこうかなと思います。

あくまで感想文、インストールの方法や問題へのうまい対処法などその手のものはありません。ご了承ください。

開戦

今回のインストール目標は以下のようにしました

  • Gentooを正常起動させる
  • DE として GNOME 3 をインストールする
  • mikutterから日本語でつぶやく



5/6 2:20頃セットアップ開始です。この時点では作業をUbuntu 14.04 Live DVD上で行っています。GentooのISO落とすのが面倒くさかった。


3時頃、chrootを行いカーネルのビルドを開始。かなりお腹が空いていたことは覚えています。


4:23、新しい環境での起動に成功しました。しかし、ネットに繋がらない……。
原因は、ネットワークデバイスをeth0であると勘違いして設定いたことでした。
Archと同じで、今はenp1s0とかそういう感じの名前がつくんですね……。


いったん寝てた。


8:41、X Window Systemのインストールを開始。これ以降のemergeはほぼ全て暇で、他のことをしていたのでツイートが適当になります。


どう頑張っても日本語配列の設定ができなくて泣きたくなりました。主環境として使用しているArchでも上手くいっていません。 誰か教えてください、Xのキーボード設定……。


11:20頃にGNOME(gnome-light)のインストールを開始。もうかなり疲れています。

ここから数時間、完全にマシンを放置。Androidでワイワイしたり昼食をとっていました。
適当すぎますね。

そして時は過ぎ、16:07。

GNOMEのインストール、およびmikutterのインストールが完了!!
そして、続いてmozcもインストール。日本語でのツイートに成功しました。


その後は、初めてまともに使うGNOME Shellに感動していました。
初期は文句ばかり言われていたものと記憶していますが、わりと悪くないですね。
私の大好きなKDE4も、初期は3.5と比べて使いにくく感じたのと似たようなものかもしれません(?)



通知のポップアップ表示方法や、ストックの表示の仕方はおもしろいですね。
これはmikutterが楽しくなりそうです。


ということで
無事、Gentooのインストール、mikutterの導入、日本語環境のセットアップ全てに成功しました。
なかなか難しいなぁと思う点もありましたが、なんとかいって良かったです。



今回引っかかった場所


Intel グラフィックドライバを入れ忘れていた

入れなくてもいいのかな?
とりあえず、使用しているデバイスのドライバにチェックを入れ忘れたままカーネルをビルドする初歩的ミスでした。

gnome パッケージが入らない! / USEフラグがよく分からない!

これはもしや、USEフラグの設定不備だったのかもしれませんということで。
循環依存を起こしてしまい、gnome-lightでしかインストールを続行できませんでした。

今後の利用では、まずUSEフラグの設定についてもう少し勉強する必要がありそうです。

2014年3月24日月曜日

第9回全国高等学校情報科学競技大会 に出ていた

出てました。
IT部門にてわが校が団体入賞、またSE部門にて後輩が優勝です。すごい。
私は入れなかった。

今回の個人戦における主な敗因は、慢心と油断でしょうかね。

前者は、計算問題をつめてこなかったことや頭を最新に保っていなかったことで、普段解いている問題と比較して癖のある出題の前に死。

後者は単にマークのミス。これによって応用問題の表計算において最低2問を確実に落としました。問題数の少なさを考えると、とても手痛い。
しかも某後輩と話をした限りでは考えは合っていたようだし痛いってもんじゃない。とても情けない。

あと、回答メモってくるの忘れて自己採点が行えないという事故もキメました。踏んだり蹴ったりか。

なんと言いますか、慢心ダメ絶対。
このままだと応用情報を落としかねないので、特に苦手な計算問題はやっていく必要がありそうです。
用語問題は、基本情報とある程度被っている所もありますし、検定過去問とかやってればできるようになると思うのですが、こればかりはちゃんと頭を働かせないと駄目ですね。
数学嫌いの踏ん張りどころですねぇ……。

2014年3月2日日曜日

[メモ]ICS未満のActionBarActivityにandroid.R.id.contentにFragmentをうまく表示できない

support-v7に含まれているActionBarActivityを使うと、Android2.3等の古いOSでもActionBarのあるActivityを使うことが出来ます。
ですが、ちょっとしたハマりどころがあったのでメモ。

とりあえず実際に中身のあるFragmentを1つ記述して、それをActionBarActivityで表示するとします。
中身をInnerFragmentとして、例えばこんな感じになるのではないでしょうか。
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
    InnerFragment fragment = new InnerFragment();
    transaction.replace(android.R.id.content, fragment);
    transaction.commit();
}
これでも別にクラッシュは起きませんし、ICS以降では普通に表示されます。 ですが、Android2.3等で動かすと何も表示されません。

理由については理解しきっていないためここでは省略してしまいますが、これを解決するためには自前のレイアウトを介せば何も問題ありません。
FrameLayoutだけ置いたレイアウトXMLを作成しsetContentView()でセットした後、FragmentTransactionではFrameLayoutのIDを使うようにしましょう。
詳しいことはStackOverflow読みましょう。

(XMLのID = R.layout.frame, FrameLayoutのID = R.id.frame とした例)
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.frame);
    FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
    InnerFragment fragment = new InnerFragment();
    transaction.replace(R.id.frame, fragment);
    transaction.commit();
}

2014年2月9日日曜日

mikutterプラグインを書いていた

最近、メインで使うOSを Windows 8.1 から Arch Linux に変えました。
割と快適で、さほどWindowsに依存していなかったんだなあと自分でも若干驚きましたね。

さて、OSが変わればTwitterクライアントも変わります。
私はmikutterを使うことにしました。これ、すっごい便利ですね。快適です。

そして、mikutterの特徴であるプラグイン。せっかくなので自分で欲しい物を2つほど作ってみました。

nicorepo プラグイン

⇛ [GitHub]
mikutter上でニコレポを閲覧するためのプラグインです。
ログインメールアドレス/PWを入力すれば使える感じにしてあります。
Tweetと同じように1タイムラインとして表示します。そこそこ調和してて良い。
ついでに、ビルトインの画像プレビューでニコニコ静画を開けるようにもします。
(サムネイル表示はsub_parts_imageプラグインによるものです。すごい便利。)
問題は、TLの扱い方が悪いのかmiracle painterとよく喧嘩して表示エラーを起こすこと……これさえ直せればなぁ。

support pixiv プラグイン

⇛ [GitHub]
ビルトインの画像プレビューで、Pixivを開けるようにするプラグインです。
やってて思ったのですが、PixivはAPIが公開されていないのでとても面倒くさいですね。
おまけに、セッションやリファラが無いとサムネイルデータが開けませんでした。めんどくせぇやつだ。
そのため、addsupportで単純にサムネイルURLを返しても403になってしまうので、内部でサーバを起動してそちらへのURLを渡し、内部サーバ側でサムネイルのダウンロードをさせるようなゴリ押しを行いました。
さほど利口なやり方でもないと思いますし、資源を正しく停止・解放できているのかが私には分からない……。
そういう面で、一応動くけど残念なプラグインです。

さいごに

プラグイン楽しい!!✌('ω'✌ )三✌('ω')✌三( ✌'ω')✌
ところで、mikutterでデスクトップ環境に通知を発生させる利口な方法って何かありますかね。
環境を気にせず手荒にやるとするなら、直接notify-sendコマンドを叩いてしまうくらいのつもりですが……。