36
ぼくのかんがえたさいきょうの ついったーくらいあんと tmyt 2011/3/26 西宮市男女共同参画センター ウェーブ

ぼくのかんがえたさいきょうのついったーくらいあんと

  • Upload
    shigure

  • View
    1.199

  • Download
    0

Embed Size (px)

DESCRIPTION

sumartphone workshop Kansai #14

Citation preview

ぼくのかんがえたさいきょうの ついったーくらいあんと

tmyt

2011/3/26 西宮市男女共同参画センター ウェーブ

tmytっていいます。

修士論文がやばい感じの大学院生です。

Twitterクライアント作って遊んでることが多いです。

最近スマートフォン買ってません

はじめまして

今日はAzureaを30分語り尽くします!

Azureaってなぁに?

Windows phone用のTwitterクライアントです。

x86 PC Windowsでも大丈夫です。

答え

フルC++実装 外部ランタイム不要 フットプリント1.3MB 比較的高速 多くのキーボードショートカット ストリームAPIへの対応 それなり高機能 高い閲覧性 加速度センサを用いた操作 基地局即位 ツリービューでの返信先の閲覧 インライン翻訳 ふぁぼったーブラウザ メモリ消費がすくなめ タブレットPCにもおすすめ タッチスクリーンでの操作もちょっぴり考えてある フリック操作のショートカット WM5/6/6.1でもスムーススクロールをサポート Twitpicなどのフォトストレージの内蔵プレビュー 柔軟な設定項目 JScriptによる高度な拡張 無料です

こういうアプリケーションです。

起動して

クレデンシャル入力して

OAuth認証して

はいどうぞ!

ふつうに使う

認証までやって

’UI設定’から好みの設定に変更して

Ex)

アイコン非表示

カラーセット変更

入力ボックスの常時表示

Etc

あとはどうぞ!

ちょっとこだわって使う

よくある質問

閲覧専用ですか?

リプライできません

変な外人のPostをRTしちゃいます

検索の結果を消せませんか?

なんかふぁぼってないのに赤字なんですけど

First step

Postできます。

Enterとかアクションキー押すといいです。

閲覧専用ですか?

リプライしたいPostを右クリックとかするといいですよ。

キーボードからRでもいけます。

リプライできません

去年の11月ごろのTwitter仕様変更の影響です。

同月に対応バージョンをリリース済みです。

変な外人のPostをRTしちゃいます

検索結果を開いている状態で’閉じる’メニューコマンドで閉じれます。

INIに保存されてるので手動削除でも。

検索の結果を消せませんか?

Twitterのバグです。

なんかふぁぼってないのに 赤字なんですけど

前置きはここまで。

Azurea version.1.3.2以降JScriptでの拡張を実装しました。

比較的なんでもできます。

制限は標準できつくして、設定でどこまでも緩める思想

やりだすときりが無いです。

待望のユーザ拡張

GPSへアクセス

タイムライン取得時にステータスをフックしていろいろ

スクリプトでフィルタリング

HTTP通信

API呼び出し

Azureaの設定読み書き

外部アプリケーション呼び出し

コンテキストメニュー拡張

Etc…

こんなことができます

