GALAcTTER
version 1.0.4 beta 1
Nov 02 2009


GALAcTTERは Javaベースの Twitterクライアントです。
Google AJAX Language Api combine with twiTTERの略です。
Twitter上で外国語のつぶやきを読んだり、或いは外国語でつぶやくことを目的として作りました。
機械翻訳の為、意思の疎通は難しいとは思いますが、異文化との邂逅の一助になることを願っています。

必要システム
Windows XP SP3

Java Runtime Environment (JRE) 6.0以上(Java Runtime EnvironmentのDownload)


最小化などの幾つかの機能を除き、ubuntu 32bit版でも使用できることを確認しました。
おそらくその他のWindowsファミリー、Linux系でもある程度は動作するかもしれませんが、
確認しておりません。特に64bitOSでの挙動は不明です。

1.0.3bでAOuthに対応しました。初回起動時にtwitter.comが表示されます。
[許可する]をクリックし、表示されたPINコードをダイアログボックスに入力して、
「了解」ボタンを押してください。
(システム、言語によってはボタンのテキストは多少違うかもしれません。)


Macでは一応動いたとの御報告を頂きましたが、どの程度まで動作するかは不明です。
Java Web Startの方もお試しください。

使用ライブラリ

GALAcTTER uses Twitter4J.
Copyright (c) 2007-2009, Yusuke Yamamoto All rights reserved

Many thanks Mr. Yusuke Yamamoto

頒布物の中にtwitter4j-2.0.10のソースコードは含んでおりません。
上記、Yusuke Yamamoto氏のサイトにて入手してください。
Twitter4Jのライセンスについても上記リンクにてご覧ください。
GALAcTTER uses google-api-translate-java.
Copyright (C) 2007-2009, Richard Midwinter
http://code.google.com/p/google-api-translate-java/
Many thanks Mr. Richard Midwinter

頒布物の中にgoogle-api-translate-java-0.82.jarのソースコードは含んでおりません。
http://code.google.com/にて入手できます。

LGPLライセンスでは「バイナリしか入っていない頒布物」の場合、
そのライブラリのソースコードを提供する」義務があるようなので、
要求された場合にはgoogle-api-translate-java-0.82.jarのソースコードを
何らかの方法で提供致します。その際に請求する実費と必要とする日数が
どれくらいになるか不明です。

google-api-translate-javaはLGPLライセンスで頒布されています。
LGPLライセンスについてはこちらをご覧ください。

尚、現在のソースを見ると、GPLv2やv3となっていますが、
その指摘に対し、Richard氏は以下のように回答しています。

Sorry, should all be LGPL, I've no problem really with how anyone uses the library.
Will try and update them asap. (Issue 64: Licenses )

新しいバージョンのソースコードではLGPLに修正されると思われます。

謝辞
まずはtwitter.com。原初の光がなければ、twitter worldは存在しませんでした。

