質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.75%

  • JavaScript

    15277questions

    JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

  • HTML

    8300questions

    HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

  • Python

    6842questions

    Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

プログラミングを使って作りたいものがある時の調べ方、プログラムの組み立て方

解決済

回答 9

投稿

  • 評価
  • クリップ 11
  • VIEW 847

szk24

score 70

タイトルの通りなのですが、プログラミングを使って作りたいものがあった時、それを作るときにどうやって実装の仕方を調べたり、プログラムの組み立て方を考える、もしくは調べますか?考え方の思考手順や調べ方が知りたいです。

例えば、プログラムに何か絵を描かせてjpgやpngで出力させたいとした場合、どうやって調べたら良いでしょうか?(例えが悪くて答え難かったらすみません。)

ざっくりとした質問で申し訳ありませんが教えて下さると助かります。

宜しくお願い致します。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 9

checkベストアンサー

+24

それを作るときにどうやって実装の仕方を調べたり

通常、いきなり実装については考えることはありません。

「要件」を考えることが先です。
その「要件」を細分化していき、細分化した項目について必要な部品を集めます。

プログラムに何か絵を描かせてjpgやpngで出力させたい

例をあげるとこのような感じ。

要件:画像を出力する(タイトルにもなるので簡潔に)

項目:

  1. 出力形式はjpgまたはpng
    →出力する場所は:Webブラウザで参照する
    →最終的にはHTMLで出力
  2. 絵はプログラムで描く
    →利用する言語は?:Python(タグにあったため例として利用しました)

上記で、自身が持っていない技術、持っている技術が明確になるので、
「自身が持っていない技術」の方を「調査項目」とする。

私の場合、Pythonについてはほとんど無知なので最初からとなります。
他の言語(例えばPHP)については理解できているという前提があるので、
一応「こうすればできるのでは?」という仮説は立てた上で、調査項目を決定します。

調査項目:

  1. PythonでHTML出力するには?
    検索条件: Python Webサイト 作成
    →Djangoというフレームワークが使えそう
  2. Pythonで画像を描くには?
    検索条件: Python 画像 作成
    →Imageというライブラリがある?

という感じ、あとは検索結果を元に1つ1つ組み立てていって試行錯誤していきます。


