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

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

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

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

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

### **抱えている課題２：課題管理をExcelベースでしているための不便**
- Excelファイルの差分をみるよいツールがなり。
- ネットワークドライブにおいてあると、勝手に変更が消されたり、書きたいタイミングにロックがかかっていて書けない。
- Excelでガントチャートを書くのはやめたい。



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

- [わかばちゃんと学ぶ Git使い方入門〈GitHub、Bitbucket、SourceTree〉](https://www.amazon.co.jp/%E3%82%8F%E3%81%8B%E3%81%B0%E3%81%A1%E3%82%83%E3%82%93%E3%81%A8%E5%AD%A6%E3%81%B6-Git%E4%BD%BF%E3%81%84%E6%96%B9%E5%85%A5%E9%96%80-GitHub-Bitbucket-SourceTree-%E6%B9%8A%E5%B7%9D-%E3%81%82%E3%81%84/dp/4863542178/ref=sr_1_1?s=books&ie=UTF8&qid=1503231606&sr=1-1&keywords=git)

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

この内容は以下のCodeIQでの連載が元になっているようです。
 CodeIQ [マンガでわかるGit 第1話「Gitってなあに？」](https://codeiq.jp/magazine/2016/05/41205/)

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



### 選択肢２：SVN, Redmineの組み合わせ
　ソースコードの管理と課題管理に別々のソフトウェアを使う。
　例：ソースコードの管理にSVN
　例：課題管理にRedmine

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

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


- [Redmineを使ったヘルプデスクシステムでサポート業務を効率化](https://www.slideshare.net/g_maeda/redmine-58804869)

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

- Redmine Slides [利用事例・運用事例](http://slides.redmine.jp/slides/case/)



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


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



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


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

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


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

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

- [自分専用の git サーバーを作ろう](https://jp.linux.com/news/linuxcom-exclusive/429198-lco2015050701)

- [自前のサーバーにGitリポジトリを作成してプッシュでサイト更新する](http://qiita.com/laineus/items/d61e004545ef0ef0b004)


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

- [GitHubのようなgitホスティングサービス5つを比較してみた。Part１ — GitHub](http://bitwave.showcase-tv.com/git%E3%83%9B%E3%82%B9%E3%83%86%E3%82%A3%E3%83%B3%E3%82%B0%E3%82%B5%E3%83%BC%E3%83%93%E3%82%B9%E6%AF%94%E8%BC%83part%EF%BC%91/)
- [Gitのホスティングサービス大手5つの特徴まとめ](http://kumaweb-d.com/service/git-hosting-services/)

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


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