二番目にGoogle AJAX Language API、「機械翻訳だから精度がいまいち(´・ω・`)」とかなんとかぼやきつづけていますが、 この制限の緩い翻訳APIがなければ、おそらくこのソフトを作る発想はなかったと思います。

次にtwitter4j製作者 Yusuke Yamamoto氏。氏のライブラリがなければ、きっとtwitter.comとの通信を行う為に何年もかかったか途中で挫折していたでしょう。

続いてgoogle-api-translate-java製作者 Richard Midwinter氏。氏のライブラリがなければやはり何年もの年月の浪費、或いは挫折、または今以上に特徴のないただの不安定なtwitterクライアントとして公開していたでしょう。

最後にSuittar製作者 Masaaki Gomi氏。氏のソフト、公開ページ等のデザイン、ブラウザ起動部分のコードを大いに参考させて頂きました。「何事も先達はあらまほしきことなり」と痛感致しました。

列挙した順番と感謝の多寡は関係しません。製作者、関係者の方々に等しく感謝致します。

またこの他に、「急募っと」製作者、「急募っと」での質問に御回答いただいた方々、 tweetやreplyの中でアドバイスや新たな発想を与えてくれたfollowerの皆様に感謝致します。

準備
Windows XP:
1.上記リンク(Download)よりGALAcTTER1.x.x.zipをダウンロードしてください。
2.ダウンロードしたGALAcTTER1.x.x.zipを任意のフォルダに解凍してください。
3.解凍されてできたGALAcTTER.jar をダブルクリックします。
4.初回起動時にusernameとpasswordを要求されますので入力してください。

※一応,ubuntuでの起動も確認しました。但し、全ての機能は使えません。以下の2通りの方法で使用出来ます。

a.一つ目は通常起動します。この場合はGALAcTTER.iniファイルがユーザーフォルダ直下に作成されてしまいます。

b.もう一つの方法は  (ユーザー名がmoleの場合)
java -jar /home/mole/GALAcTTER/ubu/GALAcTTER_mod.jar /GALAcTTER/ubu
というように引数にユーザーフォルダから実際にjarファイルがあるフォルダの間のパスを指定してください。
同一フォルダ内に保存したバッチ(シェルスクリプト?)のようなファイルに記述して実行する場合には
引数は無くても普通に起動しました。起動パスがそのファイルの物を受け取る結果なんでしょうか。
(ubuntuというかLinux,UNIX自体は無知に近いレベルなので勘違いしてる部分もあるかと思います。)
Java Web Start: リンクをクリックして、「警告-セキュリティ」ダイアログが表示されたら「実行」ボタンをクリックしてください。
※尚、Java Web Start版では自己署名証明書を使用しております。御自身の責任で御利用ください。

基本的な使用方法
インターバルを0に指定せずに"pub"タブや"User"タブ下の"friends"タブを開いておいてください。
或いはそれらのタブをダブルクリックしてください。

各タブの説明

pubタブ
  • public_timelineの内容を表示します。表示される件数は20件(GALA翻訳を行う場合は40件)です。
    "pub"タブをダブルクリックすると強制更新します。

tempタブ
  • 任意の1ユーザーの情報とtweetを表示します。
    "temp"タブをダブルクリックすると自分の情報とtweetを表示します。
  • パネル上の右クリックメニューから、そのユーザーが登録しているURL、twitter.comのホームを
    ブラウザで開くことができます。

Userタブ
  • メインになるタブです。 "User"タブをダブルクリックすると"friends"タブの内容を強制更新します。

--friendsタブ
  • friends_timelineの内容を表示します。表示される件数は設定及び諸条件によって異なります。
    "friends"タブをダブルクリックすると"friends"タブの内容を強制更新します。

--replyタブ
  • 自分宛(@username)のtweetを表示します。表示される件数は設定及び諸条件によって異なります。
    "reply"タブをダブルクリックすると"reply"タブの内容を強制更新します。

--newsタブ
  • friends_timeline中のnewsIDに指定したユーザーのtweetのみを表示します。
    表示される件数は設定及び諸条件によって異なります。
    "news"タブをダブルクリックすると"news"タブの内容を強制更新します。

--followingタブ
  • 自分がfollowしているユーザーの一覧を表示します。全てのユーザーを一括で取得して
    表示するモードと100件ずつ表示するモードがあります。
    "following"タブをダブルクリックすると"following"タブの内容を強制更新します。

--followerタブ
  • 自分をfollowしているユーザーの一覧を表示します。全てのユーザーを一括で取得して
    表示するモードと100件ずつ表示するモードがあります。
    "follower"タブをダブルクリックすると"follower"タブの内容を強制更新します。

--messageタブ
  • 自分宛のdirectmessageを表示します。表示される件数は設定によって異なります。
    "message"タブをダブルクリックすると"message"タブの内容を強制更新します。
  • 自分が使ってないのであんまりよくわかってません(・∀・)

--favoriteタブ
  • 自分がつけたfavoriteを表示します。表示される件数は設定によって異なります。
    "favorite"タブをダブルクリックすると"favorite"タブの内容を強制更新します。
  • 自分が使ってないのであんまりよくわかってません(・∀・) 最新20件などが表示される…のかな?

cfgタブ
  • 各種設定を行うタブです。 "cfg"タブをダブルクリックするとTwitterオブジェクトを更新します。
    詳しくは「設定」を参照してください。

設定 設定を変更した後は必ず「Save」ボタンをクリックしてください。

[cfg]-[tab]?タブ関連の設定をするタブです。

  • "Visible"-チェックを外すと該当するタブが表示されなくなります。
  • "GALA"-チェックを入れるとGALA翻訳の対象となります。
    但し、無条件で全てのtweetを翻訳するタブは"public","temp"タブのみです。
    他のタブで翻訳する場合は、このチェックとは別に対象IDをGALAIDに追加する必要があります。
  • "Number"-そのタブの一回における取得件数です。newsIDや非表示設定されたgroupに
    追加されたIDのtweetは表示しないため、必ずしも表示件数とは一致しません。

[cfg]-[etc]-その他の動作関連の設定をするタブです。

  • "GALA デフォルト言語"-GALA翻訳する際の翻訳後の言語を選択します。
    • "更新間隔"

    • "アプリケーションタブ"-"pub"タブの更新間隔を指定します。
      "ツイートタブ"-"friends","reply","news","message"タブの更新間隔を指定します。
      この更新は開かれているタブのみで行われます。followingタブ等いくつかのタブは自動更新しません。
    • "アプリタブ位置"・"ツイートタブ位置"

    • "アプリケーションタブ"("pub"タブ等が載っているタブペイン)と
      "ツイートタブ"("friends"タブ等が載っているタブペイン)のタブ位置を指定します。
    • "バルーン表示"-tweet着信時のバルーンの動作を指定します。
      「最小化時のみ表示」「常時」「非表示」があります。
    • 「ルック&フィール」「フォントネーム&サイズ」はそれぞれ使用するものを選択してください。
      フォントサイズに大きすぎる値を指定すると文字化けを起します。
    • "一行表示"-各表示テーブルでの表示を一列にします。アイコンは表示せずscreen_nameを表示します。
    • "常に最前面"-最前面表示にします。
    • "オートスクロール"-取得時にオートスクロールするか指定します。※現在は挙動がおかしいです。
    • "following/follower一括取得"-following/followerの取得を逐次取得に指定します。
      このチェックを外すと一括取得できますが、同期処理のため、一時的にフリーズ状態のようになります。
    • "リミット制限を表示"-その時点におけるAPIコール可能回数を返します。
      この制限を越えるとAPI経由でのアクセスができなくなります。
      数字の後ろに表示している日時はその制限がリセットされる日時を表示しています。
    • "スクロールバーを左側に表示"-スクロールバーを左側に表示します。
    • "Bit.lyを展開して表示"-Bit.ly短縮URLを展開してから表示します。
      展開URL取得のために通常より挙動が遅くなります。また、bit.lyのAPIキーを独自に
      取得して指定していない場合、必ず展開できるかどうか保証できません。

    [cfg]-[color]-tweetの色、表示関連の設定をするタブです。

    • "Visible"-チェックを外すと該当するグループは表示されません。
      使用例としては「NGにしたいIDを任意のグループに入れてそのグループの"Visible"のチェックを外す」
      「one-sided followのtweetを非表示にする」等があります。
    • "Target"?チェックを入れると指定した色を各グループに適用します。
    • "Grp Name"?各グループの名前です。このバージョンではつけても意味がありません。
      「@username」は自分のリプライに対する色付け、「one-sided follow」はどちらか一方がfollowしている、
      所謂「片想い状態」のIDのtweetに色付けします。followerタブではその逆の状態のIDを色付けします。

    [cfg]-[sound]-tweet着信音を設定をするタブです。

    • "friends","reply","directmessage"のそれぞれのタブで受信した際に鳴らせるwavファイルを指定します。
      対応していないwavファイルもあります。
    • "friends"タブは完全にtweetが無い状態にならない限り、ほぼ常に鳴ると考えてください。
    • "friends"のチェックを外して、"reply"にチェックを入れておくと、"friends"タブで受信したtweetの中に
      自分宛のリプライを含んでいた場合に"reply"タブの着信音が鳴ります。
    • 同梱しているtest?.wavは適当に作った耳障りな音なので、着信音を使用する場合は速やかに
      他のwavファイルを指定し直してしてください。
      (通常インストールのXPならば「C:\WINDOWS\Media」辺りのwavファイル)

    [cfg]-[sound]-使用ライブラリ及びライセンスを表示するタブです。

    • ここで指定できる項目はありません。

    GALA翻訳(To Foreign Languages)
    1.ウインドウ下部のテキストエリアに翻訳したい文字列を入力します。
    2.テキストエリア左上のコンボボックスから言語を選択します。
    3.「GALA」ボタンをクリックします。
    4.翻訳結果を上部のSelectedItemTextボックスに表示します。
    アイコンでGoogleブランドを表示します。

    コンボボックスにマウスホイールリスナーをつけてないので、思わずホイールを使うといらっとする結果が待ってます。

    右クリックメニュー(add系)
    ※ID管理タブを用意していないでのでnewsID以外のグループから削除したい場合はiniファイルを直接編集してください
    • groupID…表示、色付けしたいIDを追加してください。
    • newsID…newsタブで抽出したいIDを追加してください。news系botなどを想定しています
    • GALAID…"pub","temp"タブ以外で翻訳表示したいIDを追加してください。

    右クリックメニュー(extra系)
    • "このユーザーがフォローしている人達のIDリストを取得する"…
      任意のユーザーがフォローしている人たちのIdリストを取得します。
    • "このユーザーをフォローしている人達のIDリストを取得する"…
      任意のユーザーをフォローしている人たちのIdリストを取得します。
    • "このユーザーの発言を可能限り取得する(最大値はTwitterAPIの制限に依存)"…任意のユーザーの過去tweetを取得します。
      (twitter APIの仕様により、取得できる件数は増減します。)

      他者のtweetを取れてしまうのは如何なものかとも考えましたが、
      twitter.comからも見ようと思えば見えるデータなので最終的には問題ないと判断しました。
      尚、どちらも同期取得の為、取得中はフリーズ状態のようになります。

    右クリックメニュー(on table)
    • "このユーザーをフォローする"…任意のユーザーをフォローします。
    • "この発言をファボる"…任意のtweetをお気に入りにします。
    • "このユーザーをリムーブする"…フォローしている任意のユーザーをリムーブします。
    • "Favoriteを削除する"…お気に入りに設定されている任意のtweetからお気に入りを外します。
    • "リツイートする"…任意のtweetに"RT @username"を付加してテキストエリアに貼り付けます。
    • "リプライする"…任意のユーザーネームに"@"を付加してテキストエリアに貼り付けます。
    • "tempタブで表示する"…任意のユーザーをtempタブで表示します。
    • "newsIDから削除する"…newsIDから任意のユーザーIDを除去します。
    • "このユーザーをブロックする"…任意のユーザーをブロックします。

    • "ダイレクトメッセージを送る"…任意のユーザーを指定してmessageタブを開きます。
      書き込みボタンのテキストが"dmsg"の時、ウィンドウ上部のユーザーに対しダイレクトメッセージを送ります。
      但し互いにフォローしあってるfriend状態でないとダイレクトメッセージを送ることはできません。

    • "IDリストから一括フォローする(最大40件)"…Ids Listから自動でフォローします。非推奨機能です。
      最悪の場合、twitter.comからスパマー認定され、なんらかの処分を受ける可能性があります。
      初期制限値の20件程度を一日一回くらい使う分には問題ないと思いますが、following/follower比が
      著しく偏ってる場合でもスパマー認定を受ける恐れがあります。また、ある一定以上の偏りがあると
      twitter側でそれ以上のフォローが出来ないように制限しているようです。

    右クリックメニュー(on textarea)
    • "cut-to-clipboard"…選択文字列をカットします。
    • "copy-to-clipboard"…選択文字列をコピーします。
    • "paste-from-clipboard"…クリップボードの文字列を貼り付けます

    • "選択文字列(ユーザーネーム)をtempタブで表示する"
      …選択文字列のユーザーネームを持つユーザーが存在した場合、tempタブで表示します。
    • "選択文字列を翻訳する"・"選択セルのテキストを翻訳する"
      …選択文字列・セル内のテキストをGALA翻訳します。
    • "デ辞蔵 EJDIC辞書での検索結果を得る(英和)"・"デ辞蔵 EDICTJE辞書での検索結果を得る(和英)"
      …選択文字列と完全一致する語の検索結果を得ます。 (デ辞蔵の無料APIサービスを利用しています。)

      実験公開中の辞書であり、
      ※EJDIC英和辞典は編集者不明の英和辞典です。多くの誤記があり、実用には適しません。
      とのことです。

    • "選択文字列をweb検索する(ブラウザを起動)"
      …ブラウザを起動し選択文字列をiniファイル内で指定されている検索エンジンで検索します。(デフォルトではgoogle)
    • "選択URLを短縮する(Bit.lyのみ)"・""選択URLを展開する(Bit.lyのみ)
      …URLのBit.ly短縮、Bit.ly短縮URLを展開します。

    • "ブラウザで開く"…ブラウザを起動し選択文字列を任意のURLと合わせて開きます。
      デフォルトではGoogle Image,Goo辞書,wikipedia,twitter searchが指定されています。
      デフォルトで登録されているものを含めて全部で9つのURLが指定できます。
      (右クリックメニューの文言を気にしなければ10のURL)

      ※otherURLの指定はiniファイルを直接編集して指定してください
      useOtherURLCommandName…右クリックメニューで表示したい文字列(例:Google Image)
      preString…選択文字列の前につけたいURLなど(例:http\://images.google.com/images?q\=)
      postString…選択文字列の後ろにつけたい検索条件など必要に応じて。

      選択文字列のURLエンコードはデフォルトでは"UTF-8"になっています。
      urlencodeの値を書き換えると指定した文字コードでエンコードする筈…です。


    GALAcTTER は 修正BSDライセンスに基づいてリリースします。
    Copyright (c) 2009, Takahiro Nomoto.
    All rights reserved.
    
    Redistribution and use in source and binary forms, with or without
    modification, are permitted provided that the following conditions are met:
        * Redistributions of source code must retain the above copyright
          notice, this list of conditions and the following disclaimer.
        * Redistributions in binary form must reproduce the above copyright
          notice, this list of conditions and the following disclaimer in the
          documentation and/or other materials provided with the distribution.
        * Neither the name of the Takahiro Nomoto nor the
          names of its contributors may be used to endorse or promote products
          derived from this software without specific prior written permission.
    
    THIS SOFTWARE IS PROVIDED BY Takahiro Nomoto ``AS IS'' AND ANY
    EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
    WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
    DISCLAIMED. IN NO EVENT SHALL Takahiro Nomoto BE LIABLE FOR ANY
    DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
    (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
    LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
    ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
    (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
    SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
    

    その他の注意点・Tips
    • friendsリストを更新したい場合はcfgタブをダブルクリックしてください。
    • 予期せぬクラッシュやiniファイルの編集などでおかしくなってしまった場合は一旦GALAcTTERを終了してください。
      その後iniファイルを消してからもう一度起動してください
    • 何か接続がおかしいなと思ったら、cfgタブをダブルクリックするか、GALAcTTERを再起動してください。
    • beta版です。もしかしたら永遠の…

    更新履歴
    Nov 2 2009 version 1.0.3 beta リリース
    • 日本語メニューを追加(手動で"Locale=en"に指定した時のみ英語メニューを表示)
    • 起動が失敗するバグを修正した
    • デ辞蔵APIを利用してみた
    Oct 31 2009 version 1.0.3 beta リリース
    • OAuth対応
    • OAuth対応に対応に伴いUsername、passwordフィールド、userタブを廃止した
    • フォント変更、フォントサイズ変更
    • simpleopen追加
    • アイコンをキャッシュするようにした。今のところローカルに保存しない。
    • タイマーの値を0にした場合に次回起動時にエラーになるのを修正した
    • セル内のbit.ly短縮URLを復元するオプションを追加した。
    • スクロールバーなどを左側に表示できるようにした。
    • friendsIDs/followersIDsの取得をcursorベースにした
    • 選択文字列、選択セルから翻訳した結果をtweetTextBoxに表示できるようにした
    • 翻訳後デフォルト言語と翻訳後言語の指定が同じ場合に翻訳されないバグを修正した
    • 翻訳前のテキストは消去するようにした
    • GOOGLEの翻訳対象言語が増えたのに伴い、選択できる言語を追加した
    • 省略名が3文字以上の言語への翻訳が出来なかったのを修正した
    • extraコマンド系の取り消し後にJOptionPaneを表示しないように修正した
    • コンポーネントサイズ変更時の対応を多少した
    • tempタブのデザインを変更した
    • ウィンドウサイズ、ポジション、ディバイドバーの位置を記憶するようにした
    • スプリットペインに変更
    • アイコンサイズの幅が48に満たない場合はデフォルトアイコンを表示するようにした
    • tweetTextboxにマウス操作からペースト出来ないのを修正した
    • Replyタブで着信音は余り意味がないので廃止した
    • SystemTray未対応のOSではSystemTrayを使わないようにした
     Sep 23 2009 version 1.0.1 beta 1 リリース
    • 「resources」フォルダをJARファイルに格納した。
    • reply時のtweetにin-reply-to-idを付加するようにした(はず)
    • GALA翻訳後にTwitter4JのHTMLEntity.unescape()で処理するようにした

    既知の問題点/雑記など
    • テーブル更新時の描画がたまにおかしくなる
    • AutoScrollが更新前にスクロールする
    • 時折、原因不明の接続エラーが発生する
    • GALA翻訳で時々翻訳エラーが発生する(自動判別の失敗?)
    • AutoFollow,messageタブ、favoriteタブのテストが不十分
    • CMYK保存されたjpgはJavaが対応していないので普通の方法では表示できない?
    • アイコン画像にどでかいサイズのものを設定している人のtweetをクリックすると急に画像が大きく表示されて驚くΣ(゚∀゚;)
    • どうせならアイコンはキングペンギンではなくてガラパゴスペンギン(Galapagos penguin)にするんだった
    • 開発当初の目標は何処へいったのか、あまりコミュニケーションを重視する作りにはなってないのでその部分を強化したい
    • なんか「twt」ボタン押下後の反応が遅い
    • よくよく考えてみるとDirectMessageの受信タブはあるが送信タブがない
    • 140字をオーバーしていても、何の警告も出さずに140字までで投稿する
    • ubuntuでは最小化していないので、メニューの"show"は意味がありません。
    • save時にiniファイルを整形していないので、順序がバラバラで編集しにくい
    • リソース絡みなど、もっとうまくやる方法があったはず…
    • そろそろヘルプを作りたい

    ToDo:
    • このページのぐちゃぐちゃなレイアウト直し
    • 随所にある偽英語をどうにかしよう。
    • 全体的に設計からやり直し
    • 職業訓練落ちたから職探し(´・ω・`)

    Mail : elek.ing.mole (毎日はチェックしてません) gmail.com
    twitter : GALAcTTER