• ベストアンサー

C++でのプログラミングの効率的な開発について。

C++でのプログラミングの効率的な開発について。 プログラミングをするうえで、こうすることで効率が上がった!というようなテクニックや 考え方などご教授ください。 人によって、設計をきちんとして書き始めるひともいれば いきなり書き始めるひともいるかと思います。 それぞれに合ったやり方というものもあるかと思いますが、 総合して、この書籍が役に立ったとか、 こうしたら作業の効率が上がったという話を頂けたら嬉しいです。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • Interest
  • ベストアンサー率31% (207/659)
回答No.4

Level 1  ソースコードを書き始める前に設計をすること。設計図を描く場合、簡単なブロック図やフローチャートでも可。UMLを知っているならUMLで描くことをお勧めします。詳細設計までする必要は無くて、大雑把な設計でも設計したのとしないのとでは開発効率が大きく違います。また、設計図があればプログラムの動作がおかしくても自力で解決できないとき、他人にプログラムを説明するのが簡単です。 Level 2  設計図を書く前に、システム全体のアーキテクチャを決めておくこと。具体的には、外部からどういう入力が来たらプログラムはどういう出力をするのか、大雑把にどういう論理構造にするのか。ソースファイルをどのように配置するのか。これが決まっていると、設計の見通しが良くなり、また、後で機能を拡張したり使いまわしたりするときに楽になります。 http://www.ogis-ri.co.jp/otc/hiroba/technical/coal-ADD/index.html http://www.cc.matsuyama-u.ac.jp/~isshiki/04/PowerPoint/022105_kadota.ppt Level 3  アーキテクチャを決める前に、要求仕様を決めること。言い換えれば、何をするプログラムなのか具体的に言葉で記述します。例えば自動販売機であれば、自動販売機制御プログラムが提供する機能の一つに「商品を販売する」という機能(ユースケース)があり、そのシナリオは次のようになります。 1.顧客はコイン投入口にコインを入れる。 2.自動販売機は投入されたコインの合計投入金額を数える。  1.自動販売機は金額ディスプレイに合計投入金額を表示する。  2.合計金額が商品の値段以上になったら、購入可能な商品を選択可能にする。 3.顧客は商品選択ボタンを押す。 4.自動販売機は選択された商品を商品取り出し口に搬送する。  1.合計投入金額が選択された商品の金額より大きければ、コイン取り出し口にお釣りを出す。 このように大雑把な使われ方のシナリオ(ユースケースシナリオ)があれば、外部からどのような入力があり、どのような出力をすればよいか、プログラム上の部品にはどのようなものが必要になるか、自ずと見えてきます。このようなシナリオは詳細まで詰めないで大雑把にしておくことがポイントです。(詳細などどうせすぐに変わってしまうので。) また、テストは要求仕様を満たしているかどうか確認するための作業ですので、要求仕様はテストを行うための下準備にもなっています。 http://homepage3.nifty.com/koha_hp/process/Proc.Require.html Level 4  一度に全部実装しようとしないで、重要な機能から順に実装していくこと。開発サイクルを複数回にわけて重要な機能から順に設計、実装、テストしていくことで、スパイラル型とかインクリメンタル型と呼ばれる開発プロセスはこのことを指しています。 http://mobile-robots.way-nifty.com/daily_report/2009/03/tspi-49dc.html もうちょっと雑多な、やればすぐ出来るテクニックとしては、「課題管理表」を作ることですね。何か問題が起きたら課題管理表に書いておき、解決したらその原因と実施した対応策を記録します。そうすると、「あの問題はどうやって解決したっけ? まだ解決してなかったっけ?」という事態を防げます。 上記は、いずれもプログラミング言語に依存しない、ソフトウェア開発に不可欠な考え方です。Levelがあがるにつれて難しい話になっていきますので、まずは Level 1 からやってみることをお勧めします。

matoro6173
質問者

お礼

とてもわかりやすい説明ありがとうございます。 学び始めた頃はよくフローチャートを書いていました。 そのおかげか、だいたいの見通しを立てることができます。(精度は低いかもしれませんが) アーキテクチャの決定やユースケースは、知らずに使っていました。 だいたい紙にまとめながら書くことが多いです。 テストプログラムを書きながら(実行しながら)作成していますので おそらく4のこともやっていると思います。 方向は間違っていないことが分かり、とても助かりました。 「課題管理表」はExcelで作成しながらやってみたいと思います。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (3)

  • R32C
  • ベストアンサー率39% (115/290)
回答No.3

自分は、C++が主な開発言語じゃないんだけど 1.テスト駆動型開発(TDD) 2.スパイラル型開発 3.XP エクストリーム・プログラミング(と言っても一部です) あとツールとしては CppUnitあたりが使えたらと思います。 上記1.2.3.は実際にそれでやっています。 実際に開発対象によっては適用できないケースもあるかもしれません。 まぁ、なんかのライブラリとか開発するならやりやすいかもしれません。 ポイントは、コードを書く前にテストを書くこと。 そうすることで、仕様のあいまいさを解消しやすくなります。