超蛇足の独り言:
おそらくこのような要件の定義から調査まできちんとできれば質問者って減るんだろうな・・・

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/04/21 14:56

    お礼が遅くなり申し訳ありませんでした。
    具体的な調べ方・組み立て方の回答ありがとうございます。

    mts10806さんが仰られている要件の定義から調査がやり方が良く解っておらずココで躓いている状態のようです。
    要件の細分化が重要だということがわかりました。要件の細分化には何かこうしたら細分化できるというコツとかってあるのでしょうか?
    大まかな作りたいワードで検索しながら、ここはもっと細かくできる(しないとできない)、とかってやっていくのでしょうか?

    キャンセル

  • 2018/04/21 20:36 編集

    > 要件の細分化には何かこうしたら細分化できるというコツとかってあるのでしょうか?

    慣れ の部分は小さくないですね。
    経験はかなり重要です。でも誰だって最初は手さぐりなものだと思います。
    失敗だってします。ただ、その失敗を次に活かせるかどうかで成長度合いに大きく影響します。
    私自身も今でも試行錯誤の連続です。

    > 大まかな作りたいワードで検索しながら、ここはもっと細かくできる(しないとできない)、とかってやっていくのでしょうか?

    メリハリが大事です。
    細分化する
    →調べる
     過不足を感じたら戻る
    →要件を見直して細分化(取捨選択なので場合により前に出した項目が消えることもあります)
    →調べる
    (繰り返し)

    「ながら」だとメリハリがつかず、集中力も持ちません。
    集中力が欠けてしまっては良い結果にはつながりません。

    イメージがつくかわからないですが、「英文を日本語に訳していく工程」をイメージしてもらえるといいかもしれません。

    いきなり「わからない単語」から調べ始めては全体の文脈を掴むことはできず、英文が伝えたい意味を正しくとらえることはできないと思います。
    その「全体の文脈」がプログラミングにおいては「要件」に当たる部分となります。
    あとは部品として単語ではなく、「文法」や「慣用句」などの「文章を組み立てる要素」に分解して、おおよその訳文の骨格部分を作り、最後に「単語」を調べて文脈に合う意味をあてはめて「完成」に向かっていきます。

    私の場合はこのようなイメージでいます。

    枝葉の部分にこだわるのではなく、あくまで幹の部分をしっかりとした上で、肉付けをしていくことでしっかりとした成果物ができあがっていきます。

    システム開発においても何かバグがでたときにも同じようなやり方で根本原因に辿りつくことができます。エラーメッセージは大事ですが、そこだけで解決できるとは限りませんし、エラーが出ていない場合は色んな仮説を立てて対応していく必要があります。

    質問者さんがどのような経験をされてきたか存じ上げませんが、
    「枝葉にこだわらない」部分をしっかり意識することで、「必要な情報」へのアクセスをより的確に、迅速にできるようになると思いますよ。
    (あと、自身の持っている技術とそのレベル、持っていない技術をなるべく明確にしておくと良いです)

    キャンセル

  • 2018/04/21 20:51

    あと、細分化は具体的であれば具体的であるほどいいのは確かですが、
    細かすぎても全体像から離れていく可能性もあります。
    ちょっと手法名を失念してしまったのですが、1つの項目に対して6個の関連項目にわけ、その1つ1つをまた6個の関連項目にわけていくと 適切に細分化でき、また中央には必ず本来の要件があるため、ずれることなく考えることができるそうです。
    六角形で作ると良いようですね(私の調べ方が悪いのか出てこない・・・)

    キャンセル

  • 2018/04/21 21:08

    ちょっと思ってたのと違いますが、KJ法というのも考え方としては役立ちそうです。
    https://bizhint.jp/keyword/143560

    キャンセル

  • 2018/04/21 21:18

    全く自信はありませんが、6つというキーワードから見つかったのが『Cell Storming』(iPhoneアプリ)と「VRPDCI (Vision Research Plan Do Check Indemnity)」でした。
    http://septill.blogspot.jp/2015/08/cell-storming.html
    http://hige-sun.net/task-saibunka/

    キャンセル

  • 2018/04/21 21:21

    think49さん
    ありがとうございます。1つ目がかなり近いですね。
    確かにアプリでも見たような記憶もあります。

    キャンセル

  • 2018/05/06 13:16

    詳しい回答ありがとうございます。

    プログラミング経験は浅いです。独学で勉強していて、家の近くにプログラミング教室とかはありません。
    もしかしたら、幹の部分すら良く解っていないのかもしれません。が、1つの項目に対して6個の関連項目に分け…という手法、やってみたいと思います。
    ありがとうございました。

    キャンセル

+7

NOTE:
以下は私のやり方ですから, あくまで参考程度に. 
やりたいことに対する要件すらおぼろげな前提です.


まずは条件を大きく縛り(画像処理であればサイズ・色等は全て固定等), その条件の元で必要となりそうなフローを(あとから修正する前提で)スケルトンコードとして記述します. 何も解らない時点で条件を曖昧にしておくと考察対象に対する焦点がぼけ, 結局わからないままに終わるからです.

そこに必要となりそうな処理やライブラリを当てはめ, うまく行きそうにない場合はしっくりくるまでフローを入れ替えていきます. この作業の中で, 目的としている機能を実現する上での勘所がおぼろげながら見えてくるため, それらを逐一メモするなりコメントするなりして残しておきます. 

なお, 記述したコードは実際に動作させ, その処理フローやライブラリの発するエラー等について目を光らせます. コツとしては常にコードを少しずつ投入して問題の発生箇所範囲を狭めておくことです.

NOTE:
この過程で判らない部分については調査を掘り下げたり, もっと小さな動作検証タスクを挟むようにします.
※知らない分野でのプログラミングではここが最も辛いところで, 場合によりかなりの時間を要します.


ある程度処理の流れが見え曲がりなりにも目的とした出力が得られたら, これまでのコードは一旦忘れ, 処理に必要なインターフェース(入力パラメータ, 出力形式つまりプログラム要件)について考察し, 決定します. 一度は処理の流れを把握しているので, そのプログラムを使うに当たって必要な要件はある程度明確化されているはずです.

次にそのインターフェースの元できちんとした設計をします. 既に処理の勘所については検証済みであるため, その内容が設計に反映されるようにします. テストを作るのであればこの時点でしょう.

後はその設計のもとでコードを記述していきます. 既に基礎となる部分についての考証は済んでいるため, さほど苦労することなく作業を続けることが可能です. またわからないことがあれば先ほどの動くコードを参考とします.

