今回紹介するのは2020年10月30日発売の『C言語本格トレーニング』(共立出版)です!
本書全体を軽く読んだ感想として、仕事でプログラミングをするプログラマ、特に僕のようなゲームプログラマを目指す人にとってプログラミング力を鍛えるのに最適な一冊であると思いました!
先に断っておきますが、約4000円と本としては少しお高めではあります。ですが、それだけの価値がある一冊と感じます。
今回は本書の特徴についての紹介と、どんな人に向いているのか、解説していきます。
目次
3段階構成になっている
本書は初級編・中級編・上級編の3段階に構成が分かれています。
目次は、共立出版社のサイトから確認できます。
初級編
初級編は本書ではじめてC言語に触れる人のためにやさしく、それでいて細かい点まで解説が省略せずに書かれています。
プログラミングの入門書では、初学者が挫折しないように難しいポイントは解説が省略されることがよくあります。
まずはプログラミングを体験してみたい、趣味でちょっとプログラムを書きたいということならそれでも問題ないのですが、仕事でプログラムを書く上ではこの省略される部分が重要だったりするのです。
本書ではじめてプログラミングをするという人にとっては難易度が高めではありますが、本格的に学びたいという人には最適です。
中級編
極論を言えば本書の初級編に書かれている内容だけでもプログラムは作れます。
とはいえ、効率よくプログラムを書いていく上で避けては通れない「配列」や「関数」といったいくつかのテーマについて、中級編で取り扱っています。
特徴として、機能について解説されているだけでなく処理速度を意識した書き方や、よくない書き方(アンチパターン)も取り挙げられています。
ハードウェアの進化によって最近はあまり意識しなくても大半のプログラムは問題なく動いてくれますが、ゲームプログラミングなど一部の分野ではまだ処理速度が重要です。
アンチパターンはチーム開発で重要です。知っておくことで他の人にとっても見やすいプログラムを書くことを心がけることができます。
上級編
上級編では「ファイル処理」や「メモリ」そしてC言語で挫折する人が多い「ポインタ」など、難易度が高めのテーマを取り扱っています。
初心者からプロに向けてステップアップするために必要な考え方が詰まっていました。
各項目について詳しく解説されているので、既にC言語自体は学んでいて理解できていなかった部分を本書で再確認するという使い方をしても良いかもしれません。
中級編までの内容でも十分オススメ
難しい内容まで理解できるのか心配という方もいらっしゃると思います。実際、上級編の内容はプログラミングを10年やっている僕も混乱することのある内容が含まれています。
おそらく本書の中級編までの内容を理解するだけでも、プログラミングで多くのことを実現できるようになります。
全部読むつもりで本書を手に取らなくても、十分に得るものがあるでしょう。
練習問題が豊富
本格トレーニングの名前通り、各章末には練習問題が用意されています。
問題と回答が本書全体の1/3以上を占めているというボリュームの多さです!
コードを書くことの重要性
プログラミング力を付けるには、何よりコードを書くことが重要です。
コードを写経する勉強の仕方も、悪くはないのですがついつい無意識に書き写していただけで何も記憶に残らなかったということはよくあります。
提示された問題に対して頭を使って考えて、コードを書く。これはプログラミングで何かを作り出していく、仕事でコードを書くのと同じ流れです。
練習問題をこなしていくことで、自然と基礎力が付いていくでしょう。
回答を見てもいい
慣れないうちは、問題文を読んで全然ピンと来なかったらすぐに回答を見てもいいでしょう。
回答例と解説が用意されているので、そこで学ぶことができます。
問題に対してプログラムで回答するという感覚がなんとなく分かってきたら、自力で問題にチャレンジしてみるのが良いでしょう。
答えは1つではない
プログラムというのは同じ結果を得られる方法が何通りもあるものです。
回答例と違う書き方になったとしても、正しい結果を出力できるならそれは正解です。
自分で書いてみたコードと著者が用意した回答例を比較することで、効率よくシンプルなコードの書き方が身に付くと思います。
C言語という言語について
現在、主流な言語の多くはC言語がベースになっています。
特に僕が利用していて本ブログでいつも扱っているUnityで使われているC#は、記法もよく似ています。
C言語を使う場合はもちろん、他の言語においても本書で身につく基礎力が応用できます。
上級編はC言語特有のテーマもいくつかありますが、大半の章については別の言語でも同様の機能が用意されています。
C++まで踏み込まない点が良い
現在、特にゲームプログラミングの分野ではC言語よりもC言語から派生したC++が広く使われています。
しなしながら、C++を学ぼうと思ったら「オブジェクト指向」といった難解なテーマが必ずくっついてきます。
プログラミングの基礎力を鍛えるという意味ではC言語だけに集中するのが良く、そういった意味でも本書ではC++まで踏み込まずにC言語に特化しているのが好感の持てるポイントです。
C++はC言語がベースになっているので、次にC++を学ぶという場合でもC言語の知識はそのまま使うことができます。
こんな人にオススメしたい
独学でプログラミング力を上げたい人
機能の解説などは、ネットで検索すればいくらでも見つかります。
それに対して、本書で解説されているような細かいテクニックを教えてもらったり、練習問題を解いていく流れは僕の経験上だと専門学校の授業とよく似ています。
本書を手に取ることで、学校で学ぶのに近い形でプログラミング力を上げていくことができると思います。
仕事でプログラムを書きたい人
正直なところ、趣味でちょっとプログラムを書きたいという場合に本書を入門書として選ぶのは、内容が過剰であると思います。
これからプログラミングを仕事にしていきたい。既にプログラミング経験があって基礎力を上げていきたいという熱い想いをお持ちの方には、本書を非常にオススメできます。
ゲームプログラミングをする人
著者の沼田先生(@sazameki)は過去にゲームプログラミング関連の書籍も出版されており、それらの経験が本書にもしっかりと落とし込まれているように思います。
本書は標準入出力(キーボードからの文字入力&画面への文字出力)を中心に扱っておりゲームプログラミングがテーマではありませんが、ゲームプログラミングと関連深いテーマ(でありながら入門書では省略されがちなこと)が多数取り上げられており、ゲーム作りをする人にとって参考になるでしょう。
また、ゲーム会社の採用情報を見てみると分かりますが多くの会社でC/C++の経験を優遇、もしくは必須としていることもあります。
C++を学ぶ上でC言語をしっかりと身に付けている方が有利ですから、本書で本格的にC言語を学んでおくメリットは大きいでしょう。
まとめ
本書は『C言語本格トレーニング 基礎から応用までを徹底解説!』の表題通り、C言語を本格的に学びたいと思った人にとって最適な一冊に仕上がっていると感じました。
過去にC言語を学んでいる僕自身にとっても初見のトピックがいくつかあり、学ばせて頂きました。
この記事を読んで興味を持った方は『C言語本格トレーニング』手に取ってみてはいかがでしょうか!