そごうソフトウェア研究所

SOA、開発プロセス、ITアーキテクチャなどについて書いています。Twitterやってます@rsogo

SQL DeveloperからSQL Serverにつなぐ

SQL DeveloperはOracleが出しているDatabaseを操作するためのGUIのクライアントツールです。Oracle SQL Developerから入手できます。

接続先のデータベースがOracle DBの場合はそのまま使えるけど、それ以外で最初は新規の接続を選択しても、Oracleというタブしかないので準備が必要です。 MicrosoftSQL Serverに接続する手順を書きます。

ドライバーの設定

Microsoftのドライバを使うのでは無くて、オープンソースjTDSを使うみたいです。

動作確認はjtds-1.3.1-dist.zipを使っています。

Zipを解凍した後、SQL DeveloperのPreferenceからjtds-1.3.1.jarのパスを設定します。

f:id:begirama:20140405074850p:plain

接続設定

ドライバを入れる前までは無かったSQL Serverタブが表示されます。

f:id:begirama:20140405072632p:plain

上手く接続できれば、GUIでがんがん操作できるので便利です。

f:id:begirama:20140405074445p:plain

MySQL

MySQLの場合も同様です。MySQLJDBCトライバーをSQL Developerから参照することで、MySQLのタブが表示されます。

MySQLのドライバーはこーゆーやつ。 mysql-connector-java-5.1.6.jar

参照資料

http://www.oracle.com/technetwork/jp/developer-tools/sql-developer/thirdparty-095608.html その他のデータベースに接続するために必要なドライバに付いても書かれています。

WebLogic Server 12c上でHibernateを使う

WebLogicHibernateを使った時にはまったことをメモしておきます。

利用している環境はWebLogic Server 12c。

発生したエラーはClassNotFound。 org.hibernate.QueryException: ClassNotFoundException: org.hibernate.hql.ast.HqlToken [from 自分で作ったクラス]

解決方法はデプロイしようとしているのがwarファイルだったので、weblogic.xmlを開いてWEB-INF/lib以下を優先するように設定。

1.WEB-INF/lib以下全部を優先する場合

<weblogic-web-app>
(略)
  <container-descriptor>
    <prefer-web-inf-classes>true</prefer-web-inf-classes>
  </container-descriptor>
(略)
</weblogic-web-app>

2.特定のjarのみWEB-INF/lib以下を優先する場合 今回使っているのはantlr-2.7.6.jarでした。

<?xml version="1.0" encoding="UTF-8"?>
<weblogic-web-app>
(略)
    <container-descriptor>
        <prefer-web-inf-classes>false</prefer-web-inf-classes>
        <prefer-application-packages>
            <package-name>antlr.*</package-name>
        </prefer-application-packages>
    </container-descriptor>
(略)
</weblogic-web-app>

なるべくJava EEの標準ライブラリでやった方がこの手の問題は絶対楽だな。

参考サイト

https://blogs.oracle.com/WebLogicServer/entry/resolving_conflicts_with_classloaders http://stackoverflow.com/questions/2702266/classnotfoundexception-hqltoken-when-running-in-weblogic http://docs.oracle.com/cd/E24329_01/web.1211/e24368/classloading.htm#i1098467 Log4jantlrWebLogicのマニュアルのサンプルに載るくらい皆はまってるってことだな。

GitHubメモ

会社でやっているプロジェクトは複数の会社で構成されることが多く、GitHubを使ってます。 まだそれほど大規模な使い方では無いのでPrivate Projectで運用しています。

Issue管理や、Wikiも使用してコミュニケーションしています。 設計書はお客さんに提出する関係で、Officeで作っているけどこれもWikiに移行していけたらいいな、と思ってますが表や、図の書きやすさはまだまだMS Officeの方が良い。

Wikiにはプロジェクトに入ったら知っておいて欲しいルールや、環境の情報、Tipsなんかを書いていっています。

このエントリでは、GitHubを使う時のメモを書いていっています。

Step 1. リポジトリのクローン

GitHub上のプロジェクトをローカルに取得する

$ git clone https://github.com/AAA/BBB.git BBB/

URLの部分はGitHubリポジトリ画面の右下から持ってくることができます。 f:id:begirama:20140214164753p:plain

Step 2. ファイルの追加

$ vi test.txt  
$ ls  
README.md   test.txt  
$ git add test.txt   

Step 3. ローカルへのコミット

$ git commit -m "テスト用のファイルを追加"  
[master 2588d93] テスト用のファイルを追加  
 1 file changed, 1 insertion(+)  
 create mode 100644 test.txt  

Step 4. GitHubへのPush

$ git push
warning: push.default is unset; its implicit value is changing in
Git 2.0 from 'matching' to 'simple'. To squelch this message
and maintain the current behavior after the default changes, use:

  git config --global push.default matching

To squelch this message and adopt the new behavior now, use:

  git config --global push.default simple

See 'git help config' and search for 'push.default' for further information.
(the 'simple' mode was introduced in Git 1.7.11. Use the similar mode
'current' instead of 'simple' if you sometimes use older versions of Git)