総括
まずは短くても良いから動くものを作れ
動くものさえあればそこを足がかりに後は何とかなる

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/04/21 14:32

    お礼が遅くなり申し訳ありませんでした。
    回答ありがとうございます。

    >何も解らない時点で条件を曖昧にしておくと考察対象に対する焦点がぼけ, 結局わからないままに終わるからです.
    と回答頂きましたが、何も解らない状態で条件を明確にするには、何か明確にするコツとかあるのでしょうか?
    (te2jiさんが回答下さったように要素単位に分解するとして)defghi1977さんが回答下さったように分解する条件を明確にするにはどうしたら良いのでしょうか?
    質問ばかりで申し訳ありませんが教えて下さると嬉しいです。

    キャンセル

  • 2018/04/21 14:49

    まずは, 自分が想像している内容で「多分こうかな」と指針を立てます.
    その前提で, アルゴリズムや関連するライブラリ, 仕様, 技術論文, サンプルコードについて調べ最初に立てた指針の方向性が正しかったか・間違っていたか(どうも話が噛み合わない等)を判定します.
    あっていれば, そのまま実際に動作するコードを試作し, 間違っていれば今一度指針の内容を修正して同じことを繰り返します.

    で,
    > 何も解らない状態で条件を明確にするには、何か明確にするコツとかあるのでしょうか?
    そのような黄金パターンは存在しないので, これまでの経験から推測するしかありません. なので, 経験が未熟なうちや未経験の分野ではすげーしんどいです. しかし, わからない中であっても目的をもってコードを記述したり調査を進めていく内に「なにかしら見えてくる筈」だと信じています.
    ※とは言え, これは自分のモチベーションとの戦いなので, 出来うる限り考察対象に興味を持ち続けられるかが鍵となります.

    精神論にしかなりませんが, ソフトウェアエンジニアリング以前の問題ですとなかなかこれと言った結論は出ないと思います.

    キャンセル

  • 2018/04/21 14:57

    もう一つアドバイスを挙げるとすれば, 自分の専門もしくは興味の範疇外の分野における技術においてもその内容を一通り眺めておく程度の余裕を持ちたいところです. というのも, 意外な技術が背後で繋がっていることはよくあり, 一見難しく見えていた問題もその部分をとっかかりとして比較的容易に解決できることがあるからです.
    課題を目の前に悩み抜くのも良いですが, 出来うる限り知識を詰め込んでおいて, 神が降りてくるのを待つのも実は効果的です. (脳みその閃きを侮ってはなりません)

    キャンセル

  • 2018/05/06 13:10

    詳しく回答頂きありがとうございます。

    トライ&エラーとわからないなりに目的をもってコードを記述したり調査をすることが大事なのですね。心にとめておきたいと思います。
    あと、今後は興味外の技術も気に留めていこうと思います。
    ありがとうございました。

    キャンセル

+4

