2021年9月22日水曜日

プログラミング言語「Go」の魅力とは? 「Goで“脱COBOL”」の成功者が語る

 2021年6月18日


企業がプログラミング言語「Go」を利用するメリットは何か。メインフレームの「COBOL」プログラムからGoプログラムへの移行を成功させた専門家が、自身の経験を基に解説する。

関連キーワード

ログ管理 | 運用管理 | プログラミング

 ネットワークエンジニアがプログラミング言語の習得を検討するときは、「Perl」や「Python」が検討対象になりやすい。Perlには実績が、Pythonには勢いがあるからだ。これらに並ぶ魅力的な選択肢に「Go」がある。

 企業は、クラウドインフラやサーバレスシステムでのソフトウェア運用に取り組んでいる。ネットワーク運用チームは膨大なデータを抱えることになった半面、それらを適切に分析できれば、ネットワーク運用に関する有益な知見が得られる。

 「そこでGoが強みを発揮する」と、Barracuda Networksでシニアソフトウェアエンジニアを務めるアダム・ウッドベック氏は語る。Goは、大規模なネットワークソフトウェア開発で直面した問題を解決するために、Googleが生み出したプログラミング言語だ。大量のデータをフィルタリングし、有益な情報を抽出するのに適している。

 Goの特徴は「複数の演算処理を一度に実行できること」だとウッドベック氏は説明する。演算を同時に実行できる並行性により、エンジニアはシステムのパワーをフルに活用できる。Goは、比較的学習しやすい言語でもあると、同氏は付け加える。チームはGoの習得によって変更を迅速に実装できるようになるという。

 ウッドベック氏は著書『Network Programming with Go』の中で、ネットワークやソフトウェア分野のエンジニアがGoをどのように活用できるのかを例示している。同氏が示すGoの用途は、ロギング(ログの記録と分析)やメトリクス(指標)管理、ルーティング、アプリケーション開発などだ。以下に、Goの活用に関する同氏の話をまとめた。

―― Goのお気に入りの使い方はどのようなものですか。

ウッドベック氏 私はGoの並行性が気に入っている。複数のことを一度に実行できる点だ。ただし、これはGoの厄介な側面になりがちでもある。並行性を生かそうとすると、プロセスの競合やデッドロック(複数のプロセスが互いの処理終了を待って処理が進まなくなる状態)に陥りやすいからだ。Goが提供するツールを使えば、こうした問題を回避し、高いパフォーマンスを得ることができる。

メインフレームの「COBOL」を「Go」に変換

ウッドベック氏 私は、多くのクライアントと同時にやりとりするサーバサイドアプリケーションの開発にGoを好んで使う。こうしたアプリケーションは、多くのメッセージを受け渡したり、メッセージに関する一連の操作をするときに、多くの処理が必要になったりするからだ。

 私はある信用組合で働いており、われわれは別の信用組合と合併しようとしていた。その合併相手の信用組合は、プログラミング言語「COBOL」で開発したプログラムをメインフレームで稼働させていた。この信用金庫は、COBOLの古いコピーブック(COBOLでデータを扱うためのファイル)で全てのデータを管理していた。このコピーブックが対象とするデータはバイナリデータだ。

 そこで同僚と私は、こうした古いデータやプログラムを刷新するためにGoを学ぼうと決めた。これらのコピーブックを対象としたプログラム生成機能を利用して、Goプログラムを生成した。これによりコピーブックのバイナリデータをデータベースに取り込み、有効利用できるようになった。

 このプロジェクトは、Goが合併に際するシステム統合の助けになるのか、数十万ドルのコストを節約できるのかを検討する試験的なものだった。結果的には成功を収めた。この成功はGoのパワーを見せつけると同時に、Goを習得して生産性を高めることが、いかに簡単かを実証した。

0 コメント:

コメントを投稿