自動車からスマートフォンに至るまで、そしてほとんどすべての仕事において、コンピューター・プログラムは最近いたるところに導入されている。世界がますますデジタル化するにつれ、新しいプログラムの必要性は常に高まり続けている。次の大きなアイデアがあるなら、自分で作ってみませんか?言語を学び、アイデアをテスト可能な製品に発展させ、リリース準備が整うまで繰り返し開発する方法については、以下のステップ1をご覧ください。
アイデアを思いつく
-
.優れたプログラムは、ユーザーの生活を楽にするタスクを実行する。あなたが実行したいタスクのために現在利用可能なソフトウェアを調べ、そのプロセスをより簡単に、またはよりスムーズにする方法があるかどうかを確認します。成功するプログラムとは、ユーザーが多くの有用性を見出すものである。
- あなたのコンピューターで毎日行っている作業を調べてみよう。その作業の一部をプログラムで自動化する方法はないだろうか?
- あらゆるアイデアを書き出してみよう。その時点では馬鹿げていたり突飛に思えたりすることでも、何かの役に立つ、あるいは素晴らしいものに変わるかもしれない。
-
他のプログラムを調べる。何をするのか?どうすればもっとうまくできるか?何が欠けているのか?このような質問に答えることで、自分なりのアイデアを思いつくことができます。
-
設計書を書く。この文書には、プロジェクトの特徴と達成しようとすることを概説します。開発プロセス中に設計書を参照することで、プロジェクトを軌道に乗せ、集中させることができます。設計書の書き方については、こちらをご覧ください。設計書を書くことは、どのプログラミング言語があなたのプロジェクトに最適かを決める助けにもなります。
-
シンプルに始めましょう。コンピュータ・プログラミングを始めたばかりのときは、小さく始めて時間をかけて大きくしていくのが得策です。基本的なプログラムで到達できる具体的な目標を設定すれば、より多くのことを学べるでしょう。例えば
言語を学ぶ
-
良いテキストエディタをダウンロードしましょう。ほとんどすべてのプログラムはテキストエディタで書かれ、コンピュータ上で実行できるようにコンパイルされます。メモ帳やTextEditのようなプログラムも使えますが、Notepad++ JEditやSublime Textのようなシンタックス・ハイライト・エディターをダウンロードすることを強くお勧めします。そうすることで、コードの視覚的な解析がより簡単になります。
- Visual Basicのように、エディタとコンパイラがひとつのパッケージになっている言語もある。
-
プログラミング言語を学ぶ すべてのプログラムはコーディングによって作られます。自分でプログラムを作りたいのであれば、少なくとも一つのプログラミング言語に精通している必要があります。どの言語を学ぶ必要があるかは、作りたいプログラムの種類によって異なります。便利で重要なものには、以下のようなものがある:
- - C言語は、コンピュータのハードウェアと密接に相互作用する低レベル言語です。C言語は古いプログラミング言語のひとつで、今でも広く使われています。
- - C言語の最大の欠点は、オブジェクト指向ではないことだ。そこでC++の出番となる。C++は現在、世界で最も普及しているプログラミング言語だ。Chrome、Firefox、Photoshop、その他多くのプログラムはすべてC++で作られている。また、ビデオゲームを作る言語としても非常に人気がある。
- - JavaはC++言語の進化版で、非常に移植性が高い。オペレーティング・システムに関係なく、ほとんどのコンピュータでJava仮想マシンを実行できるため、このプログラムはほぼ世界中で使用できる。ゲームやビジネス・ソフトウェアで広く使われており、必須言語として推奨されることも多い。
- - C#はWindowsベースの言語であり、Windowsプログラムを作成する際に使用される主要な言語の1つである。JavaやC++と密接な関係にあり、すでにJavaに慣れている人なら簡単に習得できるはずだ。WindowsやWindows Phoneのプログラムを作りたいなら、この言語を見てみるといいだろう。
- Objective-C - これもC言語の同類で、特にアップル・システム向けに設計されている。iPhoneやiPadのアプリを作りたいなら、この言語がおすすめだ。
-
コンパイラまたはインタプリタをダウンロードしよう。C++、Java、その他多くの高級言語には、コードをコンピュータが使える形式に変換するコンパイラが必要です。使用する言語によって、さまざまなコンパイラがあります。
- 言語によってはインタプリタ型の言語もあり、その場合はコンパイラを必要としない。その代わりに、コンピュータにインストールされた言語インタプリタだけが必要で、プログラムは即座に実行できる。インタプリタ型言語の例としては、PerlやPythonなどがある。
-
プログラミングの基本概念を学ぶ。どの言語を選ぶにしても、基本的な共通概念を理解する必要があるだろう。言語の構文の扱い方を知ることで、より強力なプログラムを作成できるようになる。一般的な概念には以下のようなものがあります:
- 変数の宣言 - 変数とは、プログラム内でデータを一時的に保存するためのものです。このデータは、プログラムの後半で保存、変更、操作、呼び出すことができます。
- 条件文(if、else、whenなど)の使用 - これらはプログラムの基本的な機能の1つで、ロジックがどのように動作するかを決定します。条件文は "true "と "false "を中心に展開される。
- ループを使う(for、goto、doなど) - ループを使うと、停止命令が出るまで何度も処理を繰り返すことができる。
- エスケープシーケンスの使用 - これらのコマンドは、改行、インデント、引用符などの機能を実行します。
- コードにコメントを付ける - コメントは、自分のコードが何を行っているかを記憶したり、他のプログラマーが自分のコードを理解するのを助けたり、コードの一部を一時的に無効にしたりするのに欠かせません。
- 正規表現を理解する。
-
好きな言語の本を何冊か見つける。 どの言語にも、どのレベルの専門知識にも対応した本がある。プログラミングの本は、地元の書店やオンラインショップで見つけることができる。本は、作業中に手元に置いておける貴重なツールになります。
- 本以外にも、インターネットはガイドとチュートリアルの無限の宝庫です。Codecademy、Code.org、Bento、Udacity、Udemy、Khan Academy、W3Schoolsなどのサイトで、自分の好きな言語のガイドを探してみよう。
-
クラスを受講する。誰でもその気になれば独学でプログラムを作ることはできるが、時には先生や教室の環境が本当に有益なこともある。専門家とマンツーマンで学べば、プログラミングの基礎や概念を理解するのにかかる時間を大幅に短縮できる。また、より複雑なプログラムで必要となる高度な数学やロジックを学ぶには、教室が適している。
- 授業にはお金がかかるので、自分が知りたいことを学べる授業に申し込むようにしましょう。
-
質問をする。インターネットは、他の開発者とつながる素晴らしい方法です。プロジェクトでつまずいたら、StackOverflowなどのサイトで助けを求めましょう。その際、いくつかの解決策を試したことを証明できるようにしておきましょう。
プロトタイプを作る
-
コア機能を持つ基本的なプログラムを書き始めましょう。これは、あなたが目指している機能を示すプロトタイプになります。プロトタイプは短時間のプログラムであり、うまく機能する設計が見つかるまで反復する必要があります。例えば、カレンダー・プログラムを作成する場合、プロトタイプは基本的なカレンダー(日付は正確に!)と、それにイベントを追加する方法になるでしょう。
- プロトタイプを作成するときは、トップダウン・アプローチを使ってください。最初はできる限り詳細を省きます。そして、徐々に細かいディテールを追加していく。こうすることで、プロトタイピングのスピードが上がり、コードが複雑になりすぎて管理できなくなるのを防ぐことができる。コードが難しくなりすぎると、最初からやり直さなければならなくなるかもしれません。
- プロトタイプは、問題に取り組む新しい方法を思いついたり、後で取り入れたいアイデアを思いついたりするため、開発サイクル中に頻繁に変更されます。
- ゲームを作るのであれば、プロトタイプは楽しいものでなければなりません!プロトタイプが面白くないと、ゲーム本編も面白くない可能性があります。
- もしプロトタイプで、あなたの望むメカニズムがうまく機能しないのであれば、その時点で、もう一度、プロトタイプを作り直す時かもしれません。
-
チームを編成する。一人でプログラムを開発する場合、プロトタイプを使ってチームを作ることができます。チームがあれば、バグをより早く突き止め、機能を反復し、プログラムのビジュアル面をデザインすることができます。
- 小規模なプロジェクトではチームは絶対に必要ではないが、開発時間を大幅に短縮することができる。
- チームを運営するのは複雑で難しいプロセスであり、チームのための優れた構造とともに優れたマネジメント・スキルが必要だ。グループを率いることについての詳細はこちらをご覧ください。
-
必要ならゼロからやり直す。一度言語に慣れれば、わずか数日でプロトタイプを立ち上げることができるかもしれません。その素早さゆえに、出来上がりに満足できない場合は、アイデアを破棄して別の角度からやり直すことを恐れないでください。この段階で大きな変更を加えるのは、後で機能が整ってくるよりずっと簡単です。
-
すべてにコメントする。プログラミング言語のコメント構文を使って、最も基本的な行を除くすべてのコードにメモを残す。これは、しばらくプロジェクトを中断しなければならなくなったときに、自分が何をしていたかを思い出すのに役立ちますし、他の開発者があなたのコードを理解する助けにもなります。これは、あなたがプログラミング・チームの一員として働いている場合には、特に不可欠です。
- コメントを使って、テスト中にコードの一部を一時的に無効にすることができる。無効にしたいコードをコメント構文で囲むだけで、コンパイルされなくなります。その後、コメント構文を削除すれば、コードは元に戻ります。
アルファテスト
-
テストチームを集める。アルファ版の段階では、テストチームは少人数で構いませんし、そうすべきです。少人数であれば、集中してフィードバックを得ることができ、テスターと1対1で接することができます。プロトタイプにアップデートを加えるたびに、新しいビルドがアルファ版テスターに送られる。テスターは、含まれるすべての機能を試したり、プログラムを壊してみたりして、その結果を文書化します。
- 商用製品を開発する場合は、テスター全員に秘密保持契約(NDA)に署名してもらうようにします。これにより、彼らがあなたのプログラムについて他の人に話すことを防ぎ、プレスや他のユーザーへのリークを防ぐことができます。
- 時間をかけて、しっかりとしたテスト計画を立ててください。テスターがプログラムのバグを簡単に報告したり、アルファ版の新しいバージョンに簡単にアクセスできるようにしましょう。GitHubやその他のコード・リポジトリは、この点を簡単に管理する素晴らしい方法です。
-
プロトタイプを何度もテストする。バグはすべての開発者の悩みの種だ。コードのエラーや予期せぬ使い方は、完成した製品にあらゆる問題を引き起こす可能性があります。プロトタイプを作り続ける際には、できる限りテストを行いましょう。壊すためにできることはすべて行い、そして将来壊れないようにしましょう。
- あなたのプログラムが日付を扱っている場合は、変な日付を入力してみてください。本当に古い日付や遠い未来の日付は、プログラムに奇妙な反応を引き起こすかもしれません。
- 間違った種類の変数を入力する。たとえば、ユーザーの年齢を尋ねるフォームがある場合、代わりに単語を入力して、プログラムがどうなるかを見てください。
- あなたのプログラムにグラフィカル・インターフェースがある場合、すべてをクリックしてください。前の画面に戻ったり、ボタンをクリックする順番を間違えたりしたらどうなるでしょうか?
-
優先順位の高い順にバグに対処する。アルファ版でプログラムを修正する場合、正しく動作しない機能の修正に多くの時間を費やすことになります。アルファ版テスターからのバグ報告を整理する際には、2つの指標に基づいて分類する必要があります:重要度(Severity)」と「優先度(Priority)」です。
- バグの重大度とは、そのバグがどれだけの損害を与えるかを示す指標です。プログラムをクラッシュさせたり、データを破損させたり、プログラムの実行を妨げたりするバグは、ブロッカーと呼ばれます。動作しなかったり、正しくない結果を返したりする機能は「Critical」、使いにくかったり見た目が悪かったりする機能は「Major」と表示されます。また、より小さなセクションやそれほど重要でない機能に影響する、ノーマル、マイナー、トリビアルバグもあります。
- バグの優先順位によって、バグを修正しようとするときに取り組む順番が決まります。ソフトウェアのバグを修正するのは時間のかかる作業で、機能を追加したり改良したりする時間を奪ってしまいます。そのため、納期を守るためには、バグの優先順位を考慮する必要があります。すべてのブロッカーとクリティカルなバグの優先順位は最も高く、P1と呼ばれることもあります。P2バグは通常、修正予定のメジャーバグですが、製品の出荷を遅らせることはありません。P3とP4のバグは、通常、予定されていない修正であり、「あってよかった」カテゴリーに入ります。
-
機能を増やす。アルファ段階では、設計書に書かれたプログラムに近づけるために、さらに機能を追加していきます。アルファ段階は、プロトタイプが完全なプログラムの基本へと進化する場所です。アルファ段階が終わる頃には、あなたのプログラムはすべての機能を実装しているはずです。
- 最初の設計書から大きく外れないようにしましょう。ソフトウェア開発における一般的な問題は、「フィーチャー・クリープ」です。これは、新しいアイデアがどんどん追加されることで、当初の焦点が失われ、開発時間があまりにも多くの異なる機能に分散してしまうというものです。あなたのプログラムは、何でも屋ではなく、何をするにも最高のものであってほしい。
-
機能を追加するたびにテストを行う。アルファ版の段階でプログラムに機能を追加したら、新しいビルドをテスターに送りましょう。新しいビルドを定期的に送るかどうかは、チームの規模や機能の進捗具合に完全に依存する。
-
アルファ版が終了したら、機能をロックしましょう。プログラムのすべての機能と特徴を実装し終えたら、アルファ段階を終了することができます。この時点では、これ以上機能を追加すべきではありませんし、含まれている機能は基本的に動作するはずです。これで、ベータ段階と呼ばれる、より広範なテストと改良に移ることができます。
ベータテスト
-
テストグループの人数を増やしましょう。ベータフェーズでは、プログラムをより多くのテスターグループに公開します。開発者によっては、オープンベータと呼ばれるベータフェーズを公開するところもあります。これにより、誰でもサインアップして製品のテストに参加できるようになります。
- あなたの製品のニーズによって、オープンベータを行うかどうか決めましょう。
-
接続性をテストする。プログラムがますます相互接続されるようになるにつれ、あなたのプログラムが他の製品への接続やサーバーへの接続に依存する可能性が高くなります。ベータ・テストを行うことで、これらの接続がより大きな負荷のもとで確実に動作することを確認することができ、あなたのプログラムがリリースされたときに一般ユーザーが使用できることを保証することができます。
-
ソフトウェアを磨く。ベータ段階では、これ以上機能が追加されないため、プログラムの美観とユーザビリティの向上に焦点を当てることができます。このフェーズでは、UIデザインが優先され、ユーザーがプログラムをナビゲートし、機能を利用するのに苦労しないようにします。
- UIデザインと機能性は非常に難しく、複雑である。UIのデザインでキャリアを築く人もいる。ただ、あなたの個人プロジェクトが使いやすく、目に優しいものであることを確認してください。プロフェッショナルなUIは、予算とチームがなければ実現できないかもしれない。
- 予算があれば、UIデザインを請け負ってくれるフリーランスのグラフィックデザイナーはたくさんいます。次の大物になることを期待している確かなプロジェクトがあるなら、優れたUIデザイナーを見つけ、彼らをチームの一員にしましょう。
-
バグ探しを続ける。ベータフェーズ中も、ユーザーベースからのバグレポートをカタログ化し、優先順位をつけるべきです。より多くのテスターが製品にアクセスするため、新しいバグが発見される可能性があります。最終期限を念頭に置きながら、優先順位に基づいてバグを排除していきましょう。
プログラムのリリース
-
プログラムを売り込みましょう。ユーザーを獲得したいのであれば、あなたのプログラムの存在を知ってもらう必要があります。他の商品と同じように、人々に知ってもらうためにはちょっとした宣伝が必要です。マーケティング・キャンペーンの範囲と深さは、あなたのプログラムの機能と利用可能な予算によって決まります。プログラムの認知度を高める簡単な方法には、次のようなものがあります:
- 関連掲示板にあなたのプログラムについて投稿する。どの掲示板を選ぶにしても、投稿がスパムとしてマークされないよう、その掲示板の投稿ルールに従っていることを確認すること。
- 技術系サイトにプレスリリースを送る。あなたのプログラムのジャンルに合う技術系のブログやサイトをいくつか探しましょう。あなたのプログラムの詳細とその機能を記したプレスリリースを編集者に送る。スクリーンショットを数枚添付する。
- YouTubeのビデオをいくつか作る。あなたのプログラムが特定のタスクを完了するように設計されている場合、あなたのプログラムが実際に動いている様子を紹介するYouTubeビデオをいくつか作りましょう。ハウツー」ビデオとして構成しましょう。
- ソーシャルメディアのページを作る。無料のFacebookやGoogle+のページを作成し、Twitterを使って会社やプログラムに関するニュースを発信することができます。
-
ウェブサイトにプログラムを掲載する。小規模なプログラムであれば、ほとんどの場合、自分のウェブサイトでファイルをホストすることができます。ソフトウェアに課金するのであれば、支払いシステムを含めるとよいでしょう。あなたのプログラムが非常に人気になった場合、より多くのダウンロードを処理できるサーバーにファイルをホストする必要があるかもしれません。
-
サポート・サービスを設定する。あなたのプログラムが世に出れば、技術的な問題を抱えたユーザーや、プログラムの仕組みを理解していないユーザーが必ず現れます。あなたのウェブサイトには、徹底したドキュメントを用意するとともに、何らかのサポート・サービスを設けるべきです。これには、テクニカル・サポート・フォーラム、サポート・メール、ライブ・ヘルプ、またはそれらの組み合わせが含まれます。何を提供できるかは、予算次第です。
-
製品を常に最新の状態に保つ。最近では、ほとんどすべてのプログラムにパッチが当てられ、最初のリリースから長い間更新されています。これらのパッチは、致命的または非重要なバグの修正、セキュリティ・プロトコルの更新、安定性の向上、あるいは機能の追加や美観の一新などがあります。プログラムをアップデートし続けることは、競争力を維持することにつながります。
コメント
最新を表示する
NG表示方式
NGID一覧