Takuji->find;

株式会社はてなでアプリケーションエンジニアやってます、技術的な記事を書いているつもり

モダンObjective-C向けのURI builderを書いたという話

今までObjective-CでURLを作成する時は、手動で文字列連結して作っていたが、
めんどくさくなった上に、ググってもなかったのでAndroidUri.Builderっぽいクラスを書いた

https://github.com/takuji31/TKURIBuilder

こんな感じに使える

    TKURIBuilder *builder = [TKURIBuilder httpURIBuilder];
    builder.host = @"example.com";
    builder.path = @"/some/path";
    [builder appendQueryString:@"key1" value:@"日本語"];
    [builder appendQueryString:@"key2" value:@"です"];
    NSString *uriString = [builder buildString];
    //http://example.com/some/path?key1=%E6%97%A5%E6%9C%AC%E8%AA%9E&key2=%E3%81%A7%E3%81%99

YAPC::Asia Tokyo 2012でLTしてきた話とタイムテーブルビューアーの話

9/27-29にかけてYAPC::Asia Tokyo 2012が開催されました。

自分としては転職直前のKyoto.pm以来半年ぶりのカンファレンスでした。

自分は1日目のLTと2日目のLTソンで発表しました。

http://www.slideshare.net/ssuser0eaa8e3/yapc-asia2012

1日目のLTは最近やってるAndroid開発の話でした。
Perl mongerの人達が少しでもAndroid開発に興味を持ってもらえれば、と思います。

http://www.slideshare.net/ssuser0eaa8e3/perlbrew-cpanfile-carton

2日目のLTソンでは最近Perlの環境管理に使ってるライブラリーの話をしました。

本来Cartonは各アプリケーションごとにそれぞれモジュールをインストールする、といった使い方で利用されますが、あえてそれをメインのPerlに使うというアプローチをしている、という話でした。



半年もこういったイベントに参加していないと、やっぱり視野が狭くなりますね。
来年ももちろん参加しますが、それまでにも色々なイベントに参加しようと思いました。

また、今回はAndroid版のタイムテーブルビューアーの開発もしました。

さほど大きい不具合もなく(なぜか一覧に戻ると落ちる不具合はあったようですが)、開催1日目の途中にアップデートして通知機能を実装したりもしました。

最終的には95人の方にダウンロードして利用していただいたようです。

来年はもっとしっかりしたタイムテーブルビューアーを開発したいと思います。
(来年も開発します)

YAPC::Asia 2012 viewer について

YAPC::Asia Tokyo 2012開催が迫ってまいりました!

今日は拙作のYAPC::Asia 2012 viewerを紹介したいと思います。

YAPC::Asia 2012 viewerは名前の通りYAPC::Asia Tokyo 2012のタイムテーブルビューアーです。

Android2.2以上対応、スマートフォン/タブレットの両方でお使いいただけます。

ダウンロードはこちらから

https://play.google.com/store/apps/details?id=com.github.takuji31.yapcasiaviewer

PCから端末にインストールリクエストを投げると楽ですね。
スマートフォンから「YAPC」で検索するのもいいかもしれません。

主な機能は3つ

  • タイムテーブル一覧
  • 各トークの詳細表示
  • チェックリスト


タイムテーブル一覧は日付、会場ごとにトークを時系列で一覧できます。
f:id:takuji31:20120925175855p:plain


左上のアイコンをタッチすると日付を選択できます
f:id:takuji31:20120925175930p:plain


会場は上部のドロップダウンで切り替えられます
f:id:takuji31:20120925180030p:plain


一覧されているトークをタッチすると、各トークの詳細を見ることができます。
右上の☆をタッチするとこのトークをチェックできます、見たいと思ってるトークはばんばんチェックしましょう!
f:id:takuji31:20120925180413p:plain


チェックしたトークはチェックリストで確認できます。
チェックリストの表示は右上のリストっぽいアイコンをタッチすると表示されます。
f:id:takuji31:20120925202627p:plain

このような感じにチェックしたトークが一覧で表示されます、詳細はタイムテーブルと同じようにタッチすると見られます。
f:id:takuji31:20120925180443p:plain


間に合えば、前夜祭までにもう1回バージョンアップして、チェックしたトークの5分前に通知する機能を付ける予定です。
コレがあれば見たいトークを逃す心配もなくなりますね!

バグなど発見されましたら、 @takuji31 までご連絡いただければ対応します。

Wasatterを公開停止しました

拙作のWassr/TwitterマルチポストクライアントのWasatterを本日公開停止しました。

