• 締切済み

プログラミング開発の流れ

現在一人でiPhoneアプリを開発中です。 今までプログラミングは入門書を読んでばかりでまともなプログラムはほとんど作ったことはありませんでした。 しかし、アプリ開発を通じて本に無い開発の楽しさがわかってきた気がします。 ですが大変なことも多いです。 今一番困っているのが、プログラム開発の全体的な流れについてです。 行き当たりばったりで開発を進めているので効率よく開発ができていません。 例えば、思いつきで新しい機能を付けようとしたり、実装方法を曖昧にたせいで一方が動いてもそのせいでもう一方の実装が困難になる、といった感じです。 始める前に悩んで挫折するより、わからないところは作りながら調べればいいかという気持ちで始めました。 しかし、開発が進むに連れコード量も増え全体を把握できなくなってしまいました。 インスタンス間の関係がわからなくなったりグローバル変数が増えたり。 頭が混乱してしまい、はっきり言って挫折しそうです(笑)。 他にも作りたいアプリがあるので、早くリリースしたいのですがうまく進んでいません。 そこで質問です。 あなたは開発する際どういう方針でプログラミングしますか? 例えば、始める前に全体の仕様を具体的に決めてそこから開発をするか。 もしくは、僕のように具体的に決める前にやり始めるか。 また、こういうった問題に直面した場合あなたならどうしますか? よろしくお願いします。

noname#241842
noname#241842

みんなの回答

  • racene
  • ベストアンサー率70% (21/30)
回答No.4

この問題はソフトウェア開発における非常に大きな問題の1つで、今までにも様々な手法が提案されてきています。 初めにきちんと設計を行ってから開発しよう!というスタイルはウォーターフォール型と呼ばれる開発手法で、一昔前はこの手法が良いとされていましたが、最近はそうでもないと考えられています。 (設計をしなくても良いという意味ではないので注意してください) 最近の流行りはアジャイル型と呼ばれる手法で(最近と言ってもそれほど新しくありませんが)ある程度の短い期間単位で設計、実装、テストを行うことを繰り返すというものです。 この手法は早めに動くものを作ることができるのが利点です。 私が個人でソフトウェアを開発する場合は、比較的アジャイル型に近い方法を取ります。 というのも、個人で作るようなプログラムの場合、完璧にきちんと設計をするなんて時間の無駄だからです。 あなたの言うように、思いつきで機能を追加するといったことも頻繁に行いますし。 *** 参考になりそうなキーワードを挙げておきます * ウォーターフォール・アジャイル * ユニットテスト・テスト駆動開発 * オブジェクト指向 * 参照透明性・関数型 * デザインパターン * UML・クラス図

回答No.3

Objective-CとiOSのプラットフォームは、かなり優れたもので、1人でもできる範囲は、相当でかいと思っています。3人や4人では、決して出来ないプログラムが、1人でできると思います。  そもそも、モデリングがちゃんとできていれば、紛れる範囲は、少ないですから。  で、あなたは、.hと.mのペアの数が、どの程度ではまりこんでいるのでしょうか?  もし、15ペア以下で、はまりこんでいるんであれば、相当設計が、悪いという事になると思います。  新しいクラスや、使い方がわからないクラスなどは、トイプログラムを作って実験してから本番コードに積み込むとよいでしょう。  プログラムの基本設計は、メモ書きでいいので、TextEditなどで書いておくのがいいでしょう。相互のクラス関係と情報の流れなど。

  • FEX2053
  • ベストアンサー率37% (7987/21355)
回答No.2

この手の、ユーザー開発でよく陥る問題ですね。 これは、「初めに仕様書を書いてない」ってことに尽きます。 開発範囲を事前に決めて、それ以上の開発は行わないのが プログラム開発の基本中の基本です。 逆にいえば、徐々に機能を付けたしたいなら、「後付けで 付け足す機能のための呼出し手順」をしっかり定めておき、 その手順以外では呼び出さない/動作しないようにするん です。 あと、変数の命名規則とか、コードの構造化ってちゃんと やっています? これをやってないと、後でプログラムの 通覧性が低下しますよ。 http://www2.cc.niigata-u.ac.jp/~takeuchi/tbasic/Intro2Basic/Structure.html http://ja.wikipedia.org/wiki/%E5%91%BD%E5%90%8D%E8%A6%8F%E5%89%87_(%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0)

回答No.1

まずはUMLを勉強しなさい。 そしてMVCとデザインパターンを勉強しなさい。