Counting objects: 4, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 369 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To https://github.com/AAA/BBB.git
   1e9e805..2588d93  master -> master

これで、GitHub上に先ほどのファイルが更新される。

f:id:begirama:20140215110747p:plain

push.defaultが定義されていないという警告がでたので、設定する。

git config --global push.default simple

JavaのpropertiesのUTF8、Native変換

いつも忘れてしまう。

符号化されているpropertiesファイルをもらったら、こちらで人が読めるように変換。

native2ascii -reverse MessagesBundle_ja.properties MessagesBundle_ja_native.properties


日本語の修正が終わったら、符号化する。

native2ascii MessagesBundle_ja_native.properties MessagesBundle_ja.properties

Oracleの公式マニュアルはこちら。
http://docs.oracle.com/javase/7/docs/technotes/tools/solaris/native2ascii.html

AppPotの概要紹介スライドを公開しました

AppPotの概要を紹介した資料を公開しました。
ここ最近、AppPotをご紹介するミーティングを良くやっていますが、
そこで使っている資料です。

AppPotの機能や、アーキテクチャの概要もあります。

モバイルアプリ向けプラットフォームAppPotをリリースしました

僕がNCDCの中でプロダクトオーナーを担当しているAppPotというソフトウェアが製品化されました。

f:id:begirama:20131018124306p:plain

AppPotはいわゆるMBaaSといわれるソフトウェアに含まれる下記のような機能を企業内で使い易いようにしたものです。

  • デバイス・サーバー間のデータ同期
  • Push通知
  • アプリを使用するユーザーの管理と認証

などなど


企業でこれまでPCを使ってやっていたような業務をタブレットを使ってどこでもできるようにするためには、既存のシステムとの連携が必須になります。

そこで、AppPotでは他システムと連携するためのアダプタを用意しています。


詳しくは製品サイトを見て下さい。
http://app-pot.jp/


現在、クラウド上でだれでも試せるトライアル環境を準備中です。できあがったら、使ってみてフィードバック下さい。


製品サイトの方では、誰にでも分かりやすいようにという制約がありますが、
個人のブログの中では内部のアーキテクチャや、プロジェクトの話しみたいなテクニカルな内容も書いていきたいなぁ。

日本の企業でのMEAP(Mobile Enterprise Application Platform)のニーズとは?

先日はモバイルアプリ向けプラットフォーム、MEAP(Mobile Enterprise Application Platform)とは何なのか。というタイトルでMEAPの概要を書きました。

今回は、日本のマーケットでのMEAPのニーズについて書きたいと思います。

f:id:begirama:20090605005119j:plain

企業マーケットにおいてこれまではモバイル向けのアプリは
さくっと低コスト、短期間で作成したいというニーズが高い状態でした。
理由としてはこのようなものがあったと思います。

  • 他のシステムから独立していることが多い
  • 既存の業務システムに比べて機能が少ない

例えば、カタログやデモを見せるだけのアプリや、
入力された情報に対してアプリの中で完結して結果を返すだけのアプリが該当します。


ところが、近年、スマートデバイスを一通り導入した企業では、
営業部門などの利用部門を中心にもっとコアな業務で
スマートデバイスでやりたいという要望があがっています。


その傾向を、MEAPの3つのメリットごとに整理してみると、

アプリに対する他システム連携のニーズ

既存の社内システムのデータをスマートデバイスから見る、
スマートデバイスから入力したデータを社内のシステムに
流し込むには、データの連係が必要になります。


社内システムはWebサービスのインターフェイスを持っているものもあれば、
ERPパッケージや、ホストのようなプロプライエタリなインターフェイスしか
ないものも存在するため、個別に開発するのは大変です。


また、社内システムに接続することから、これまで以上の
セキュリティが求められます。


共通機能を提供するニーズ

企業が持っているアプリが増えてきています。
ある企業ではプロダクトラインごとにアプリがあるので、
数十個のアプリが存在します。


これまでのスマートデバイスの導入期は、標準化よりもスピードが求められますし、
ベストプラクティスも無い状態でした。


しかし、アプリの数が増えてきて、導入期から展開期に入ると、
同じような機能や、画面展開の共通化をしたくなってきます。

コストも下げたい。

そのような時にモバイルアプリに必要な共通機能を標準化して
提供するニーズは非常に高いと思います。


また、認証や、データの暗号化を共通で提供することで、
個々のアプリ開発プロジェクトに品質が依存せず、
一定のセキュリティが保たれるというメリットもあります。
これもセキュリティに関するルールが厳しい日本の企業のニーズにあっています。


マルチデバイス対応のニーズ

こちらはどうでしょうか?
日本の場合は端末を社員に配ることが多く、個人の端末から利用を
許可している企業もメールと、Webブラウザからのアクセスだけだったりするので、
社内向けのアプリではあまりマルチデバイス対応のニーズは多くないように思います。



ということで、他システム連携、モバイルアプリ向けの共通機能の
提供という点ではMEAPのニーズは今後、増えてくると思います。

後は、クラウドベースのBaaSを使うのか、社内にMEAPを構えるのか、
どのタイミングで投資をするのかとうのが検討ポイントでしょう。