モダンC言語プログラミング 統合開発環境、デザインパターン、エクストリーム・プログラミング、テスト駆動開発、リファクタリング、継続的インテグレーションの活用
- KADOKAWA/アスキー・メディアワークス (2013年10月1日発売)
- Amazon.co.jp ・本 (280ページ)
- / ISBN・EAN: 9784048913096
感想・レビュー・書評
-
組込分野からサーバーサイドに移った著者による、C言語開発者(中級者)向けの本。
モダンな開発手法(オブジェクト指向、デザインパターン、テスト駆動開発、リファクタリング、継続的インテグレーション)はサーバーサイドでは常識となりつつあるのに、組込分野では一般的ではない。そこで、「本書は、伝統的なCによるプログラム開発の現場と、サーバサイドでは当たり前になりつつある最新の開発手法との間の架け橋となることを目的」としている。
自分は組込の世界でC言語を用いた開発に携っていた経験があるものの、近年の開発手法や方法論には疎いので、うってつけの本だと思った。……が、恥ずかしながら本書はちょっとレベルが高すぎて十分理解することができなかった。改めて勉強し直したいと思う。詳細をみるコメント0件をすべて表示 -
本書の冒頭にでてくるC言語のシェアが伸びているってのは、少々驚きました。そのあと、eclipseのインストールの話などが出てきて、少々糞本疑惑を持ったのですが、読み進めて正解。Cによるデザインパターンはよく書かれていて、C言語プログラマには必読の内容となっています。そのほかのトピックスについては、アベレージレベルですが、次のステップに進むための良い機会にはできるはずです。総評としては、Cプログラマが読むべき本です。
-
Web開発では常識となっているCI, TDD, XPをC言語を使った開発にどうやったら適用できるか、を解説した本。 組み込み開発を意識しているので、ユニットテストが難しい環境のためにmockをどう作るか、どう実装したらいいかが説明されていて、ターゲットなしでユニットテストを行えるようにしている。 構造体に関数ポインタを入れることでC言語でもクラス構造を作ろうとしているのは一般的だと思うけど、構造体の初期化をマクロで書いてそれらしい構文にしているところは何気に目から鱗だった。 ユニットテストがあるとリファクタリングやりやすくなるから、レガシーコードに囲まれて身動きが取れなくなっている人は少しずつでもカイゼンできるようにしていくべき。 あと、組み込みでありがちな状態遷移をif-else, switchの嵐で書くと、Cyclomatic complexity高めのコードになってすぐにメンテナンス不能になりがちだけど、Cをオブジェクト指向で書けるようになると、デザインパターンであるstateパターンを適用できるようになるので、コード1つ1つがコンパクトになって理解しやすくなる。 CIの設定方法も、何気にC/C++向けの方法ってあまり情報がないから助かります。 今どきだとautotoolsじゃなくてSConsとかCMakeとかでmakeをします。Makefile手書きはレガシー感がいっぱいです。 ということで、本書は「モダン」なプログラミング入門として、参考文献を見てさらにレベルアップを図っていきたい。
-
C言語でいかに疎結合な設計にしてテストをするか、ということが書かれている本。
C/C++でなくC言語なので、その領域で仕事をしている苦労人にはよいかもしれない。組み込みの世界は開発プロセスを追いかけるの難しいから。 -
CIやTDDなど、サーバサイドで使われている開発手法を組み込み開発に適用する話。オブジェクト指向を強引にCで実装するところなど、関数ポインタを多用しており、手法先行型の部分も多い。しかし、新しい手法を学んで取り入れを検討することは、組み込み開発でも必要である。しかし、今の職場に全く欠けているので、全員に読んで欲しい。自分が教えられたこと、やってきたこと、を守り通してそこから外に出ないのでは、この先生きのこれない。
-
C言語で組込みシステムを開発する際に有効であるモダンなソフトウェア工学のプラクティスについてまとめてある本です。C言語による組込みシステムを題材にモダンなプラクティスやツールをまんべんなく扱う和書は貴重だと思います。
初心者向けではありません。最低限、Cの文法は理解しており、本書のサブタイトルにある用語をなんとなく知っている程度のレベルが必要で、できればC++にも多少の理解があることが望ましいと考えます。
本書では Xubuntu+Eclipse CDTという開発環境が用いられています。人によってはネックになるかもしれません。Linuxの使用経験が無ければ、これを機に触れてみるのも良いでしょう。
C言語でオブジェクト指向プログラミングを行う方法は技術的には面白いのですが、実際の組込みシステム開発でここまでやるのであれば大人しくC++を採用した方が良いのではないかと感じてしまいました。むしろ、.c と .h のペアと static を使用したC言語におけるカプセル化とクラス図によるモデリングについて紙面を割いた方が、組込みシステム開発現場の需要にマッチしていたのではないかと思います。
テスト駆動開発とリファクタリングについては概ね良いと思います。ただ、テスト対象から呼び出すスタブと本物を関数ポインタを使って入れ替える手法は私は推奨しません。この方法だとプロダクションコード内に #ifdef UNIT_TEST と書く必要があります。私はスタブ用の.cファイルを別に作成し、ユニットテスト用のビルドスクリプト内で本物の代わりにリンクする方法を推奨します。
組込みシステム開発においてCIでできることについてまとめられているのは良いと思います。欲を言えば、Valgrind についてここまで触れるのであれば、Cppcheck や Splint 等の静的コード解析についても触れた方が良かったのではないかと思います。
『テスト駆動開発による組み込みプログラミング』『チーム開発実践入門』を合わせて読めば、本書の言わんとするところをより正確に理解できると思います。 -
オブジェクト指向、いくつか(使えそうな)デザインパターンの適用、TDD(GoogleTestを使用)、継続的インテグレーション(Jenkins)といったモダンな開発手法をC言語で扱う。ただし、ある程度C言語の経験が必要(初心者にはちょっと読みにくそうな印象だった…)。
Windowsな環境の場合でもある程度は参考になると思う。
書籍とは関係ないが今回はじめてEclipseでCを書いたが結構書きにくかった。また、本書籍に記述されていた開発環境を整えるのがちょっと面倒だった。 -
オブジェクト思考をCで実現する方法が勉強になる。だが、これを現場に投入しようとするとそれなりの教育コストがかかると思う。TDD,CIは個人的にも興味があったので参考になる。あと、モンスターメソッドのリファクタリングも参考になる。
-
C言語でのプログラミングを時流に合わせるとどうなるか。
低級言語に力技で流行りのツールを適用させた感が否めず、慣れていないとそこそこ理解に苦しむ。
ただ、C言語でオブジェクト指向、デザインパターンの適用を実現するための解説は勉強になる。オブジェクト指向言語のオブジェクト指向たる機能性を実感できるのと、たぶんその実装は本書に記されているようなポインタを駆使したものであろうことが想像でき、オブジェクト指向に対する理解を一歩進められる。
後半のTDD、CIあたりは組み込み系の開発現場視点が満載で、ニッチすぎてよくわからなかった。