Appresso Engineer Blog

アプレッソのエンジニアが書く技術ブログです。

スクリプト開発時に気をつけるべき3つのポイント

株式会社メディアフォース*1の齊藤です。

本記事は アプレッソ Advent Calendar 2015 の 16 日目の記事です。

qiita.com

本日は EAI 製品導入ベンダとしての経験から、DataSpider Servistaを使ったスクリプト開発のコツをでお話しします*2

はじめに

DataSpider Servista はとても優れた製品です。 データベースやWebサービスに少し理解のある方ならばプログラミング技術がなくとも、短期間で連携処理が構築できます。 これは、開発 - 試験 - リリースを短期間で反復するアジャイル開発にとても向いています*3。 また、アイコンベースで開発するため、エラーの発生箇所が特定しやすく、修正も比較的容易です。

一方で、1つのスクリプト内にアイコンが多くなり、フローが辿りにくくなったり、処理を追加するにもどこを直したら良いかわからなくなった経験のある方は多いのではないでしょうか。  

何がなんだかわからなくなりつつある例

f:id:mf_sol_eai:20151211180341p:plain

こうなってしまうとメンテナンスが非常に大変で、引き継ぐのも一苦労になります。 例えば、エラーメールのメッセージを変更したいと思ったらメール送信アイコン全てを直さなければならず、とても面倒ですね。

DataSpider Servista では、経験上 一度試しに作ってみたスクリプトをそのまま拡張する ところから、スクリプトが無尽蔵に大きくなる傾向にあります。

スッキリさっぱりしたスクリプト例

f:id:mf_sol_eai:20151211180337p:plain

だいぶ見やすくなったと思います。スッキリしたスクリプトにはメリットが多々あります。

例えば

  • 一箇所修正すればすべてに適用される。
  • 追加開発時には連携部だけ開発できる。
  • 見やすいのでメンテナンスしやすい

などなど。 是非とも、スッキリさっぱりスクリプティングを目指していきましょう!

★★★以下、開発手法的な内容になりますので、以下に該当する方は 当社 までご連絡を★★★

  • 今現在ごちゃごちゃしておりスッキリさせたい
  • これからスッキリと DataSpider Servista を導入したい
  • 細かい開発手法はいいからとりあえずスッキリしたい
  • 欲しいものはあるけど作り方がわからない

どうやって開発すればいいの?

スッキリさっぱりスクリプティングのポイントはザックリと3つです。

  1. 重複する処理は作らない
  2. 限定的な役割をもたせる
  3. 個別処理はパッケージ分離する

重複する処理は作らない

先ほどの例では、メール送信アイコンがいくつも置いてありましたね。 メール送信アイコンを1つにすることでだいぶスッキリします。 また、メッセージを変えたい場合も一度の修正で全て直って楽になりますね。

限定的な役割をもたせる

先ほどの例では、1つのスクリプトに以下のような役割がありました。

  • 開始時にメッセージを出すなど初期処理
  • パラメータによって実行内容を変えるコントロール処理
  • 実際にシステムと連携を行う個別連携処理
  • エラー発生時にメールを送信するなどの異常処理
  • 例にはありませんが、実際には終了ログを出すなどの終了処理もあるかも知れません。

コントロールと個別連携処理、個別連携処理内での異常処理など様々な役割を持っていました。 スクリプトの役割を限定させ、分離することで、さっぱりしました。

個別処理はパッケージ分離する

スッキリさっぱりしたスクリプト例では、「private*4」というフォルダがあります。 DataSpider Servista では、スクリプトに対してのアクセス修飾子*5をつけることは出来ませんが、開発規約*6などでアクセス可能領域を明言しておくことでスクリプトの呼び出しを制限しておくと良いです。

最後に

設計 - 開発 - 試験 - リリースを順に行う従来型ウォーターフォール手法の設計方法は計画的設計、 アジャイル開発などで用いられるエクストリーム・プログラミングの設計方法は進化的設計と呼ばれることもあります。

計画的設計、進化的設計双方を効果的に用いることで、DataSpider Servista にマッチした堅牢性と柔軟性を合わせ持った設計が出来ます。

保守性を考慮した設計をすることで DataSpider Servista はより一層、使いやすい製品となります。

次回、運用編!乞うご期待

*1:当社はSI事業を主としていますが、その中でも当事業部は DataSpider 製品を主軸としたEAI、EDIのSIを展開しています。

*2:続きはWebで

*3:機能そのものは既に担保されてるのも良いですよね

*4:今回の場合、同じプロジェクト内からしか呼び出せないという意味で利用しています。

*5:privateなどをアクセス修飾子と呼びます。

*6:コーディング規約、命名規約は非常に重要です!