ushidayの日記

主に「IBMi」のメモに・・・

IBM i (AS/400)がTwitterへ呟く

以前、g*wsでJavaやGroovyで使える、Twitterライブラリ”Twitter4j”のお話を聞いたので、”IBM i(※以下AS/400)”から、Twitterへ呟いてみました。(´-`).。oO(・・・・・・)
Twitter4jの使い方などは、他に詳しく説明されている方が、おられますので割愛します。

  • Twitter4jを使ったJavaクラス”AS400TwitterJ”を以下の様に作成。
import twitter4j.Twitter;                                     

public class AS400TwitterJ{

	public static void main(String[] args){

		if(args.length != 3) {                             
			System.out.println("Usage [User] [Password] [Message]");
			System.out.println(args.length);
			return   ;
		}

		String user = args[0].trim();
		String pass = args[1].trim();
		String message = args[2].trim();

		Twitter twitter = new Twitter(user,pass);
		try{
			twitter.update(message);
		}catch(Exception e){
			e.printStackTrace();
		}
	}

}
  • Twitter4jをAS/400のIFSへ配置

  • AS400TwitterjクラスをAS/400のIFSへ配置

  • AS400Twitterjクラスを呼び出すCLを以下の様に作成
/*********************************************************************/ 
/*  TWITTERJ : Twitter4j 実行 /usr/source/java                       */ 
/*                                 2009/07/31 WRITE  BY ushiday      */ 
/*                                                                   */ 
/*********************************************************************/ 
/*   変数定義                                                        */ 
/*********************************************************************/ 
           PGM PARM(&USER &PASS &MSG)                                   
                                                                        
           DCL VAR(&USER  ) TYPE(*CHAR)    LEN(20)   /* ユーザー     */ 
           DCL VAR(&PASS  ) TYPE(*CHAR)    LEN(20)   /* パスワード   */ 
           DCL VAR(&MSG   ) TYPE(*CHAR)    LEN(140)  /* メッセージ   */ 
                                                                        
           DCL VAR(&NULL  ) TYPE(*CHAR)    LEN(1)    /* NULL         */ 
           DCL VAR(&CCSID ) TYPE(*DEC)     LEN(5 0)  /* 元 CCSID     */ 
           DCL VAR(&CLASSPATH) TYPE(*CHAR) LEN(1024) /*JAVA CLASSPATH*/ 
                                                                       
             RTVJOBA    CCSID(&CCSID)                                  
             CHGJOB     CCSID(5035)                                    
                                                                       
   /* クラスパスの設定 */                                                
             CHGVAR     VAR(&CLASSPATH) +                              
                          VALUE('.:/QIBM/UserData/Java400/lib/+        
                          twitter4j-2.0.9.jar')                        
   /* カレントディレクトリの設定 */                                                
             CD         DIR('/usr/source/java/AS400TwitterJ')          
                                                                       
   /* JAVAコマンド実行 */                                          
             RUNJVA     CLASS(AS400TwitterJ) PARM(&USER &PASS +        
                          &MSG) +                                      
                          CLASSPATH(&CLASSPATH) OUTPUT(*PRINT)         
                                                                       
             CHGJOB     CCSID(&CCSID)
                   
  END:       RETURN
             ENDPGM
                                                     

このCLにAS/400のプログラムから、例えばRPGから3つの引数「ユーザー、パスワード、メッセージ」を渡せば、Twitterへ呟く事が出来ます。まぁ使う人はいないだろうけど5250の画面も作ってみました。

  • 5250Twitter client


とりあえず、会社の夜間バッチが正常稼動しているか、無人でステータスでも呟いてみる事にしました。
AS/400Javaが使える環境だから、当たり前に呟く事が出来ました。
groovyでもやってみました。こちらはgroovyスクリプトを「QP2SHELL」で呼び出してやってみたのですが、SBCSは問題ないけど、DBCSで文字化けを起こして駄目でした。「QP2SHELL」の引数が、DBCSには対応してないのかもしれません。

EclipseプラグインでGAE/Jを試す

「EclipseでJava版App Engineを始めるための基礎知識」という、自分にとってありがたい記事がありましたので、GAE/Jを早速試してみました。

    • Java early look 用サインアップ
    • GAE/J SDKの導入(一応、APPENGINE_HOMEも設定しておきます。)

内容は”dev_appserver.(cmd or sh) = 開発用 Web サーバー”や、”appcfg.(cmd or sh) = App Engine”がbinディレクトリに入ってます。

  • アプリケーション用のサイトを作成
    • ここで「Create an Application」を押します。初回だけ、携帯電話のメールに認証コードが送られて、アクティベーションが行われます。作成自体は、手順に従って進むだけです。


  • アプリケーションの作成
    • デフォルトで既に、動作するアプリケーションが出来ているので、そのまま使います。


  • アプリケーションのデプロイ
    • 「appengine-web.xml」に”application”と”version”を追加します。


    • デプロイのボタンを押して、Gmailアドレスとパスワードを入力してアップロードします。



  • アプリケーションの開始
    • GAEの管理画面からデプロイしたアプリケーションの動作確認が出来ます。




Mac OSX 10.5 デフォのJDK

Mac OSX 10.5 デフォのJDKは、1.5みたいなんで、1.6にしておこうと思う。
Sun(もうOracleか?)に行くとそう言われるが、”最新JDKの導入は、Appleメニューのソフトウェア・アプデートから〜”行うみたい。
シェルでlocate javacで調べると、
/System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Home/bin/javac
/System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Home/man/javac.1
が出力される、
JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Home
PATH=JAVA_HOME/bin:$PATH
MANPATH=JAVA_HOME/man:$MANPATH
を「~/.bashrc」に追加。

javac -versionで確認したらOKでした。