Azurea Wiki (http://azurea.refy.net/ja/wiki)から最新のベータ版をダウンロードします。

Azurea.exeの横にScriptsフォルダを作る

Scriptsの中に任意の名前でファイルを作る

ただし拡張子は.jsで。

あとはJScriptなので皆様のお好きな感じでどうぞ。

スクリプト拡張のはじめかた

こんなことできます!

短縮URLを展開したい!

→それスクリプト拡張でできるよ!

function PreProcessTimelineStatus(status)

{

var s = status.text;

while(s.match('http://bit.ly/[a-zA-Z0-9]+','g')){

var jmpUrl = RegExp.lastMatch;

var resp = Http.sendRequest(jmpUrl, false);

resp.header.match('Location:.+?(http.+)', 'i');

s = s.replace(jmpUrl, RegExp.$1);

}

status.text = s;

}

たとえばこんな感じ。

診断メーカーであそびたい!

→それスクリプト拡張でできるよ!

System.addContextMenuHandler('診断メーカー', 0, function(id){

var status = TwitterService.status.get(id);

var curUsr = TwitterService.currentUser();

if(status.text.match('http://shindanmaker.com/[0-9]+')){

Http.postRequestAsync(RegExp.lastMatch,

"u="+encodeURI(curUsr.screen_name), false

function(resp){

resp.body.match('<textarea.*?>(.*?)</textarea>');

TextArea.text = RegExp.$1;

TextArea.in_reply_to_status_id = 0;

TextArea.show();

TextArea.setFocus();

});

}

});

こんなんとか

リプライをトーストしたい!

→それスクリプト拡張でできるよ!

var TOAST_MESSAGE = 0x100000;

function PreProcessTimelineStatus(status){

if(System.isActive) return;

var re = ['@hoge', 'ho+ge'];

var f = false;

for(var i = 0; i < re.length; ++i){

var r = new RegExp(re[i]);

if(status.text.match(r)){

f = true;

break;

}

}

if(f) System.showMessage(status.text,

'Reply from ' + status.user.screen_name, TOAST_MESSAGE);

}

こんなんで

Postされた場所をみたい!

→それスクリプト拡張でできるよ!

System.addContextMenuHandler('Google Static Map', 0, function(id){ var s = TwitterService.status.get(id); if(s.geo.lat != 0xffff){ var staticMap = 'http://maps.google.com/maps/api/staticmap?size=512x512&maptype=roadmap&markers=size:mid|color:red|'+s.geo.lat+','+s.geo.lon+'&sensor=false'; var mapUrl = 'http://maps.google.co.jp/maps?q='+s.geo.lat+','+s.geo.lon; System.openPreview(mapUrl, staticMap); } });

こうすれば

QTしたいんだけど!

→それスクリプト拡張でできるよ!

System.addContextMenuHandler('引用返信', 0,

(id){

var s = TwitterService.status.get(id);

TextArea.setText('QT

@'+s.user.screen_name+': '+s.text);

TextArea.setInReplyTo(s.id);

TextArea.show();

TextArea.setFocus();

TextArea.setCursor(0);

});

こうするといいです

ショートカット増やしたい!

→それスクリプト拡張でできるよ!

// 抽出タブの表示

System.addKeyBindingHandler(0x34, 0, function(id){

System.views.openMatch('#sumaben', false);

});

// Postに含まれる1つめのURLをブラウザで開く System.addKeyBindingHandler(0xBE, 0, function(id){

var urls = new Array();

TwitterService.status.getUrls(id, urls);

if(urls.length > 0) System.openUrl(urls[0]);

});

こんなかんじに。

iTunesで聞いている曲名 をPostしたい!

→それスクリプト拡張でできるよ!

System.addKeyBindingHandler(0x30, 0, function(id){

var iTunesApp =

new ActiveXObject("iTunes.Application");

var track = iTunesApp.CurrentTrack;

var status = ‘Now playing.. ’

+ track.Artist + ‘ - ‘

+ track.Name + ' #nowplaying';

TextArea.text = status;

TextArea.show();

TextArea.setFocus();

});

こんな風にできます。

ActiveXObjectは好き勝手使えると危なげなので標準は無効にしてあります。

INIに手動でエントリを追加することで利用可能になります。

[Scripting]

AllowActiveXObject=1

できます、が

本体が直接対応していない機能もスクリプト拡張でどうにかできます。

どうにかできないときはWikiの目安箱に書いておくとどうにかなるかもしれません。

これからも見た目はシンプル、蓋を開けるとあらびっくり。を目指して作り続けます?

いかがでしょうか

ありがとうございました。