関連するQ&A

  • Androidのアプリ開発について

    趣味でプログラミングをやってみたくなりました。 今一番興味のあるものが、AndroidのOSで動くアプリの開発です。 長く継続してやっていきたいので、開発をやっていて挫折しかけた時、飽きた時などのモチベーション回復方法や開発していて楽しかったこと辛かったこと乗り越えたことなどあれば是非聞かせてください。

  • プログラミング初心者です

    学校の授業で、コマンドプロント上で簡単なプログラミング(for文、while文、if文、関数作成)といった簡単なものは実習したことがあります。 ただ、プログラム本文の前の、定義付けや、データの受け渡、データの種類といったことはほとんど理解できていません。 さきざき、波形を処理するようなプログラムをいじるかもしれないので(csvファイルからFFT処理、マップ作成、データ結合など)、勉強しておきたいと考えています。 ・プログラムを開発する環境の詳しい説明(コンパイラ、実行の仕方などが詳しく書かれている) ・プログラミングの方法 ・ファイルやデータの種類の説明 など プログラミング+開発環境全体について初心者でもわかるような詳しい説明がされている書籍を紹介してほしいのですが。 使ってみてわかりやすかったと思われる本でも教えてください。 本当にど素人なので質問内容が尻切れの内容でしたら申し訳ないです。 色々間違っているかもしれないので補足がありましたらよろしくお願いします。

  • 初のプログラミング学習でflutter

    Androidでアプリの開発をしてみたいと思い、その中で友人に勧められたflutterを学んでみたいと思っています。 ただプログラミング言語を学ぶのは初で(一応マクロは学習しましたが)途中で挫折しないか不安です。まだ日本語での情報も少ないとネットで見ましたが、いきなりflutterを学ぶのはハードルが高いでしょうか。

  • Windowsプログラミングで

    当方、10年程前に、某ゲーム系専門学校に通ってまして プログラミングの方を専攻しておりました。 当時の学校の開発環境はPC-9801やX68000で学校では C言語や65816の授業がありました。 また当時は私はX68000が好きだったこともあり68000 のアセンブラ等も勉強してました。 当時挫折を味わい学校も辞め二年ほどプログラムという よりはパソコンから完全に離れてしまいました。 でもパソコンとかを触ったりするのはやはり好きだったので Windows95搭載パソコンを買ってしまいました。 CPUがPentium2とかMMX Pentiumとか言われてもちんぷんかんぷん でしたしDirectXが出てきて、3Dアクセラレーターボード等が 普及してきてましたが二年間程離れていたせいで3Dゲームを プレイするために必要なマシンとかも分からなかったくらい です。 VC++5.0とかも買ってしまいましたが、学校で勉強したのは 概ねシングルタスク環境での開発ですので異様な違和感を 覚えました。イベントドリブン型プログラミングに馴染めない というかMFCやWindowsAPIの関数の複雑さに圧倒されたというか そんな感じです。 二年間離れていたから対応できなくなったとは思っていませんが Windows95発売から10年以上経過した今、専門学校に入学するのが 数年遅かったら・・・もしくは数年生まれるのが遅かったら等とは 思ったりします。 結局、今では自分にプログラミングにセンスが無かったと思ってますが 「MS-DOS等では開発したことがあるがWindowsでは出来ません」 というような人がいるということをプログラム関係の本で 読んだり、あるいは専門学校の講師とかソフト開発会社の人 に聞いたことがあります。 長々と書きましたが、自分のように実務経験が無く、 あくまで趣味の域でやってる人ならともかく、職業として プログラマーをしている人はどうなのでしょうか? プログラマーとして飯食ってるひとがWindowsプログラム等の イベントドリブン型プログラミングに対応出来なかったら 死活問題だと思うのですがどうなのでしょうか? それとも実務経験のある人にはそもそもそういう人は いないのでしょうか? 長年の疑問だったので何方か答えて頂ければうれしいです。

  • プログラミングをするAI 数年後には

    プログラミングをするAIの開発が進んでいるそうです。 数年後からは、これまでのように処理コードを1行ずつ書いて行く必要はなくなり、AIが 尋ねられたことを答える ように処理プログラムを書くことができるようになるそうです。 現在、プロジェクトとして大人数でアプリケーションを作成している場合、その主たるアプリ開発のコンセプトやアイディアを決めているのは一部の人達で、大部分は雇われた人達がコードを書いています。 例えば、マイクロソフトワードと同等のワープロソフトを開発した場合、過去と比べてどのぐらいの少数で同じソフトを作成できるようになるでしょうか? プログラミングを書けるAIの開発が進んだ場合、プログラミング人材はどのぐらい削減できることになりますか?

  • iPhoneアプリの開発についてです。

    今RSSリーダーのようなiPhoneアプリを開発中です。 TableViewのセルをタップすることで目的の記事をUIWebViewに表示させるといったNavigationControllerを使ったシンプルなものですが、直前に表示した記事を左スワイプすることでスクロール位置などそのままの状態でもう一度表示させるといった機能を実装したいと考えています。 例えると、Safariでスワイプして戻ったり進んだりする感じです。 WebViewからTableViewに戻ると、当然WebViewを表示していたインスタンスは破棄されますのでその直前にインスタンスをコピーすればいいのではなど色々試行錯誤してはいますが行き詰っています。 コピーできたとしてもそれを復元するといった形で再び再描画する方法もわかりませんし、そもそもインスタンス、つまりはViewをコピーするといったやり方にもピンときません。 どうすればいいでしょうか?わかる方がいればぜひ教えてほしいです。

  • Visual Studio(C#)のプログラミング

    Visual Studio(C#)のプログラミングに関する質問です。 インクルードする2ファイルが、双方のクラスを互いに必要とするケースにおいて、 コンパイルが通らなくて困っています。(当たり前なのですが…) 【Aファイル】 クラスAの定義{ クラスBの使用(インスタンス作成、メソッド利用) } 【Bファイル】 クラスBの定義{ クラスAの使用(インスタンス作成、メソッド利用) } 【全体インクルードファイル】 #include Aファイル #include Bファイル 【コンパイル結果】 Bクラスが存在しません(Aファイルにて) 【質問】 お互いにクラス定義を必要とする場合、 ★具体的に★どのような実装をすれば良いのでしょうか?

  • 【iPhoneアプリ開発】UiTabbarを条件によって切り替えたい。

    【iPhoneアプリ開発】UiTabbarを条件によって切り替えたい。 UiTabbarをA条件ではメニューが5個、B条件ではメニューが3個といった機能を実装したいのですが、 そういったことは可能でしょうか。 もしよろしければ、具体的方法を教えてください

  • プログラミングスクールのお勧めを教えてください

    プログラミングのオンラインスクールを受講することを考えています。 これまでに本での独学は試みたのですが、ついていけずに挫折してしまいました。そのため、受講時間が柔軟に選べるオンラインでのプログラミングスクールを考えています。 【質問1】 オンラインでのプログラミングスクールの受講経験があれば、メリット・デメリットなど感想を教えていただけないでしょうか。特に、独学と比較してのメリットがあれば教えていただきたいです。 ※希望条件 受講形式:受講時間を柔軟に選べる 学べる時間:平日は仕事後の2時間ほど 学びたい言語:iPhoneアプリ、Androidアプリ ※今のところの候補としては、下記の3つを考えています。 (これ以外でもお勧めのスクールがあればおしえてください。) ・Tech Academy ・Tech Camp ・Code Camp 【質問2】 プログラミングを学ぶためにオンラインスクール以外でおすすめの方法があれば教えて下さい。 プログラミングを学びたい動機: スマホアプリでのサービスを企画する業務についています。 アプリの開発は外注しています。 プログラミング自体はできなくても業務に支障はないのですが、外注先のエンジニアの方との円滑なコミュニケーションが取れるようにある程度のプログラミング知識を学びたいです。 また、コンセプト検証用の簡単なアプリぐらいであれば自分で作って社内での説明に利用できるようにしたいと思っています。 どうぞよろしくお願いいたします。

  • 研究開発、設計開発、SEの違いについて

    現在就職活動中の大学3年の者です。 ソフトウェア業界を志望しています。 プログラミングが好きで、SEを考えるようになりました。 しかし、SEについて調べていくにつれ、エンジニアというよりも営業に近いような印象を持ちました。 文系出身者が多いことからも、理系の自分がやっていけるのか心配になります。 そんな中、大きな企業では設計開発職というものがあるのを知り、興味を持つようになりました。 ですが、具体的にどのようなことをするのか、いまいちピンときません。 ある開発職の方にお話をうかがったところ、業務の半分くらいはプログラミングというようなことをおっしゃっていました。 プログラミングが好きな自分としては、業務の半分がプログラミングというのは非常に魅力的です。 http://okwave.jp/qa2569694.html こちらの回答によれば、開発職のメインはプログラミング、とはあるのですが、つまり開発職=プログラマという理解でよろしいのでしょうか。 プログラマというのは、SE等になるための一ステップというイメージがあったので、大企業で生涯プログラムに携われるならこれ以上の職種はないと思うのですが、考えが甘いでしょうか・・・。 また、開発のフェーズは海外発注が多いともあるのですが、将来必要とされる職種なのかどうか心配になります。 そこで質問させていただきたいと思います。 ・研究職、開発職、SE、プログラマの違いは? ・上記各職種にはそれぞれどのような適性が必要なのか? (職種を選ぶ際、どのような人はどの職種が向いているなど) ・開発職は具体的にどのような仕事をしているのか? ・生涯プログラマというのは現実的に不可能? また、少し本題とはそれるのですが、 ・ソフトウェア開発とシステム開発とでは何が違うのでしょうか? 以上についてよろしくお願いいたします。 また、これら意外でも、この業界で就職活動をする際のアドバイスなどが有りましたらよろしくお願いいたします。