プログラミング講座

プログラミング上達テクニックを特別公開!【誰でも実践できるノウハウ】

仕事でプログラム作成が必要な方、趣味で日曜プログラムを作成している方など、プログラミングを行う理由は様々ですが、日々思っていることは誰もが同じではないでしょうか。

できるだけ簡単で、バグが少なく、そして高速に動作するプログラムを作成しようと考えているはずです。

ところが、実際にはうまくいかないことが多いのではないでしょうか。

仕様変更や機能追加でプログラムはスパゲティ状態になり、原因不明のバグに悩まされ、データが増えると途端に処理速度が低下してしまう。

そんな経験を重ね、仕事が嫌になったり、途中であきらめてしまうこともあるでしょう。

しかし、ちょっとしたテクニックを使うことで、日々のプログラム作成をもっと楽にすることができます。

ここでは、誰もが簡単に実践できるプログラミングのノウハウを紹介します。

プログラミング上達テクニック①-大事なのは可読性

プログラムは、コンピュータに処理してほしいことを伝えるための言わば指示書のようなものです。

その指示書はコンパイラによってコンピュータが理解できる言語に翻訳され、実行されます。

しかし、それは同時に、プログラマが何の処理をしているのかを理解するためのドキュメントでもあります。

プログラマがベテランであっても初心者であっても、読めば何の処理を行っているのか理解できることが望ましいと言えます。

そのためには何に注意してプログラムを記述すればよいでしょうか。

そこには二つのキーワードがあります。

まずは「簡潔性」です。すなわち、プログラムはできるだけ短く、単純にするということです。

そしてもう一つが「明瞭性」。プログラムは誰にでも分かりやすく記述されていなければなりません。

この二つの条件を満たすことで、プログラムの「可読性」は向上します。

以下に説明するノウハウは全て「可読性」の向上を目指すという目的を持っていることをまず理解しましょう。

プログラミング上達テクニック②-コメントは最小限に

大抵の言語は「コメント」を付ける機能があります。コメントは、プログラムの可読性を向上させるための必須アイテムですが、多く付けすぎるとプログラムの流れが見づらくなり、かえって可読性を落としてしまいます。

特に初心者が陥りやすいのが、プログラムを見れば分かることをコメントに書いてしまうということ。処理の流れをコメントに書く必要はありません。

よくある例として、if 文のコメントに「・・・ならば処理を行う」と書く場合がありますが、これは不要です。

コメントは、関数やメソッドの先頭で処理内容を説明したり、変数名に対して補助的に付けるくらいで十分です。

もし、分かりづらいプログラムに対して補助的に書きたいと思ったら、コメントを付ける前にプログラムをもっと分かりやすくできないか検討しましょう。

また、プログラム変更の作業で修正前のコードをコメントアウトして残すやり方が昔はよく見かけられましたが、今はバージョン管理ツールというものがあるので差分のチェックが簡単にできるようになりました。

この習慣をまだ残されている方は、可読性が極端に悪くなるので止めましょう。

プログラミング上達テクニック③-慣用句を使う

慣用句とは決まり文句のようなものです。例えば、ループ文で使う for, while や、条件分岐の if 文などは頻繁に使うことになるので、書式や初期値などをあらかじめ決めておきましょう。

初期値は 0 と 1 のどちらを使うのか、終了条件は “<” と “<=” のどちらを使うのかなど、ほとんどの場合は決まった書き方で統一することができるはずです。

毎回、悩む必要もなくなり、生産性も向上します。

うれしいことに、ほとんどの言語は C 言語の書式を継承しています。

慣用句が頭の中に揃っていれば、ほとんどの言語でそれを使い回すこともできるようになるでしょう。

プログラミング上達テクニック③-機能を分割しよう

初心者プログラムによく見かけるのが、すべての処理を一つの関数(例えば main の中)に全部書いてしまうというもの。

一つの関数が長いと、可読性は一気に下がります。

一つの機能に一つの関数・メソッドが基本です。

どうやって分割すればいいでしょうか。

関数・メソッドは、あるデータを入力して別のデータを出力するというのが基本的な流れです(入力や出力がない場合もあります)。

まずは、どんなデータを渡して、どんなデータを出力したいのかをチェックしましょう。

入力データから一発で出力データが得られるなら関数・メソッドは一つで足りるでしょう。

しかし、通常はいくつかの処理を経て最終結果が得られるはずです。

その中間データが分かれば、自ずと関数・メソッドの種類も決まります。

機能を分割すると、それぞれの関数用にテスト・ルーチンを作ることも可能になります。そうすると、一気にデバッグの効率が向上するでしょう。

プログラミング上達テクニック④-最適化は最後までしない

プログラムを最適化して速度を向上させようと努力する方は多いと思います。

特に速度に大きな不満がなければ、可読性を犠牲にしてまで最適化作業を行うことは止めましょう。

本当に必要になったら、アルゴリズム自体を見直さなければならない時期にあることになります。たいていは、最適化だけで満足できる速度にはならないからです。

その場合は、さっさと別のアルゴリズムを検討し、プログラムを作り直した方が効率よく作業できます。

処理速度を改善する場合、大切なのはデータ量に対する処理速度の増加量です。

絶対的な尺度で最適化をしても無意味です。

線形や対数で増加するようなアルゴリズムがあれば、それを採用しましょう。

指数関数的な増加をするアルゴリズムは、本当にそれ以外に手がない場合を除いて採用しないようにしましょう。

プログラミング上達テクニックを解説-まとめ

以上、すぐに実践可能で大きな効果があるノウハウについて紹介してきましたが、重要なのは「可読性」であることをもう一度ここで述べておきます。

現代のコンピュータは、普通の処理であれば瞬時に計算できるくらいに高速です。

そして、コンパイラによる最適化も非常に強力なので、プログラムの可読性を犠牲にしてまで最適化を行う必要性は現代ではほとんど無いでしょう。

他人が読んでも(未来の自分も言わば他人と同じです)容易に理解できるようなプログラムの作成を心がければ、生産性が向上するようになるでしょう。