INTRODUCTION
「Javaを書けばいい」ではなかった
この案件では、 自動車メーカー向けの 設計データ管理システム開発に 参加しました。
ベースとなっていたのは WindchillというPLM製品です。
担当したのは、
・既存機能の改修
・他システムとのデータ連携
・SOAPを利用した連携処理
・JSPを利用したWeb画面開発
・画面および業務ロジックの実装
工程としては、 詳細設計、実装、単体テストを 担当しました。
技術だけを見ると、 JavaのWeb開発です。
でも実際には、 Javaのコードだけ見ていても 何をしているのか分からない。
それが、 Windchill開発に入って 最初に感じたことでした。
01
まず既存の処理を追う
エンハンス開発では、 新しいシステムを 一から作るわけではありません。
すでに動いている機能があり、 その一部を改修していきます。
そのため最初に必要だったのは、
「新しいコードを書くこと」ではなく、
「今あるコードが何をしているのかを理解すること」
でした。
Eclipseでコードを追いながら、
どこから呼ばれているのか、
どのデータを扱っているのか、
どこで画面に表示されるのか、
どこで外部システムと連携するのか。
一つずつ確認していきます。
画面を見る
↓
Javaの処理を見る
↓
呼び出し元を追う
↓
Windchill側の処理を調べる
↓
外部連携を確認する
02
JSP・JavaScript・Javaがつながっている
Web画面側では、 JSPやJavaScriptも使いました。
例えば、
画面に表示されている項目があったとしても、
その値が
どこから来ているのかを
追わなければなりません。
JSP
↓
JavaScript
↓
Java
↓
業務ロジック
↓
Windchillのデータ
逆に、 画面上の変更が どのJava処理につながるのかを 調べることもあります。
つまり、 「JSPを書けば画面ができる」 だけではありません。
その画面の裏側で Windchillのどの情報を扱っているのかまで 考える必要がありました。
03
SOAPによる他システムとのデータ連携
この案件では、 Windchillだけで処理が 完結するわけではありませんでした。
他システムとの データ連携も担当しました。
その中で利用していたのが SOAPです。
Windchill
↓
SOAP
↓
外部システム
↓
データ連携
API連携では、 どのデータを送るのか、 どのような形式なのか、 相手側でどう扱われるのかを 考える必要があります。
つまり、 Windchillだけ理解していても 連携機能は作れません。
システムの境界を越えて、 データがどう流れるのかを見る必要がありました。
04
エンハンス開発で難しかったのは「どこを直すか」
新規開発なら、 自分たちで構成を決められる部分があります。
しかし、 エンハンス開発では すでに存在する仕組みがあります。
そのため、
「ここを追加すればいい」
と考えて実装してしまうと、
既存の機能に影響する可能性があります。
まず既存処理を理解する。
そのうえで、
どこに変更を入れるのかを決める。
すでに動いている Windchillの処理。
既存機能を壊さずに 新しい要件を追加する。
この「どこに手を入れるか」を 考えるところが、 エンハンス開発では 思っていた以上に重要でした。
05
Windchillのデータを理解しないとコードが読めない
開発を進めていくと、 ただJavaの文法を 理解しているだけでは 足りないことが分かってきます。
例えば、 その処理が 部品に関する処理なのか、 設計情報なのか、 構成情報なのか。
そこで、 Windchill上で扱われている データの意味を 少しずつ理解していきました。
このクラスは何を表している?
↓
このデータは何の情報?
↓
どの業務で使われる?
↓
どの画面・処理につながる?
こうやって、 Javaのコードと Windchillの業務データを つなげて理解していきました。
06
「このコードは何をしているのか」が分かるまで
Windchill開発に入った当初は、
Javaのコードがある。
↓
処理が書いてある。
↓
でも、
それが業務上何を意味するのか分からない。
という状態になることがありました。
それを、
コードを見る。
↓
データを見る。
↓
Windchillの機能を調べる。
↓
業務を確認する。
↓
もう一度コードを見る。
という流れで 少しずつ理解していきました。
技術と業務知識がつながったとき、 初めてコードの意味が見えてきました。
FIELD NOTE
Windchill開発で難しかったのは、 Javaそのものではなかった。
最初は、 Java、JSP、JavaScript、 SOAPを覚えれば 開発できると思っていました。
もちろん、 技術知識は必要でした。
でも実際には、
「この処理は何をしているのか」
「このデータは何を意味するのか」
「なぜこの機能が必要なのか」
「既存機能では対応できないのか」
まで理解する必要がありました。
特にWindchillのような パッケージ製品では、 すでに存在している機能や データ構造があります。
その上で 新しい要件を追加する。
「どう作るか」だけではなく、 「今あるものを理解してから作る」 ことの大切さを学んだ案件でした。
SUMMARY
この案件で経験したWindchill開発
そして、 一番大きかったのは Windchillという製品の知識だけではありません。
「既存システムを理解して、 その上に新しい機能を追加する」 という開発の考え方です。
Javaを書く。
画面を作る。
APIで連携する。
その一つ一つの処理が、 製造業の業務や 設計データにつながっている。
そこまで理解できるようになって、 初めてWindchillの開発が 少しずつ分かるようになりました。