SEやPGたるもの、お客様業務の効率化ばかりを考えるのではなく、自身の仕事の効率化も意識したいものです。

以前は「生産性の高いエンジニアになるには朝昼晩で作業内容を切替えよ」の記事にて、時間帯で取り掛かる作業の質を変えると良いという話をしましたが、今回はプログラミング作業において、効率を高めるためにはソースの流用が大事という話をしていきたいと思います。

現役プログラマーにとっては当たり前のことかもしれませんが、新人プログラマーの参考程度になれば幸いです。

ソースは新規で書くよりも、流用したほうが作業効率が高くなる

プログラムの改修案件では、既にどこかの誰かが書いたであろうソースが、完成形として存在しています。バグ対応なり機能追加なりにしても、完成されたソースの中から対応箇所を見つけて、影響範囲を確認し、修正して終わりです。

しかし改修ではなく新規プログラムを作っていく場合は、ゼロの状態からコーディングしていかなければなりません。改修案件よりも、非常に多くの手間と時間を要します。

ですが、できることなら新規でのプログラミングも、効率よく作業し、より早くコーディングを終わらせられることが理想です。そこでイチからゴリゴリとコーディングしていくのではなく、ソースを流用しながらコーディングしていく手法をおすすめします。

使えるソースは使いまわしで利用

プログラミングとは、基本構文はそれほど多いわけでなく、基本構文の組み合わせで処理ロジックを組み立てていくことが、プログラミングの本質となります。だから新規でのプログラムだとしても、似たような処理ロジックは、過去のシステムやどこか別モジュールで既に使われていたりするものです。

そのため似たような処理が行われるソースコードを流用して、そこからカスタマイズしていき、新規プログラムの機能を満たしていくほうが、圧倒的に早く終わることも往々にしてあります。

仕事となれば、自分の力でプログラムを書ききることよりも、いかに早く実装できるかが大事です。使えるソースはどんどん使いまわしていきましょう。

規模の大きいプログラムは流用ソースのツギハギで対応

プログラムの規模も大きくなり、ステップ数も膨大になってくると、どこかのソースコードをまるっとそのまま流用するにも限界が出てきます。

ですが規模が大きくなっても考え方は同じで、部分部分の処理を見ていくと、必ず他ソースから流用できるような箇所は存在するはずです。ですからさまざまな流用ソースをツギハギ状にして、1本のプログラムを組み立てていくのです。

パターンごとに部品をコレクションしておく

プログラマーとして多くのソースコードを見てきたら、処理パターンごとに、流用のもととなるモジュールをいくつか集めておくとよいでしょう。

例えば「入力ボックスの入力チェックをおこなうモジュール」や「名前をつけて保存を行うためのダイアログボックスを表示させるためのモジュール」など。

そうした自分なりのソースコレクションのようなものを管理しておくと、さまざまなプログラミングの場面で多用することができ、作業効率を高めてくれます。

最低限ソースの意味が理解できるレベルの言語知識は必要

他ソースを流用するといっても、ただコピペするだけでなく、不具合を生まないように、カスタマイズや修正をかけていく必要はあります。だから最低限ソースコードの意味が理解できるレベルの、プログラム言語の知識は必要になります。もし言語知識が足りなければ、バグばかり発生させてしまい、逆に工数が増加してしまう恐れも出てきます。

ソースの使い回しをするにも、どのような処理で実装すれば分からないから流用するのではなく「イチからプログラミングをすることも可能だけど、作業効率を高めるために流用している」ということが大前提であることを忘れないようにしてください。

 

おわりに

プログラミングの効率を高めるためには、過去のソースや別システムのソースなど、どんどん使いまわせるものは使いまわしていきましょう。そして使えるものは、自分自身のモジュールコレクションのような形で管理しておくことで、ますます作業効率を高めることができます。

新人プログラマーのころは、他ソースを流用しようにも言語そのものが理解できないため、なかなか難しいかもしれませんが、プログラム言語を理解できるようになれば、他ソースを流用しながらプログラミングしていくのは非常に有用です。

流用するということは、決して悪いことではなく、プログラミングスピードを早めるためのテクニックなのです。

 



【X(旧twitter)でも情報発信中】

Xを最近始めたので、フォローしてもらえると嬉しいです(エンジニア界隈の方はフォローバックさせていただきます)! システム開発に関することや、最新テクノロジーのことなど、世のエンジニアにとって有用な情報を発信してます!

"X" @TECH_KEYSYS