自分が思いつく程度のことはたいてい先に誰かが思いついているので、まずはググってそういうものを探します。
誰も思いついていなかったら、仕方ないので構成要素に分解したり、類似のものを考えて、それらでググります。
たとえば「プログラムに絵を描かせる」は誰も思いついてなくて情報が出てこないかもしれませんが、「マウス入力でお絵かきするプログラムを作る」は誰かがやっていたとする。そしたら、マウス入力の部分をプログラムからデータを受け取る形に変えれば良いです。簡単にできそうですね。
あるいは、○○言語の配列をjpgに変換する、というのを調べても良さそうですね。それがわかれば、あとは○○言語で配列に好きな値を入れるプログラムは、自分で頑張って書けば良いですから。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/04/20 10:20

    確かに、「プログラムに何か絵を描かせて」っていろんな捉え方ができますね。
    かなりきちんと要件を定義しておかないと早々にこけそうです。

    キャンセル

  • 2018/04/20 10:28

    「何か絵を描かせてjpgやpngで出力させたいとした場合、どうやって調べたら良いでしょうか」という質問なので、どんな要件を定義するかも含めてこれから調べるのだろう・・・と見当をつけつつ、「とにかく似たようなものがないかググってみると良いですよ」と回答した次第です

    キャンセル

  • 2018/04/21 15:20

    お礼が遅くなり申し訳ありませんでした。
    回答ありがとうございます。

    まず、わかりにくい例えで申し訳ありませんでした。プログラムが勝手に(自動で)絵を描いてくれるものを作りたい、と言えば要件の定義として大丈夫でしょうか?

    質問をする際に似たものがないかな…と思ってGitHubで検索をかけたのですがDeep Learningで…というのが出てきたのですが、色々なファイルがあって、どこを見てよいのかわからずという状態で止まりました。わかったことは、「Deep Learningを使うとできそうだ」ということでした。(自分にはハードルが高そうだということもわかりました。)

    あと、Twitterも検索したのですが、アルゴリズムを修正しながらプログラムが自動で絵を描くというものを作った人がいたのですが、コードを公表していらっしゃらないようでしたので、「プログラムが自動で絵を描くにはアルゴリズムを使う」ということしかわかりませんでした。

    >「マウス入力でお絵かきするプログラムを作る」は誰かがやっていたとする。そしたら、マウス入力の部分をプログラムからデータを受け取る形に変えれば良いです。簡単にできそうですね。
    確かに、誰かが作ったものに改良を加えるのであればできそうな気がしますが、自分の実力だと簡単にはいきそうもないです。(苦笑)

    キャンセル

  • 2018/04/21 16:27

    >プログラムが勝手に(自動で)絵を描いてくれるものを作りたい、と言えば要件の定義として大丈夫でしょうか?
    駄目でしょう。これは「やりたいなぁ」程度です。
    そもそも要件定義以前には要求定義があるのですが、そこからしてアバウトすぎて、ちょっとよくわかりません。
    その「やりたいなぁ」から私が想像し得る要求の振れ幅としては、
    ・どの程度の「絵」なのか(落書きとか棒人間が描ければ良い~人が描くような水準のイラストをコンピュータに生成させたい)
    ・どの程度「自動」なのか(人間が「ここに点を打て」「ここに線を引け」という水準のデータを入れる~ビッグデータをDNNなどで機械学習して本当に自動で生成する など)
    ・どんな入出力なのか(出力はコンピュータが描いた絵で良いとして、入力をどうするのか)
    まだまだ色々あると思いますが、このような振れがなくなるように要求をまず決めないといけません。
    要求が決まったら、それを実現するにはなにをしなくてはいけないかを洗い出して、それでやっと要件が定義できます。

    キャンセル

  • 2018/05/06 13:18

    おお、そうやって要件定義をしていくのですね。
    ちょっと書き出してやり直したいと思います。
    ありがとうございました。

    キャンセル

+4

ひとまず、タグにJavaScriptとありますので、その前提でお答えいたします。

まずは、何をしたいのかと、目的を明確にします。
ここでいう目的とは、どこかに発表するのか、仕事でウェブサイトに掲載するのかとかってことです。ようは、プラットフォームがどこになるかを明確にするってことです。
そうしないと、使う方法も変わってきます。
例えば、仕事なら、締め切りがあるので、簡単で早い方法を使う必要がありますし、
技術を高めたいだけなら、新しい挑戦をするために時間をかけれるでしょう。
やり方は一つとは限らないので。

そこらへんを明確にしたら、
基本、ググって調べますが、その時、
まずはそのまま目的の言葉で調べます。
javascript 絵を描かせる
とかそれでもど直球の記事が出ない場合は、
まずはどこでもいいので記事を開いて見て、それらしい新たなキーワードを見つけます。

例えば、上記のキーワードで調べると、真っ先にcanvasで描画する方法が出てくるでしょう。
ほうほう、canvasというのがあるのか・・・。
ってわかったら、次は下記のキーワードで探します。

javascript canvas 絵を描かせる

絵を描かせるという部分を分解して、

javascript canvas 絵 描画

という風にした方がいい記事が出てくるかもしれません。

そうやって掘り下げて調べていって、
また、細かい情報を一つ一つ取り上げて、
組み合わせて、自身の目的を達成していきます。

で、ググってもググってもだめなら、
本を探して読む方が早かったりします。
なぜなら、本は専門家が書いていて、マニアックな技術も書いてたりしますし、
何より、その一つの機能(例えばcanvasについてですね)についてかなり掘り下げて書かれているので、
別のところで役立つ情報も載ってたりするので、自身の力になります。
もちろん当たり外れはありますが、それはググるのも同じです。
(ただし、本はほぼほぼの場合金がかかります 笑)