Wassrが10月1日でサービス終了が決定し、TwitterAPI v1.1でサードパーティークライアント向けの規制がきつくなるということで、
Wassr終了後はTwitterクライアントとして第二の人生を歩む予定でしたが、このタイミングで開発停止及び公開停止とすることに致しました。

思えばWasatterは、Android開発の勉強として初期バージョンを2010年2月にリリースし、その後少しバージョンアップを進め1.0をリリースし、2010年の5月には2.0をリリースする予定でしたが、モチベーションとスケジュールの問題で2年半経った今も2.0をリリースできないまま、開発を終了することになりました。
ですが、このアプリがきっかけて公私共にAndroid開発への道へ進みましたし、前職で初のAndroidアプリをリリースし、その後転職までいくつかのアプリをリリースできました。
そして、現職ではその開発経験を買っていただき入社が決定し、これからもアプリの開発を続けられることになりました。
色々思い出深いアプリです。

さて、公開停止にあたってWasatterがどれくらいの方に利用されたか統計情報を公開します。
(GooglePlayのデベロッパーコンソールから参照出来る情報、2012/09/18現在)

ユーザー インストール合計数: 1,540 件
有効な端末インストール数: 206 件

最大の有効な端末インストール数: 303件(2011/09/20)
最も使われているAndroidのバージョン: 2.3(2012/09/18現在、85端末、41.26%)
最も使われている端末のモデル: IS03(2012/09/18現在、25端末、12.14%)

本当はスクリーンショットでも貼ろうと思ったけど、面倒なのでやめました。

最後に、Wasatterの開発/デバッグに協力してくれた皆様、Wasatterを利用してくれた全ての方に心からお礼申し上げます。
ありがとうございました。

YAPC::Asia Tokyo 2012のタイムテーブルビューアーを作ったよ

今年のYAPC::Asia用のタイムテーブルビューアーを作りました。

Android2.2以上対応です。
とりあえずはタイムテーブルを見る機能しかついてません。

  • トークのチェック機能
  • 一定時間前に通知する機能

を前夜祭までに付けられたらいいなぁ…。

ダウンロードは以下のURLからお願いします。

https://play.google.com/store/apps/details?id=com.github.takuji31.yapcasiaviewer

ソースはこちら

https://github.com/takuji31/YAPCAsiaViewer

ビルドには以下のライブラリーも必要です。

https://github.com/takuji31/android-app-base
https://github.com/takuji31/android-slide-menu
http://actionbarsherlock.com/

全部同じディレクトリに置いて、Eclipseにインポートしてビルドすれば動くはず。
ActionBarSherlockに添付されているandroid-support-v4.jarをandroid-app-baseに添付されているものに入れ替えてください。

アイコンは配布されているYAPC::Asia 2012 公式ロゴデーターを利用しています。

http://yapcasia.org/2012/news/yapcasia-2012-logo.html

追記

トークのチェック機能をつけました、メニュー→チェックリストでチェックしたトークを一覧できます。

AndroidのListViewにページングを実装した話

Androidで縦のページングを実装しなければならない機会があったので、調べてみたらこんな記事を見つけた。

http://d.hatena.ne.jp/duyoji/20120818/1345264639

しかし、読んでみた感じだとフルスクリーンが前提だったり、ListViewのアイテム数をわざわざセットしないといけなかったりしたので、これをベースにして書き換えてみた。

使い方は基本的に同じだが、Viewのレイアウトが完了した時に行う処理をaddOnGlobalLayoutListenerメソッドを通じて追加できる。

コードはgithubへ

https://github.com/takuji31/SenchanLib

このライブラリプロジェクト内のPagingListViewとPagingArrayListAdapterが実体。
他にもちょこちょこ便利なクラスが入ってるのでよかったらどうぞ。

たまにページングが効かなくなることもあるので、これは要調査。

※追記
横のページングはViewPager使えばいいので、組み合わせたら縦横スクロールが実現出来ますね。

KeyRemap4MacBookでキーの同時押しの閾値を下げる

Macで英語キーボード使っているで、左右のCmdキーを単押しでかな/英数に、同時押しでCmdにしているのだが、かな/英数として押した時に次のキーを押すのが速いとCmd+押したキー扱いになってしまう。

これでDとか入力してる時にCmd+Dになったりして泣いたりしたので設定を探してみたらあった。

KeyRemap4MacBookの設定 → Key Repeat → [Double Press Modifier] Recognition Threshold

の値を下げると同時押しと認識されづらくなる、もちろんしっかり同時押しした時はちゃんと認識してくれる。

500msがデフォルトだが自分は50msにした、100msでもたまに反応したので。