520 likes | 857 Views
Open Source ERP Users Group 第 15 回勉強会. 2014 年 7 月 26 日 @ オープンソース・ワークショップ. 目次. はじめに [5min] お知らせ [5min] 特別編 [50min ] オープンプロジェクト [60min] モクモク会 [60min]. 目次. はじめに お知らせ 特別編 オープンプロジェクト モクモク会. はじめに ( 勉強会の目的 ). 目的 ADempiere に関する知識を共有し、全般的な理解を深める。 想定参加者 ADempiere の利用に興味を持っている人
E N D
Open Source ERP Users Group第15回勉強会 2014年7月26日 @オープンソース・ワークショップ
目次 • はじめに [5min] • お知らせ [5min] • 特別編 [50min] • オープンプロジェクト [60min] • モクモク会 [60min]
目次 • はじめに • お知らせ • 特別編 • オープンプロジェクト • モクモク会
はじめに(勉強会の目的) 目的 ADempiereに関する知識を共有し、全般的な理解を深める。 想定参加者 ADempiereの利用に興味を持っている人 (当面はユーザ視点に立ち、ADempiereの標準機能を説明の中心とする。) 参加者の前提知識 特になし 勉強会の構成 ・業務編 ・システム編 ・特別編 参考資料 ●BayuChauyaPamungkas,“ADempiere 3.4 ERP Solutions “, PACKT ●湯浅和雄, 「この1冊ですべてわかる 物流とロジスティクスの基本」, 日本実業出版社
はじめに(勉強会の目的) 本勉強会では、ADempiereの導入支援として、基礎となる体系的な情報整理とその共有を目指します。コミュニティ参加者には本勉強会の知識をベースとして、より高次の理解に取り組んで頂き、知り得た内容を、コミュニティに共有頂く、といった”お互いに教えあう場”となればと考えています。 理解度 実利用に求められる知識に対して、体系的な整理が行われていない 領域 以前の課題 理解度 連続勉強会により、 体系的な情報整理 ⇒勉強会の知識を基礎として、より高次の知見へ展開 領域 勉強会の目標
はじめに(勉強会の注意点) 勉強会参加者の興味対象は、人によって異なるため、必ずしも参加者全員の知的欲求を満たせるとは限りません。 当活動はボランティアベースであるため、Bさん、Cさんの興味対象であるがAさんの興味対象外の事柄については、Aさんに期待するのではなく、各自で取り組んでみましょう。 Cさんの興味 Aさんの興味 Bさんの興味
はじめに(ADempiereの紹介) ADempiereの概要 中小企業向けERPとして開発されたCompiereから2006年に分岐して、開発されているソフトウェアおよび、その開発コミュニティ。 Eric Raymondの著作、『伽藍とバザール』のバザール方式により開発がすすめられているプロジェクト。 ADempiereのシステム機能 • Enterprise Resource Planning (ERP) • Supply Chain Management (SCM) • Customer Relationship Management (CRM) • Financial Performance Analysis • Integrated Point of sale (POS) solution • Integrated Web Store
はじめに(ADempiereの紹介) 注文 発注指示 受注情報 注文 顧客 取引先 受注 発注 生産 入荷 出荷 在庫 商品 商品 商品 商品 生産・在庫管理 仕入 売上 販売管理 購買管理 財務 会計 請求書 請求書 債権 管理 債務 管理 財務会計 人事 給与 入金 支払 代金 代金 人事管理 債権管理 債務管理
目次 • はじめに • お知らせ • 特別編 • オープンプロジェクト • モクモク会
お知らせ(リリース情報) • 特になし • 翻訳確認 • https://sourceforge.jp/ticket/browse.php?group_id=2599&tid=34053
お知らせ(ADempiere/iDempiere Wiki更新) • iDempiere Wiki更新 • New Feature for v3.0 • https://sourceforge.jp/ticket/browse.php?group_id=2599&tid=34053 • コンパイル環境構築 • http://wiki.idempiere.org/w-en/index.php?title=Installation_in_Eclipse&oldid=5675 • ADempiere Wiki • Getting Started • http://www.adempiere.com/JP/Table_of_Contents#Getting_Started
お知らせ(その他) • iDempiere Wikiのatom feed • 言語ごとにAtomフィードのURLが異なる。主要な記事はEN配下で作成されている • Prior Period Adjustment • 米国会計では、過去月の仕分けを修正する場合は、Retained Earning (資本勘定) を直接修正 • 8/5にOpen Source Initiativeインタビュー • OSI directorのTony Wassermanにインタビューを予定しており、SaaSSやAGPL問題などに対する意見を確認予定 • BitbucketとGitHubの違い • GitHubはオープンソースとすることを前提とする開発プラットフォームである一方、Bitbucketはソースを限定公開することも可能。
目次 • はじめに • お知らせ • 特別編 • Lightening Talk • コードリーディング/初期クライアント作成 • JUnit入門 • Selenium入門 • オープンプロジェクト • 今後の活動
Lightning TalkIFRS 各論 簡易説明(ジョイントアレンジメント) • IFRSとは • 国際財務報告基準(IFRS:International Financial Reporting Standards)とは、国際会計基準審議会(IASB)およびIASBの前身である国際会計基準委員会(IASC)により設定された会計基準(IASおよびIFRS)およびIFRS解釈指針委員会(IFRIC) • およびIFRICの前身である解釈指針委員会(SIC)により発表された解釈指針(SICsおよびIFRICs)の総称です。 • このうち会計基準については、財務諸表の作成および表示に関する概念フレームワーク、IAS第1号からIAS第41号およびIFRS第1号からIFRS第13号(2011年6月時点)までの個別基準書から構成されています。 • IFRS導入によるメリット • 財務諸表の透明性、比較可能性の向上 • グローバルな資金調達による資本調達コストの削減 • 投資家向け広報活動(IR)を通じた、海外の投資家やその他の利害関係者とのコミュニケーションの向上と円滑化 • 海外子会社を含む連結グループを統一された会計基準で管理・業績評価することが可能 • IFRS導入を契機としたグループ全体の財務報告プロセスの効率化及び透明化 • 参考HP • http://www.shinnihon.or.jp/services/ifrs/about-ifrs/
IFRS 各論 簡易説明(ジョイントアレンジメント) 簡潔にいうと、合弁会社等を設立した場合の投資会社の会計処理を規定した基準。 ジョイント・ベンチャーからジョイント・アレンジメントへ 新基準では、従来の基準IAS第31号におけるジョイント・ベンチャーの概念をジョイント・アレンジメントという名称に変更し、踏襲している。従来のジョイントベンチャーの3分類((1)共同支配の営業活動、(2)共同支配の資産、(3)共同支配企業)の概念に代わって、ジョイント・アレンジメントを(1)ジョイント・オペレーション、(2)ジョイント・ベンチャー の2つに分類している。 ジョイント・アレンジメントとは ジョイント・アレンジメントは、複数の当事者が共同支配を有する取り決め(アレンジメント)と定義される。 ここで共同支配とは、重要な意思決定は当事者単独ではなく複数の当事者の合意が必要であることを意味する。。例えば、2つの当事者がそれぞれ50%ずつ議決権を有し、重要な決議には51%以上の賛成を要する旨の取り決めが行われている場合、いずれの当事者も単独では重要な意思決定を行うことができませんので、この場合は共同支配を有しています。 さらに、ジョイント・アレンジメントは、その当事者の権利と義務の性格により「ジョイント・オペレーション」と「ジョイント・ベンチャー」の2つに分類される。。
IFRS 各論 簡易説明(ジョイントアレンジメント) ジョイント・オペレーションとは ジョイント・オペレーションとは、「アレンジメントを共同支配する当事者が、アレンジメントに関連する個々の資産に対する権利あるいは個々の負債に対する義務を有する取り決め」と定義される。会計的には、共同支配を有する当事者は、資産・負債等を個々に処理する権利を持つ。 ジョイント・ベンチャーとは ジョイント・ベンチャーとは、「アレンジメントを共同支配する当事者が、アレンジメントの純資産に対する権利を有する取り決め」と定義される。出資者は、会計的には、純資産に対する権利を持つ。 ジョイント・アレンジメントの分類 分類の視点:共同支配を有する当事者は、ジョイントアレンジメントの被投資企業のB/Sの何に対する権利を有しているか? ジョイント・アレンジメントの分類のまとめ図 資産・負債に対する権利/義務→共同支配事業(Joint operation) 資産 負債 純資産 純資産に対する権利/義務→共同支配事業(Joint venture)
IFRS 各論 簡易説明(ジョイントアレンジメント) 実務への影響 比例連結の適用不可 比例連結では、ジョイント・ベンチャーの資産・負債・収益・費用のうち自社の持分が財務諸表に合算されていたが、持分法ではこれらが全て投資勘定と持分法損益のみで表示されるため、有形固定資産・無形資産・収益等の個々の財務諸表項目の金額が減少する結果となる。またこれ以外にも、未実現利益消去・債権債務消去等の会計処理が異なるため、財務数値が大きく変更される可能性がある。 参考HP http://www.cfonews.jp/?p=5873
目次 • はじめに • お知らせ • 特別編 • Lightening Talk • コードリーディング/初期クライアント作成 • JUnit入門 • Selenium入門 • オープンプロジェクト • 今後の活動
コードリーディング(初期クライアント作成/背景および事前準備)コードリーディング(初期クライアント作成/背景および事前準備) <背景> • 初期クライアント作成を行ったところ、以前は、自動生成されるカレンダーの名称が、「XXX Calendar」であったのに対し、今回は、「XXX カレンダー」と日本になっている。 • 初期クライアント作成は何をやっているのか気になった。 <事前準備> • ソースは以下手順でeclipseに取り込むことが可能です。 • http://www.adempiere.com/JP/Setup_Development_Environment
コードリーディング(初期クライアント作成/ADempiereソースフォルダ構成)コードリーディング(初期クライアント作成/ADempiereソースフォルダ構成) ソースファイルは以下フォルダ構成に格納。パッケージフォルダ上のソースがコンパイル対象 (?) Base/srcに処理ロジックが実装された主要コードが格納。 <パッケージフォルダ> • base/src • org.adempiere • org.compiere • org.eevolution • glassfishfacet/src • jbossfacet/src • … <通常フォルダ> • adempiere • base • client • data • doc • …
コードリーディング(初期クライアント作成/InitialClientSetup)コードリーディング(初期クライアント作成/InitialClientSetup) バッチ処理のソースは、org.adempiere.process配下に格納。 • base/src • org.adempiere.process • InitialClientSetup.java • バッチプロセスは、一律SrvProcessを継承 • 画面の入力パラメータがメンバー変数として管理され、prepareメソッドでメンバー変数を取得し、doItでバッチ実行 ⇒カレンダーを含むシードデータ作成は、doItに実装されている。
コードリーディング(初期クライアント作成/InitialClientSetup)コードリーディング(初期クライアント作成/InitialClientSetup) InitialClientSetup.javaのdoItは以下流れでの実装となってます。 • 必須項目チェック • クライアントおよびユーザーの重複チェック • City_ID(都市)が入力されている場合はCity_Name(都市名)を上書き • COAの読み取りチェック • セットアップ処理 (Msetup.createClient) <- クライアントの作成 • 会計設定 (Msetup.createAccounting) <- 会計設定 • 出力結果画面表示
コードリーディング(初期クライアント作成/MSetup)コードリーディング(初期クライアント作成/MSetup) カレンダーデータの作成は、Msetup.createAccountingで実装。createAccountingは以下が実装されている。 • カレンダーの作成 (Mcalendar) • 勘定科目エレメントの作成 • 勘定科目の作成 • 会計スキーマの作成 • 会計スキーマエレメントの作成 • デフォルト勘定科目の作成 • GLカテゴリーの作成 • Baseドキュメントタイプの作成
コードリーディング(初期クライアント作成/MCalendar)コードリーディング(初期クライアント作成/MCalendar) Mcalendarは以下となってます。 public MCalendar (MClient client){ super(client.getCtx(), 0, client.get_TrxName());setClientOrg(client);setName(client.getName() + " " + Msg.translate(client.getCtx(), "C_Calendar_ID"));} // MCalendar
コードリーディング(初期クライアント作成/translateメソッド)コードリーディング(初期クライアント作成/translateメソッド) Translateメソッドの実装はいかとなってます。 public static String translate(Properties ctx, String text){ if (text == null || text.length() == 0) return text; String s = (String)ctx.getProperty(text); if (s != null && s.length() > 0) return s; return translate (Env.getAD_Language(ctx), Env.isSOTrx(ctx), text);} // translate
コードリーディング(初期クライアント作成/getAD_Language)コードリーディング(初期クライアント作成/getAD_Language) getAD_Languageの実装はいかとなってます。 public static String getAD_Language (Properties ctx){if (ctx != null){String lang = getContext(ctx, LANGUAGE);if (!Util.isEmpty(lang))return lang;}return Language.getBaseAD_Language();} // getAD_Language
コードリーディング(初期クライアント作成/ctxの取得)コードリーディング(初期クライアント作成/ctxの取得) getAD_Languageは、ctxに依存するが、ctx自体は、Msetupのインスタンスの際に、以下のように取得 • MSetupms = new MSetup(Env.getCtx(), WINDOW_THIS_PROCESS);
コードリーディング(初期クライアント作成/まとめ)コードリーディング(初期クライアント作成/まとめ) • 初期クライアント設定の際には、英語の画面で実行した方がよい? • モデルはcompiereからあまりかわっていない • プロセスのロジックを見る場合には、org.compiere/adempiere.processをあたると、そこから先は、modelに格納されており、util上のクラスが呼び出される、という階層関係にある。 • context上で、セッション情報が格納されており、どのようにセットアップされるのかは、継続調査が必要。
目次 • はじめに • お知らせ • 特別編 • Lightening Talk • コードリーディング/初期クライアント作成 • JUnit入門 • Selenium入門 • オープンプロジェクト • 今後の活動
JUnit入門 • JUnitとは • インストール • テストコードの作成 • テストコードの実行
JUnit入門(JUnitとは) <概要> • Javaで開発された単体テストの自動化フレームワーク • Common Public License <推奨される理由> • 一度作成すれば素早くテスト可能 • テストコードで仕様がわかる • 誰でも同じテストを行える <Junit利用上の課題とその対応> • 仕様変更ごとにテストコードを作り直さなければならない • テスト駆動開発では、仕様がテストコードにて伝えられるため、解消される (?) • テストコードの作成に時間がかかる • ツールによりテストコードを自動生成できる (機能テストという位置づけで見なせば、十分?)
JUnit入門(JUnitのインストール) 以下をインストールする必要がある。 <コンソールでテストする場合> • JUnitのjarファイル <Eclipseでテストする場合> • Eclipseおよび、JUnit plugin (Eclipse Helios以降は標準搭載) • Quick JUnit(テスティングペアがないクラスを通知し、テストクラスを自動生成) • CodePro (テストコードを自動生成) • EclEmma (コードカバレッジをビジュアル表示)
JUnit入門(テストコードの作成) 以下のルールにのっとり作成する必要がある。 • テストクラスはpublicクラスとする • テストメソッドは、org.junit.Testアノテーションを付与したpublicメソッドとする • テストメソッドは、戻り値がvoidであり、引数を持たない • Throuws句は自由に定義可能
JUnit入門(テストコードの作成) 以下流れでテストコードを作成する • テスト対象コードを生成 • Srcと並列にtestコードのソースフォルダを作成 • Junit Test Caseを作成 • テストコードを実装
JUnit入門(テストコードの作成 / サンプルテストコードの作成)
JUnit入門(テストコードの作成/ サンプルソース) package junit.tutorial; public class Calculator { public int multiply(int x, int y){ return x*y; } public float divide(int x, int y){ if(y==0)throw new IllegalArgumentException("divide by zero"); return (float) x /(float) y; } } }
JUnit入門(テストコードの作成 / サンプルテストコード) package junit.tutorial.temp; import static org.hamcrest.CoreMatchers.is; import static org.junit.Assert.*; import org.junit.Test; public class CalculatorTest { @Test public void multipyで3と4の乗算結果が取得できる() { Calculator calc=new Calculator(); intexpected = 12; intactual=calc.multiply(3, 4); assertThat(actual, is(expected)); } @Test public void multipyで5と7の乗算結果が取得できる() { Calculator calc=new Calculator(); intexpected = 35; intactual=calc.multiply(5, 7); assertThat(actual, is(expected)); } @Test (expected=IllegalArgumentException.class) public void divideで5と0のときIllegalArgumentExceptionを送出する() { Calculator calc=new Calculator(); calc.divide(5, 0); } }
JUnit入門(テストコードの作成 / サンプルテストコード) CodeProから、テストコードを自動生成することも可能です。 • CodeProから、ソースを自動生成 (ソースを選択の状態で、右クリック->Code Pro Tools -> Generate Test Caseを選択) • テストコードが自動生成
JUnit入門(テストコードの実行) • Run As -> Junit Testを実行 • 実行結果のOK/NG件数が表示 • EclEmmaを実行 • ソースファイルを見ると、通過パスが緑、未通過パスが赤で表示 • ソースおよびテストケースの実行カバレッジが表示
目次 • はじめに • お知らせ • 特別編 • Lightening Talk • コードリーディング/初期クライアント作成 • JUnit入門 • Selenium入門 • オープンプロジェクト • 今後の活動
Selenium入門 • Seleniumとは • インストール • テストコードの作成 • テストコードの実行
Selenium入門(Seleniumとは) <概要> • Javaで開発されたWebアプリケーションの自動テストツール • Apache License2.0 • Selenium IDE, Client API, RC, Web Driver, Gridから構成される • Jenkins, Grails, Maven, Visual Studio, Drupalとの連携が可能 <Selenium利用のメリット> • 回帰テストの簡易化 • テストの前倒し (開発工程での品質向上) • テストケースの反復実行 • テストケースおよびバグのレポート作成 • CIの実現 等
Selenium入門(Seleniumとは) Selenium2は、以下のモジュールから構成される。 (初代Seleniumから変更が発生してます)
Selenium入門(Seleniumとは) プログラムから、Selenium Web Driverを経由して、テストを制御することもできる。 Webアプリケーション Webブラウザ Selenium Web Driver Test Code (Java, .Net, Ruby Python)
Selenium入門(インストール) Selenium IDEのインストール、実行を以後に記載します • Seleniumのサイトにアクセスし、インストーラをダウンロード • http://seleniumhq.org • インストールが終わると、ツールメニューから、以下のようにSelenium IDEを起動できるようになります。
Selenium入門(テストコードの作成) 処理ステップの情報が記録される。 Assertもしくは、verifyから始まるコマンドで検証ロジックを実装。 画面操作で記録されたものを後から手動編集できる。
Selenium入門(テストコードの作成) ZK Libraryが利用されているADempiere / iDempiereだと、Element IDが同的に変化するため、画面項目の値を検証できない (?)
目次 • はじめに • お知らせ • 特別編 • オープンプロジェクト • 今後の活動 • モクモク会
オープンプロジェクト • 準備の関係で、今回はなし