初めてのプラグイン開発
 - SAPとTracの連携 -




                   1
今の心境
 こういった場での発表は、初めてできん
 ちょーしてます
 5分どころか10分以上かかりそうなので、
 今回どら娘がこなくてほっとしてます




                  2
アジェンダ
 自己紹介
 プラグイン作成の背景
 プラグインの概要
 今後の課題




              3
自己紹介


 id:ikikko
    はてな(ブログ:Talking Nonstop)
    Gmail, Twitter, Wassr
 某SIer所属
    客先常駐
    商社向けのシステム開発
    SAPのアドオン(プラグイン)開発を担当
                                4
背景
 「Excel+Eメール」での管理にうんざり
    管理用のExcelファイルが5~6
      同じ内容を別々のファイルに転記
      ファイルを複数立ち上げて作業
    離れた拠点の連絡は、EメールでExcelを送付
      手動でメール送信が無駄な労力
      どこに最新のファイルがあるのかも不明




                            5
勉強会
ITSで解決できるということを啓蒙するために勉強会を開催!

便利そうだけど、             SSL通信や
セキュリティは?          ユーザIDによる制御など
                  一通りのことはできます




 SAP上の             中をいじってやれば
ソースコードと            できると思いますが、
連携できる?           標準機能にはないみたいです
                          6
勉強会を終えた後の感想
ソースコードのバージョン管理と   無いならば
 連携不可なのは不便だよな     作ってしまえ
                  プラグイン!




                     7
プラグインの概要 - Sap2SvnPlugin
-
 チケット更新時にSAPにアクセスして情報を
 取得、その内容をSubversionにコミット

 SAPへのアクセス:
     ActiveXを利用したRFC(Remote Function Call)
      を利用
 Subversionへのコミット
     Trac付属のモジュールを利用

                                    8
イメージ図
                    Trac
        チケット                リポジトリ
               カスタムフィールド
               •リリース済
               •移送依頼番号




 ①:アクセス                             ③:閲覧

  SAP                        Subversion

          ②:オブジェクト抽出・コミット


                                    9
SAP用語の解説
 リリース
    Subversionでのコミット
    リリース後は、該当のオブジェクトは変更され
     ない


 移送依頼番号
    Subversionでのリビジョン番号
    一つの移送依頼番号に複数のオブジェクトが
     紐付く
                      10
プラグイン設定画面      •APサーバ
               •ユーザ名
               •パスワード etc


       SAPのログイン情報




                    コミットのための
                      作業領域
                     11
チケット更新時
          チケット




       「リリース済」がチェックされて、
    かつ「移送依頼番号」に値がある場合にのみ
           プラグイン実行



    ボタンを押して、10秒くらい待つ・・・   12
チケット更新後                  リポジトリ
    チケット                     概要とチケット番号を
                              コミットログ出力

チェンジセットの番号を追記




           相互リンクを実現!




                                 13
    ※:画面はイメージです。実際のものとは異なる可能性があります。
苦労した点
 Python初心者
    「みんなのPython」で基礎固め
                                                              柴田淳氏 著
 SAPのプログラム制御初心者
    PythonでSAPを制御しようという人が少ないので、Web
     上にも情報が少ない
 Subversionのプログラム制御初心者
    APIのドキュメントが少なく、使いにくい
     ⇒ Google Codeのテストケースで使用方法を調査
 Tracプラグイン作成初心者
    参考:Shibuya.trac「プラグインの作り方」
     (http://sourceforge.jp/projects/shibuya-trac/wiki/trac%2Fplugindev)
                                                                           14
今後の課題

 現状はコンセプトの検証レベル
 プラグインの洗練
    バージョン管理対象オブジェクトの対応増
      画面制御・レイアウトコード
      データベーススキーマ
    例外処理の追加
      様々な環境での動作検証


                       15
そして何より・・・


            16
Trac & 自作プラグイン
    を導入する!


             17
今後の課題
 セキュリティに関しても条件厳しい
 使ってもらってこそのTrac
    実際に使わないと便利さが分からない
    使うにつれてプラグインの改善点も見えてくる


使ってもらいたいけど、使うに使えない
     堂々巡り状態・・・

                      18
うまく導入する方法を
アドバイス下さい><


             19

初めてのプラグイン開発