一番大事なのは、見つけ出す執念だと思います。
見つかるまであきらめないで探し続けるってことです。

ご参考になれば幸いです。
頑張ってください。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/04/20 10:28

    > 一番大事なのは、見つけ出す執念

    ほんとに、これは初学者皆さん持ってもらいたい。

    キャンセル

  • 2018/04/20 10:29

    mts10806さん>
    ですね。
    すぐ見つかる、簡単な方法がいい、と思っちゃってる人が若い人に特に多い気がします。

    キャンセル

  • 2018/04/20 13:29 編集

    たしかにそうですよね。ただ、若い人は「簡単な方法がいい」と正直に言ってくれるので、逆にありがたいと最近思うようになりました。
    ベテラン社員の場合、「調査したが効率のよい方法が見つからなかった(本当は深く調べてない)」とか言って、うまく逃げるので少し厄介です。

    キャンセル

  • 2018/04/20 13:34

    なるほど・・・!
    確かに、ベテランほど、やりたくないから言い訳して逃げるパターンありますよね。
    自分はそうならないようにしようとしてますが、
    ベテランでもないのに、けっこううまく逃げようとしてしまいます 笑
    若い人の素直さ見習います。

    キャンセル

  • 2018/04/21 14:48

    お礼が遅くなり申し訳ありませんでした。
    回答ありがとうございます。

    見つけ出す執念…できていない気がします。ググっても見つけられない…ダメだ、とすぐになっています。miyabi_takatsukさんと回答者さん以外の方が仰られているように「すぐに見つかる、簡単な方法がいい」と思っているところはあります。執念のなさに申し訳ない気持ちになります。

    キャンセル

+4

 PDCAサイクル