matoro6173
質問者

お礼

1,2,3とも知らない単語でした。 一度本屋にいって、これらについて詳しく書かれたものを購入したいと思います。 単体テスト等はほとんど気にせずやっていましたので、 詳しい方法も一緒に学んでみたいと思います。 ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。
回答No.2

こんにちは。 Visual Studioというソフトがあります。 今はExpress版が無償で本などに添付されています。 これを使うと、特にC++では開発効率が大幅に上がると思います。 また、本のタイトルで確か「プログラミングのコードの書き方」 というものがあり、私はそれに従って、Cの時からある決まりで、 コードを書くようにしています。 もちろん、コードに色がつくエディタを使うことをおすすめしますが、 まず、forやwhileなどの命令文は直後に半角スペースを1文字あける。 とか、命令文以外の関数は半角スペースを空けずに、書くとか、 for文のセミコロン(;)の後は半角スペースを1文字あけるとか、 {}で閉じるところは、見やすいように同じ列に書くとか、 =の両間には半角スペース1文字あける、 変数の名前は長めに、わかりやすい英数字を使う。 などです。これはあくまで私の場合ですが、 おかげで、この後半角スペース入れようかどうか、 迷うことなく、書きすすめられるので、自分のコーディングのルールを 作っておくと、プログラムを書くのが早くなりますよ。

matoro6173
質問者

お礼

現在VisualStudio2008 ExpressEditionを使用しています。 もしこれがなかったら……と考えると恐ろしいほどです。 インデントの箇所やコーディングルールを規定しておくと 驚くほど可読性が上がることは実感しています。 とても初歩的なことですが、とても大事なことだと思います。 ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。
回答No.1

> こうしたら作業の効率が上がったという話を頂けたら嬉しいです。 できるだけ「書かない」 ライブラリを使え。

matoro6173
質問者

お礼

