そんな疑問に回答します。
本記事でわかることは以下の通りです。
- プログラミングのソースコードとは?
- プログラミングの力量はソースコードを見たらわかること
- プログラミングがうまい人に共通する特徴
- プログラミングがヘタクソな人に共通する特徴
本記事を書いている僕は、歴10年以上の現役エンジニアです。
これまでの業務経験でさまざまなシステム開発プロジェクトに携わってきました。
自分のソースコードはもちろんですが、新人教育をしたり、既存ソースの改修などで、これまで数多くのソースコードを見てきました。
そんな僕が思うプログラミングのうまさについて、経験を交えてお伝えしていきます。
ポイント
「プログラミングスキルをなるべく早く身につけたい」
「実務でも通用するレベルまでスキルアップしたい」
そんな方はプログラミングスクールに通うのがオススメです。
どのスクールを選べばいいかわからない方はこちらの記事をご覧ください。
Table of Contents
プログラミングのソースコードとは?
プログラミングのソースコードとは、まとめると以下の通りです。
ソースコードとは?
- ソースコードとは、コンピュータに命令を与える文字列のことである
- ソースコードとは、プログラミング言語で記述されているものである
- ソースコードは、プログラムを実行するために必要なものである
- ソースコードは、記述するプログラミング言語ごとにルールがある
それぞれについて詳しく解説していきます。
ソースコードとは何か?
ソースコードとは、コンピュータに命令を与える文字列のことを指します。
システム開発の現場では、略して「ソース」や「コード」と呼ばれることが多いものです。
ソースコードは基本的にプログラミング言語で記述されるもので、記載されたファイルはテキスト形式になります。
コンピュータがプログラムを実行するために用意されているので、知見の無い人が見てもどんな内容なのか把握できません。
ソースコードの役割とは何か?
ソースコードは、プログラムの実現に必要不可欠な役割を果たしています。
プログラムが動くためには、コンピュータが理解できる機械語で記述されたバイナリコードが必要です。
人間が理解できるソースコードで記述したテキストファイルを、コンパイラを使って機械語に変換してプログラムが動くという流れです。
ソースコードは、プログラムを記述する上での設計~開発~保守のすべての工程で必要なものです。
プログラムの構造や動作の詳細な説明、処理の流れ、アルゴリズム、データ構造、変数の定義などがソースコードには含まれます。
また、ソースコードを分析することでプログラムの問題点を特定して、改善することまで可能です。
ここまでの解説を見ていただければわかる通り、ソースコードはプログラミングにおいて極めて重要な役割を担っています。
ソースコードの記述ルール
ソースコードの記述ルールは、プログラミング言語によって異なります。
まったく同じルールになることはありませんが、一般的に以下のような記述ルールが存在します。
ソースコードの記述ルール
- インデントを正しく行う
- 変数や関数名は意味のあるものにする
- コメントを適宜挿入し、処理の概要を説明する
- 複数行に渡るコードは、適度に改行を挿入する
- 条件分岐やループなどの構文を使う場合、括弧(カッコ)の対応に注意する
- 変数の型は明示的に宣言する
- 変数名は命名規則に従う(先頭は小文字、単語間には大文字を使うなど)
例えば、JavaScriptでの記述ルールの一部を以下に示します。
// インデントはスペース2つで統一する
function testFunction(name) {
const message = 'Hello, ' + name + '!'; // 変数名はキャメルケースで命名
console.log(message); // 処理の説明をコメントで明確にする
}
// ループ処理は全体を括弧で囲む
for (let i = 0; i < 10; i++) {
if (i % 2 === 0) {
console.log(i + ' is even.'); // 改行を適宜挿入する
} else {
console.log(i + ' is odd.');
}
}
【真実】プログラミングの技量はソースコード見たらすぐわかる件
プログラミングの技量は書いたソースコードを見ればすぐにわかります。
システム開発って、やりたいことは1つなんですけど、それを実現するための方法(ソースの書き方)は無数にあるんです。
パズルのような完全な正解があるわけではないんですよね。
単純な技術力もそうですが、気づかいや思いやりまでソースコードには込められています。
技量の高いプログラマーは、シンプルでわかりやすく、かつ効率的にコードを書くことができます。
また、命名規則やコメントの使い方、インデント、処理の分割など、読みやすさや保守性を向上させるために技術を使いこなします。
逆に、技量の低いプログラマーは、同じ処理を複雑に書いたり、変数名やコメントがわかりづらかったり・・・。
そのため、ソースコードを読むだけで、そのプログラマーの技量を判断することはけっこう簡単にできるのです。
しかし、技量を判断する際はあくまでも参考程度にとどめるが大事です。
一緒にプロジェクトを進めるという観点では、人柄や経験なども考慮して総合的に判断するのがオススメですよ。
プログラミングがうまい人に共通する3つの特徴
プログラミングがうまい人の特徴は以下の通りです。
うまい人の特徴
- ソースコードの共通化がうまい
- 適切なコメント量が書ける
- 変数名・メソッド名を見ただけで内容がわかる
1.ソースコードの共通化がうまい
できる人ほど関数(メソッド)化、つまり処理の共通化・統一化がうまいです。
どこからどこまでを関数にして、どこを関数にしないかの基準が明確にある人は、あとから読んでもすごくわかりやすくなっています。
関数化がちゃんとできていると、処理の流れを追うのがスムーズにできるんですよね。
こういうことができる人は、性格も気が利いて人当たりの良い人なんだろうなというのがわかっちゃいます。
2.適切なコメント量が書ける
ソースコードは通常、コメントで適度に内容を補足しますが、その補足のコメント量が適切な人は「この人できるな!」と感じます。
”適切”というのが正解がない分、感じる人の好みにも寄るところは否めませんが、過度に多すぎたり、逆に少なすぎると本当に読みにくくなります。
「ここは補足が必要そうだな」という感度が高い人は、地味なポイントですがかなり大切です。
3.変数名・メソッド名を見ただけで内容がわかる
変数やメソッドには名前を付ける必要がありますが、名付け方にその人のセンスがあらわれます。
プログラミングがうまい人は、変数名・メソッド名を見たらどんな処理がされているかがなんとなくわかります。
「〇〇を判定するのかな?」「××を取得するのかな?」というのを、名前を見たらわかるように意識している人はできるなと感じます。
プログラミングがヘタクソな人に共通する3つの特徴
プログラミングがヘタクソな人の特徴は以下の通りです。
ヘタクソな人の特徴
- 冗長なソースコードを書く
- コメント量が多すぎ or 少なすぎ
- 変数名・メソッド名が適当すぎる
1.冗長なソースコードを書く
冗長、つまり同じような処理がいたるところで散見されるようなソースコードは「センスないな」と感じます。
冗長なコードを書くと、修正するときにあっちもこっちも直す必要があって、修正漏れでバグの原因になることもあります。
基本的には「この処理はメソッドにして共通化できないかな?」という観点でプログラミングに取り組むのが良いでしょう。
2.コメント量が多すぎ or 少なすぎ
プログラミングがへたくそな人は、適切なコメント量になっていません。
やたら多すぎてコメントの意味をなさなかったり、逆に少なすぎて何をやっているかが解読困難だったりします。
できる人ほど書く側の立場ではなく、読む側の立場に立ってコメントを記載しているのがわかります。
「別の人が読んだときにわかりやすいか?」という視点でコメントを記載するようにしましょう。
3.変数名・メソッド名が適当すぎる
変数名・メソッド名を見て、意味不明な命名をしている人を見ると「この人あんまりできない人なんだろな」と感じます。
参考書などによくある以下のような変数名にしてる人はまさかいませんよね?
const str = 'hoge';
参考書に書いてあるのはあくまでサンプルなので、同じ命名規則で書くのはナンセンスです。
ここまで極端ではないにしても、統一感が無かったり意味の分からない名前を付けている人はけっこう散見されます。
なるべく変数名・メソッド名を見たらどんな処理をしているのかがわかるようにしましょう。
まとめ【たかがソースコード、されどソースコード】
今回は、プログラミングのソースコードについてお話ししました。
ただ動けばいいというのはプログラミングとは言い難いです。
動くことは大前提ですが、ちゃんと動いたうえで誰が見てもわかりやすいように書くのができるプログラマーです。
ソースコードひとつから書いた人の技量や気遣いが伝わってくるので、適当に書くのではなく信念をもって書くようにしましょう。
ポイント
「プログラミングスキルをなるべく早く身につけたい」
「実務でも通用するレベルまでスキルアップしたい」
そんな方はプログラミングスクールに通うのがオススメです。
どのスクールを選べばいいかわからない方はこちらの記事をご覧ください。
以上となります。