厳密に決めていませんし、頭の中だけで済ます事も多いですが、手順をまとめると

  1. 要件定義 (CSVを二次元配列に変換したい)
  2. 要求仕様定義 (RFC4180準拠、マルチバイト文字も許可する)
  3. 必要な技術仕様(Web標準)を調査 (String#replace, RegExp#exec, ...)
  4. 実装(コーディング)
  5. テスト

  1. を確定させたら、「2.~5.」をPDCAサイクルで回す感じです。
  2. で詳細を煮詰められてなかったり、3. の選定が甘い(実現不可能な技術を選んでしまう)と、PDCAを回す回数が多くなり、時間がかかります。
    実際にはtもとに材料がそろっていて、3. を省略したり、コーディングから初めて前に戻ったりすることもありますが、基本に忠実なのは上記です。

「4. 実装(コーディング)」の部分は常に頭の中でアルゴリズムを組み立てながら、書いている感覚があります。

  1. アルゴリズムを組み立てる
  2. コーディング
  3. 無駄があれば、1. に戻る

よくいわれることですが、コーディング時間よりも調査/仕様定義に時間をかけます

 Web標準

HTML/CSS/JavaScript等のクライアントサイドの技術に限って述べるなら、Web標準仕様を選ぶように気をtけています。
特定のブラウザの独自拡張基準でコーディングすると、クロスブラウザで苦労するので、Web標準を基準にコードを書いています。

 気を付けていること

(A) 一次情報から調査 (二次情報は過去の経験則から信頼できると判断できるものだけ利用します)
(B) 仕様を一つずつ理解できるまでコードを書く(例えば、String.prototype.replace の仕様を理解できたと納得できるまでトライアンドエラーを繰り返します。初めから、本番コードは書きません。)
(C) 分からない内容が多岐にわたる場合には、情報を細分化して一つずつ片付ける

Re: szk24 さん

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/04/21 15:14 編集

    teratailのmarkdownで「5. テスト\n\n1. を確定させたら」が「5. テスト\n6. を確定させたら」として扱われてしまうんですね…。
    空行で段落を分けているつもりなのですが、一つのol>li扱いされてしまいます。

    キャンセル

  • 2018/05/06 13:00

    お礼が遅くなり申し訳ありませんでした。
    回答ありがとうございます。

    PDCAサイクルについては聞いたことがあったのですが、よくわかっていませんでした。
    1の要件定義の部分からわかっていないことが多いので、ネックになっている部分は、まずそこなのかなと思っています。
    気を付けていることに書いてくださっている(B)はできていないので、注意したいと思います。

    ありがとうございました。

    キャンセル

+2

プログラミングを使って作りたいものがあった時、それを作るときにどうやって実装の仕方を調べたり、プログラムの組み立て方を考える、もしくは調べますか?考え方の思考手順や調べ方が知りたいです。

これって、実は全然バラバラな質問の集合なので、明確に回答するのは難しいのですが、思いつくままに記述させてもらいます。

 作りたいものを作る方法

これは、開発モデルとして昔からいくつも試行錯誤されています。
もっともポピュラーでわかりやすいのは、ウォーターフォール・モデルなので、ここを足がかりに学習すると良いです。

 実装の仕方の調査

ウォーターフォール・モデルの中では、概要/詳細設計フェーズでの調査になると思いますが、多くの場合、その実装方法には名前がついています。調査は、その名前にたどり着くとこを目標にすると良いです。

 プログラムの組み立て方を考える

これは、詳細設計とプログラミングに関わる箇所になると思いますが、どこまで要素単位に分解できるか?がカギです。多くのプログラミング言語は、要素単位で実装したものを組み合わせることで、動作することを可能としています。
要素単位まで分解できれば、実装は単純な作業となるはずです。
で、肝心の要素技術への分解ですが、過去の実績と勘が重要になります。
周りに聞ける人がいるのであれば、聞きまくりましょう。
ここのスキルが、プログラマーの質だと私は思っています。
普段から、メジャーなライブラリを眺めるとか、フレームワークを分解してみるとかしてると鍛えられるようです。


思いつくままに書いたので、抽象的で微妙な回答になりましたが、参考になれば。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/04/21 14:20

    お礼が遅くなり申し訳ありませんでした。
    回答ありがとうございます。

    ウォーターフォール・モデルは調べてみたいと思います。
    ポイントとしては、要素単位に分解することなのですね。フレームワークを分解してみるというのがイメージできないのですが、具体的にはどんなことをすれば良いのでしょうか?(今、ググってみたのですが、うまく検索にヒットしなかったのですが…)もしご迷惑でなければ追加で教えて下さると嬉しいです。

    キャンセル

  • 2018/04/21 16:39

    > ポイントとしては、要素単位に分解することなのですね。
    プログラミングって、最終的にはどのような「データ構造」をどのような「手順(アルゴリズム)」で処理するかってことになります。
    実装できる単位が上記なので、そこまで分解することを目的として、詳細設計を行います。

    フレームワークはある程度指向の共通した要件を実装する場合に使用するものなので、分解してみるとどういった場合に、どういったデータの持ち方をして、処理をすればよいかがわかりやすく追えます。

    検索でヒットするようなものではないです^^;

    (余談)
    「体系的にまとまった思考手順」入手するのに、ググることは余り適していません。ネット上の情報は、「思考手順」を現実に落とし込むときに、使用するのに適しています。

    体系的にまとまった思考手順を入手するのは、良書を読むのが手っ取り早いです。

    書籍に関しての質問が過去にあったので参考まで。
    https://teratail.com/questions/2963

    キャンセル

  • 2018/05/06 13:05

    >プログラミングって、最終的にはどのような「データ構造」をどのような「手順(アルゴリズム)」で処理するかってことになります。
    この部分、なるほどと思いました。データ構造というのがよくわかっていないですが、こういう考え方はしてなかったように思います。

    良書も挙げて下さり、ありがとうございました。参考にさせて頂きます。
    ありがとうございました。

    キャンセル

+2

ソリューションのコンサルティングでは、「〜がしたいなぁ」と言っているお客さんをよくよくよく理解する事が一番大切で、そこで結局「何がしたいのか」「なぜしたいのか」「使えるものは何か」「やっちゃダメな事は何か」等を明確にしながら要件を詰めていきます。

ここでは自分自身がお客さんになると思うので、自分をよくよくよく理解して要件が詰められればあとは、mts10806さんの流れで進めていけると思います。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/04/21 14:11

    お礼が遅くなり申し訳ありませんでした。

    回答ありがとうございます。

    「何がしたいのか」はわかっていると思います。その後、「使えるものは何か」「やっちゃダメな事は何か」をどう調べて詰めていったら良いのかわかっていないのだと思います。

    何かコツとかありますでしょうか?

    キャンセル

  • 2018/04/21 14:58 編集

    どちらも調べるものとは少し違います。使えるものは自問自答です。お金、時間、パソコンなど、スキル、知識、やる気、等々。で、やっちゃダメな事は法律や契約、道徳や倫理から導きます。

    キャンセル

  • 2018/05/06 13:03

    少しわかったような気がします。
    ありがとうございました。

    キャンセル

+1

私は

  1. 何を作るか?
  2. どのようにすれば実現できるか?
  3. それには何が必要か?

の順に考えます。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/05/06 13:02

    お礼が遅くなり申し訳ありませんでした。
    回答ありがとうございます。

    2のどのようにすれば実現できるか?が良く解っていないのだと思います。そこで躓いている感はあります。
    思考手順を書いて下さりありがとうございました。

    キャンセル

-3

プログラムに何か絵を描かせてjpgやpngで出力させたいとした場合

Yahoo!などで「HTML 画像を出力する方法」と検索するのはどうですか?

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/04/20 10:06

    それでは「プログラムに何か絵を書かせて」部分が満たせません。

    キャンセル

  • 2018/04/20 10:06

    質問のタグにHTMLがあったのでこういう回答にしました。
    質問の内容を勘違いしたならすみません。

    キャンセル

  • 2018/04/20 10:08

    であれば「Python」部分も意向を組んであげたいですね。

    キャンセル

  • 2018/04/20 10:14

    すみませんが、Pythonのほうはあまり詳しくありません。

    キャンセル

  • 2018/04/20 10:15

    とりあえず、「Python 絵を描かせる 」と検索するのはどうですか?

    キャンセル

  • 2018/04/20 10:22 編集

    そのように回答に追記すれば良いかと。
    いずれにしてもあくまで「例」なので質問者さんが本来知りたい部分(要は標題)への回答としては少し不十分ですね。

    ※蛇足ですが、Yahoo!の検索の仕組みは裏ではGoogleと同じエンジンを使うようになったはずなので、ほとんどのケースで検索結果は同じとなります。

    キャンセル

  • 2018/04/21 15:23

    お礼が遅くなり申し訳ありませんでした。
    回答ありがとうございます。

    GitHubで検索はしてみたのですが、Googleでも検索してみようと思います。

    ありがとうございました。

    キャンセル

  • 2018/04/21 15:48

    本来知りたい部分への回答として不十分ですみません。

    キャンセル

  • 2018/05/06 13:20

    いえいえ、参考にさせて頂いていますよ。
    ありがとうございます。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.75%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

  • 解決済

    オブジェクト指向と関数型プログラミングのメリット・デメリットを列挙してください

    オブジェクト指向と関数型プログラミングのメリット・デメリットを列挙してください。 また、個人的な意見も教えてください。

  • 解決済

    作りたいものがない

    作りたいものがないです というより作ることに興味がなく、どちらかというと競技プログラミングのように時間内に問題を解いたり、アルゴリズムを考えたりするほうに興味があるのですが、、、作

  • 解決済

    フィボナッチ数列

    フィボナッチ数列を求めるためのプログラムを次の方針で作成したい。 ・第何項まで計算したいかをコマンドライン引数で指定する。 ・フィボナッチ数列は配列  fibo[] に 格納す

  • 解決済

    twitterで特定のワードに反応するbot

    twitterにて特定のワードに反応するbotを作りたいのですが どのように作成すればよいでしょうか へんな質問ですいません。

  • 解決済

    PHPで画像アップロード掲示板を作ろう

    ドットインストールの「PHPで画像アップロード掲示板を作ろう(http://dotinstall.com/lessons/upload_image_php_v2)」というレッスンを

  • 解決済

    GPSロガーアプリを作りたい

    iosアプリでGPSロガーを作りたいのですが作り方がわからず困っています。 何かわかりやすい情報源などございましたら教えていただきたいです。 またバックエンドはrails、

  • 解決済

    フリーソフトをアップロードして第三者に使ってもらいたいんですが、、、。

    久方ぶりに、また質問をさせてもらいます。 皆さんのお力がまた必要となりました。 私は、GUIアプリケーションを制作しました。 これを第三者に使ってもらおうと思うのです。

  • 解決済

    主流のフォントはどれか?

    Attributes InspectorのtypeをAttributeに変更し、『T』を押すと、フォントを変更できると思います。 こんな感じで、私はヒラギノ角ゴシックのW3を

同じタグがついた質問を見る

  • JavaScript

    15277questions

    JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

  • HTML

    8300questions

    HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

  • Python

    6842questions

    Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。