一番根本的な部分ですね。 書かないようにする技術もありますし。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 効率的なプログラミング

    データ処理や数値計算のために簡単なプログラミングをしている者です。大体,一般的な入門書レベルの内容をマスターしている程度と考えていただければ良いと思います。 それで,プログラミングで重要なことは「より単純に,より速く」というコードを書くことが1つあげられると考えていますが,そういったより効率的なプログラミングをするために良い参考書などないでしょうか? 例えば,「こういうコードの書き方は良くないですよ」とか「このように記述することによってより高速に動きますよ」といったような,初心者がはまりやすい罠とか,より上達するために良い書籍ということです。 こういったことは,原則としてどの言語でも共通なことであると認識していますが,全く分からない言語の説明を受けても理解できないので,PerlかCかVBのいずれかの言語でお願いします。 あと,頼みついでに1つ教えて欲しいのですが,同じ繰り返し処理を行う場合,(例えばCでいうところの)for構文とwhile構文の使い分けというのがイマイチよく分かりません(それぞれのメリットとデメリットが分からないということ)。基本的にはどちらでも同じことができますが,私はほとんどfor構文しか使わないのです。

  • プログラミングのまったくの初心者ですがiOSの開発

    プログラミングのまったくの初心者ですがiOSの開発を学ぶにはどうすればよいでしょうか 大学に入学して入学直後のガイダンスのあと、学科についての質問をしようとしたら、教授と話が弾んで2時間くらいいろいろ盛り上がって進路のためにスマートフォンのアプリなどを作って名を上げてみればどうだろうか、となったのですが、今の私では、iOSの開発がしたいけど自分の学科には同志となる学生がいなくて嘆いている教授に教えを乞いに行っても相手されないだろうから、パソコンに触ったこともないのに入院中3ヶ月iPhoneアプリを書いて大ブレイクした人のように独学ですべきと言われました しかしObjective-CをやるにはまずCをやるのがオーソドックスであり実際にiOS開発初心者向けのサイトはみなプログラミング自体の初心者は相手にしてなく学ぶ方法が分からず困っています Cによるプログラミングの基本を学ぶにも学生のレベルが低い大学のため、前期のうちではそれすら学ぶことができません 私はコンピュータそのものについての知識は真っ当な普通科高校の優等生以上にある自身があり、WindowsとiPhoneをエンドユーザーとしては可能な限り使いこなせていますが、予備校モドキの管理教育高校で副教科などは教育困難校レベルの教育しか受けられておらずプログラミングやOfficeのような趣味でパソコンやってるだけでは身につかないことは一切できません そんな私のようなプログラミング自体の初心者でCも書いたことないような人がiOS開発を学ぶのによい本はなにがあるでしょうか また、13インチでi7にCTOしたMacBook Airを注文したのですがソースを書く際などに大きくて高解像度のモニターなどの周辺機器は必要ならば教えてください

  • プログラミングの『C♯』で作れるソフトについて

     現在、30歳のサラリーマンです。この年になって、プログラミングに興味を持ち、ソフトをつくってみ たいと思いました。そして、ネットの情報より、初心者が始めやすいのは『C♯』だというとある情報を元 に、書籍を買ってみて、パソコンにVisual studioをインストールして、いろいろといじっているのですが、 全体をふと俯瞰してみて、いろいろな書籍を見たのですが、そもそも、『C♯』で、一体どのようなソフト がつくれるのかが、さっぱりわかりません。。参考書を見ても、例の記載がないのです。 どなた様か、『C♯』でどのような事ができるのか、どのようなソフトが作れるのか。 ご教授頂けたら幸いです。よろしくおねがい致します!

  • C#の入門書

    これからC#を勉強しようと考えていて、入門書を探しています。Amazonのレビューなどを読んだりして、下の4つで悩んでいます。 ・プログラミングC# 第5版 (大型本) ・独習C# 第2版 ・JIS規格対応 標準C#入門 改訂第2版 (大型本) ・猫でもわかるC#プログラミング (猫でもわかるプログラミングシリーズ) (単行本) 今のところ、買おうと思っているのは、「プログラミングC# 第5版」です。理由は、これの第4版に限らずオライリーの書籍全般の評判がいいから、C#について詳しく書かれている書籍だとレビューなどで見たからです。 ちなみに私は、PASCAL、C言語、Perl、Perl/Tk、CaslIIなどを大学の講義で学びました。C#については全く何も知りません。また、ソフトは「Visual C# 2008 Express Edition」の使用を考えていますが、これも使用したことがなく、使い方が全くわかりません。できれば、入門書に使い方などが書いてあるとありがたいのですが、インターネットなどで使い方を知ることができるなら、なくてもかまわないと思っています。 こんな私ですが、上の4つの本を読んだことがある方、C#の開発をしたことがある方は、おすすめの書籍やC#開発ソフトの使い方が書いているサイト、C#の学習等について意見を頂けないでしょうか。上の本以外にいい本があるなどでもかまいません。漠然としていて申し訳ありませんが、回答よろしくお願いします。

  • MacOS Carbon C++プログラミングをしたいのですが

    必要があり、MacOSのソフトを開発しなければなりません。その際、OS9にも対応する必要があるので、CarbonとC++でプログラミングしようと考えているのですが、 何しろ、Cocoaでさえ参考書が限られているのに、Carbonとなると本当に参考に出来る本やサイトが少なくて困ってしまいます。 とりあえず、オライリーの入門Carbonは買おうと思っているのですが、他に参考になる書籍やサイトはないものでしょうか。よろしくお願いいたします。

  • C言語の効率的な勉強法ってありますか?

    先週より職業訓練校に通っていまして、コースはプログラミングです。 C言語を使ったプログラミングなのですが、正直自分が予想していた難度を上回っていました。 数学的センスが求められるのか、プログラムする前に頭で構成をざっと 思い描く感じでないと打込むのに時間がかなりかかってしまいます。 初心者なんである程度時間がかかるのは仕方がありませんが、この先どんどん難しくなるので今から思いやられています。 構文のようになっているので、そのパターンを覚えていくしかないなという感覚はありますが、初心者がプログラミングを学習するに当たって、何かコツといいますか効率的な勉強方法ありますでしょうか? 同じ勉強するなら効率的にしないと時間ばかりかかってしまいます。 書籍でも学習法でも何でも構いませんので、こういう勉強方法がいいよといったアドバイスあれば、ぜひ教えていただけないでしょうか。 よろしくお願いいたします。

  • Java開発でアプリを作る

    Java開発でアプリを作る時、eclipseでプログラミング、単体テストを行うことはできるのですが、結合テスト、総合テスト、また、上流工程の要件定義から基本設計、詳細設計を一般的にどのようなツールで行うとかありますか?的外れの質問だったらすみません。要はJava開発でどのようなツールを使うか知りたかったのですが。

  • ソフト開発の一連の流れが解説された書籍

    要件定義やら外部設計、内部設計など、アプリケーションを制作するにあたって、一連の流れを簡単に解説した書籍などございませんでしょうか? 趣味でWebプログラミングをしておりますが、一度順序だてて設計し、開発してみたいのです。 よろしくお願いします。

  • 機械設計職についての質問とプログラミングについて…

    機械設計職についての質問とプログラミングについての質問 技術的な質問ではありませんが、機械設計を志す学生の質問に寛大な気持でお答えいただけると嬉しいです。よろしくお願いします。 まず一般的な機械設計職について質問させていただきます。 業界の方々は「開発」という言葉と「設計」という言葉を違うように使用されているように思うのですが、開発=大きい企業での研究開発、設計=CADを使用した設計と考えて良いのでしょうか? つぎにプログラミングについて質問させていただきます。 ずばり、機械設計を志す人間はどの程度プログラミング言語(例えばC言語)が操れなければならないのでしょうか? NC言語、CAEなどの分野も含めてお答えください。

  • パソコンのプログラミングについてですが

    パソコンのプログラミングについてですが C言語を学ぶことで何か得られるものというか 得はありますか? 何かの役に立ちますか? また、このようなC言語を学ぶ(プログラミングを学ぶ)はインターネット関係(IPアドレスが・・・とか、サーバが・・・とかそういう話)と関連してくるものなんでしょうか?