LoginSignup
9
6

More than 5 years have passed since last update.

COBOLの開発環境を快適にしよう 1 - バージョン管理と課題管理の改善 -

Last updated at Posted at 2017-08-20

知り合いのCOBOLプログラマからアドバイスを求められた。

そこで、COBOLを知らないなりのアドバイスを書き始める。

ソースコードと課題管理は、プログラム言語によりません。
COBOLでもその部分は同じです。

抱えている課題1: ソースコードのバージョン管理が時代遅れ

  • ソースコードの中に、無効化されたコードがコメント行として残っているために、保守作業が本当に必要な部分を見誤ってしまいやすい。
  • ソースコードが変更されたときの変更内容の要約が書かれない独自のバージョン管理だったり、特定のファイルがいつ改版されたのかを見つけにくいバージョン管理システム。

抱えている課題2:課題管理をExcelベースでしているための不便

  • Excelファイルの差分をみるよいツールがなり。
  • ネットワークドライブにおいてあると、勝手に変更が消されたり、書きたいタイミングにロックがかかっていて書けない。
  • Excelでガントチャートを書くのはやめたい。

選択肢1:git

gitとGithubに関連したサービスでは ソースコードの管理とそれに連動した課題管理に使えるようです。(まだgitは初心者なので詳しくアドバイスができません。)

Webデザイナーになろうとしている主人公が、Gitの使い方を学んでいくという想定で書かれています。そのため、見知らぬコンピュータ言語の例題を見せられてしまうことがありません。

この内容は以下のCodeIQでの連載が元になっているようです。
CodeIQ マンガでわかるGit 第1話「Gitってなあに?」

まず、gitを使えるとどうなるのか理解します。
次に、gitを利用する手順を学びます。
そして、実際にgithubなどにアカウントを作り練習していきます。
git を使える同僚を増やしていくことです。

選択肢2:SVN, Redmineの組み合わせ

 ソースコードの管理と課題管理に別々のソフトウェアを使う。
 例:ソースコードの管理にSVN
 例:課題管理にRedmine

 課題管理にRedmineを使うというのは、別にソフトウェア限る理由はありません。

次のSlideShareはヘルプデスクシステムをRedmineで構築した事例を紹介しています。

以下のRedmine Slides では、オープンソースのプロジェクト管理ソフトウェア Redmine の活用事例のスライドを紹介しています。「アイドルソング制作の工程管理」というスライドもあります。

選択肢3:いまあるシステムを使いやすく

 COBOLの開発環境では、Linux以外のシステムや今までの課題解決システムが使われているはずです。置き換えることは様々な不利益を生じる危険が伴います。選択肢1や選択肢2を失敗しても影響のない範囲で使ってみて、そのような最新の管理がどのような利点を持っているのかを知る範囲で利用してみます。その上で今あるシステムを使いやすくことを考えてみてください。

選択肢1と2とでは選択肢1の方がお勧めです。
選択肢2では、運用に用いる本筋のコードを開発メンバー誰でも変更してしまえるので、採用すべき改変を吟味して採用するスタイルでの運用をしにくい。さらに選択肢1では、ソースコードの改変と、ソースコードの課題管理(開発作業の課題管理と、発生した不具合に対する課題管理の両方)をひとつのgitで完結できるというメリットがあります。

職場に共通の環境として導入する前に、小規模の導入をして、仮に失敗しても問題のない流儀を試してみましょう。

解決する必要のあるチェックポイント

  • ソースコードのバージョン管理システムがあって、更新ログをたどって、差分を表示できること。
  • メールシステムを使っていてもよいが、新たに加わった技術者でも、以前のやり取りをきちんとたどれるシステム
  • 仕様書などの差分が見やすい文書形式と、ソースコードバージョンシステムの組み合わせ。

想定される質問:

Q:「COBOLのソースコードはメインフレーム上にあって、そのOSの環境はTSSなんです。そこでは、Linuxの便利なツールもWindowsのツールも使えないんです。」
A: メインフレーム上ではgitは使えないのはしかたがないことです。でも、ソースコードの管理をするためのLinuxマシンを部署において、そこで管理すればよくなります。
 メインフレームから、そのLinuxマシンとの間でファイルの転送する方法は、部署の運用方針にしたがってください。

Q:「外部のネットワークに接続できるマシンにソースコード全体を置くなんて部署の方針でできないのですけれど。」
A:gitのサーバーを部署内のLinuxマシンに設定しましょう。
それを部署内のネットワークにおいて、外部のネットワークから切り離して運用しましょう。そうすれば、外部のネットワークに接続できるマシンにソースコード全体を置かずにすみます。

とはいっても、自前のサーバーの運営は、サーバーマシンがダウンしたり、バックアップ作業の手間のため進めたくない。
1ヶ月に2時間、サーバーでの作業が発生するならば、あなたの人件費の方が、ホスティングサービス料金よりも高くつくはずだからだ。

Q:「最新のソースがある場所がどこなのかわからなくなってしまうのは困るんです。従来どおりメインフレーム上のコードが常に一番新しくなければ困るんです。」
A:一番新しいのはメインフレーム上に置いておいてもいいんです。そのコピーを部署内のLinuxにコピーしてgitでコピーを管理するのはどうでしょうか。部署内におかれたgitサーバー上でソースコードが管理されていれば、ある版と別な版の中で何が変わったのかが比較しやすくなります。

付記:
COBOLの開発の現場で、「こうやって解決しているよ」という情報がありましたら、ぜひお知らせください。知り合いのCOBOLプログラマに伝えたいと思います。

9
6
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
6