タイトルの通りなのですが、プログラミングを使って作りたいものがあった時、それを作るときにどうやって実装の仕方を調べたり、プログラムの組み立て方を考える、もしくは調べますか?考え方の思考手順や調べ方が知りたいです。
例えば、プログラムに何か絵を描かせてjpgやpngで出力させたいとした場合、どうやって調べたら良いでしょうか?(例えが悪くて答え難かったらすみません。)
ざっくりとした質問で申し訳ありませんが教えて下さると助かります。
宜しくお願い致します。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答9件
0
ベストアンサー
それを作るときにどうやって実装の仕方を調べたり
通常、いきなり実装については考えることはありません。
「要件」を考えることが先です。
その「要件」を細分化していき、細分化した項目について必要な部品を集めます。
プログラムに何か絵を描かせてjpgやpngで出力させたい
例をあげるとこのような感じ。
要件:画像を出力する(タイトルにもなるので簡潔に)
項目:
0. 出力形式はjpgまたはpng
→出力する場所は:Webブラウザで参照する
→最終的にはHTMLで出力
0. 絵はプログラムで描く
→利用する言語は?:Python(タグにあったため例として利用しました)
上記で、自身が持っていない技術、持っている技術が明確になるので、
「自身が持っていない技術」の方を「調査項目」とする。
私の場合、Pythonについてはほとんど無知なので最初からとなります。
他の言語(例えばPHP)については理解できているという前提があるので、
一応「こうすればできるのでは?」という仮説は立てた上で、調査項目を決定します。
調査項目:
0. PythonでHTML出力するには?
検索条件: Python Webサイト 作成
→Djangoというフレームワークが使えそう
0. Pythonで画像を描くには?
検索条件: Python 画像 作成
→Imageというライブラリがある?
という感じ、あとは検索結果を元に1つ1つ組み立てていって試行錯誤していきます。
超蛇足の独り言:
おそらくこのような要件の定義から調査まできちんとできれば質問者って減るんだろうな・・・
投稿2018/04/20 01:18
編集2018/04/20 01:41総合スコア80875
0
NOTE:
以下は私のやり方ですから, あくまで参考程度に.
やりたいことに対する要件すらおぼろげな前提です.
まずは条件を大きく縛り(画像処理であればサイズ・色等は全て固定等), その条件の元で必要となりそうなフローを(あとから修正する前提で)スケルトンコードとして記述します. 何も解らない時点で条件を曖昧にしておくと考察対象に対する焦点がぼけ, 結局わからないままに終わるからです.
そこに必要となりそうな処理やライブラリを当てはめ, うまく行きそうにない場合はしっくりくるまでフローを入れ替えていきます. この作業の中で, 目的としている機能を実現する上での勘所がおぼろげながら見えてくるため, それらを逐一メモするなりコメントするなりして残しておきます.
なお, 記述したコードは実際に動作させ, その処理フローやライブラリの発するエラー等について目を光らせます. コツとしては常にコードを少しずつ投入して問題の発生箇所範囲を狭めておくことです.
NOTE:
この過程で判らない部分については調査を掘り下げたり, もっと小さな動作検証タスクを挟むようにします.
※知らない分野でのプログラミングではここが最も辛いところで, 場合によりかなりの時間を要します.
ある程度処理の流れが見え曲がりなりにも目的とした出力が得られたら, これまでのコードは一旦忘れ, 処理に必要なインターフェース(入力パラメータ, 出力形式つまりプログラム要件)について考察し, 決定します. 一度は処理の流れを把握しているので, そのプログラムを使うに当たって必要な要件はある程度明確化されているはずです.
次にそのインターフェースの元できちんとした設計をします. 既に処理の勘所については検証済みであるため, その内容が設計に反映されるようにします. テストを作るのであればこの時点でしょう.
後はその設計のもとでコードを記述していきます. 既に基礎となる部分についての考証は済んでいるため, さほど苦労することなく作業を続けることが可能です. またわからないことがあれば先ほどの動くコードを参考とします.
総括
まずは短くても良いから動くものを作れ
動くものさえあればそこを足がかりに後は何とかなる
投稿2018/04/20 01:29
編集2018/04/20 04:30総合スコア4756
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/04/21 05:49
2018/04/21 05:57
退会済みユーザー
2018/05/06 04:10
0
自分が思いつく程度のことはたいてい先に誰かが思いついているので、まずはググってそういうものを探します。
誰も思いついていなかったら、仕方ないので構成要素に分解したり、類似のものを考えて、それらでググります。
たとえば「プログラムに絵を描かせる」は誰も思いついてなくて情報が出てこないかもしれませんが、「マウス入力でお絵かきするプログラムを作る」は誰かがやっていたとする。そしたら、マウス入力の部分をプログラムからデータを受け取る形に変えれば良いです。簡単にできそうですね。
あるいは、○○言語の配列をjpgに変換する、というのを調べても良さそうですね。それがわかれば、あとは○○言語で配列に好きな値を入れるプログラムは、自分で頑張って書けば良いですから。
投稿2018/04/20 01:08
総合スコア30935
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/04/20 01:20
2018/04/20 01:28
退会済みユーザー
2018/04/21 06:20
2018/04/21 07:27
退会済みユーザー
2018/05/06 04:18
0
ひとまず、タグにJavaScriptとありますので、その前提でお答えいたします。
まずは、何をしたいのかと、目的を明確にします。
ここでいう目的とは、どこかに発表するのか、仕事でウェブサイトに掲載するのかとかってことです。ようは、プラットフォームがどこになるかを明確にするってことです。
そうしないと、使う方法も変わってきます。
例えば、仕事なら、締め切りがあるので、簡単で早い方法を使う必要がありますし、
技術を高めたいだけなら、新しい挑戦をするために時間をかけれるでしょう。
やり方は一つとは限らないので。
そこらへんを明確にしたら、
基本、ググって調べますが、その時、
まずはそのまま目的の言葉で調べます。
javascript 絵を描かせる
とかそれでもど直球の記事が出ない場合は、
まずはどこでもいいので記事を開いて見て、それらしい新たなキーワードを見つけます。
例えば、上記のキーワードで調べると、真っ先にcanvasで描画する方法が出てくるでしょう。
ほうほう、canvasというのがあるのか・・・。
ってわかったら、次は下記のキーワードで探します。
javascript canvas 絵を描かせる
絵を描かせるという部分を分解して、
javascript canvas 絵 描画
という風にした方がいい記事が出てくるかもしれません。
そうやって掘り下げて調べていって、
また、細かい情報を一つ一つ取り上げて、
組み合わせて、自身の目的を達成していきます。
で、ググってもググってもだめなら、
本を探して読む方が早かったりします。
なぜなら、本は専門家が書いていて、マニアックな技術も書いてたりしますし、
何より、その一つの機能(例えばcanvasについてですね)についてかなり掘り下げて書かれているので、
別のところで役立つ情報も載ってたりするので、自身の力になります。
もちろん当たり外れはありますが、それはググるのも同じです。
(ただし、本はほぼほぼの場合金がかかります 笑)
一番大事なのは、見つけ出す執念だと思います。
見つかるまであきらめないで探し続けるってことです。
ご参考になれば幸いです。
頑張ってください。
投稿2018/04/20 01:26
総合スコア9555
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/04/20 01:28
2018/04/20 01:29
2018/04/20 04:31 編集
2018/04/20 04:34
退会済みユーザー
2018/04/21 05:48
0
PDCAサイクル
厳密に決めていませんし、頭の中だけで済ます事も多いですが、手順をまとめると
- 要件定義 (CSVを二次元配列に変換したい)
- 要求仕様定義 (RFC4180準拠、マルチバイト文字も許可する)
- 必要な技術仕様(Web標準)を調査 (String#replace, RegExp#exec, ...)
- 実装(コーディング)
- テスト
- を確定させたら、「2.~5.」をPDCAサイクルで回す感じです。
- で詳細を煮詰められてなかったり、3. の選定が甘い(実現不可能な技術を選んでしまう)と、PDCAを回す回数が多くなり、時間がかかります。
実際にはtもとに材料がそろっていて、3. を省略したり、コーディングから初めて前に戻ったりすることもありますが、基本に忠実なのは上記です。
「4. 実装(コーディング)」の部分は常に頭の中でアルゴリズムを組み立てながら、書いている感覚があります。
- アルゴリズムを組み立てる
- コーディング
- 無駄があれば、1. に戻る
よくいわれることですが、コーディング時間よりも調査/仕様定義に時間をかけます。
Web標準
HTML/CSS/JavaScript等のクライアントサイドの技術に限って述べるなら、Web標準仕様を選ぶように気をtけています。
特定のブラウザの独自拡張基準でコーディングすると、クロスブラウザで苦労するので、Web標準を基準にコードを書いています。
気を付けていること
(A) 一次情報から調査 (二次情報は過去の経験則から信頼できると判断できるものだけ利用します)
(B) 仕様を一つずつ理解できるまでコードを書く(例えば、String.prototype.replace の仕様を理解できたと納得できるまでトライアンドエラーを繰り返します。初めから、本番コードは書きません。)
(C) 分からない内容が多岐にわたる場合には、情報を細分化して一つずつ片付ける
Re: szk24 さん
投稿2018/04/21 06:07
編集2018/04/21 06:11総合スコア18189
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/04/21 06:15 編集
退会済みユーザー
2018/05/06 04:00
0
ソリューションのコンサルティングでは、「〜がしたいなぁ」と言っているお客さんをよくよくよく理解する事が一番大切で、そこで結局「何がしたいのか」「なぜしたいのか」「使えるものは何か」「やっちゃダメな事は何か」等を明確にしながら要件を詰めていきます。
ここでは自分自身がお客さんになると思うので、自分をよくよくよく理解して要件が詰められればあとは、mts10806さんの流れで進めていけると思います。
投稿2018/04/20 04:13
総合スコア6142
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2018/04/21 05:11
2018/04/21 05:59 編集
退会済みユーザー
2018/05/06 04:03
0
プログラミングを使って作りたいものがあった時、それを作るときにどうやって実装の仕方を調べたり、プログラムの組み立て方を考える、もしくは調べますか?考え方の思考手順や調べ方が知りたいです。
これって、実は全然バラバラな質問の集合なので、明確に回答するのは難しいのですが、思いつくままに記述させてもらいます。
作りたいものを作る方法
これは、開発モデルとして昔からいくつも試行錯誤されています。
もっともポピュラーでわかりやすいのは、ウォーターフォール・モデルなので、ここを足がかりに学習すると良いです。
実装の仕方の調査
ウォーターフォール・モデルの中では、概要/詳細設計フェーズでの調査になると思いますが、多くの場合、**その実装方法には名前がついています。**調査は、その名前にたどり着くとこを目標にすると良いです。
プログラムの組み立て方を考える
これは、詳細設計とプログラミングに関わる箇所になると思いますが、**どこまで要素単位に分解できるか?**がカギです。多くのプログラミング言語は、要素単位で実装したものを組み合わせることで、動作することを可能としています。
要素単位まで分解できれば、実装は単純な作業となるはずです。
で、肝心の要素技術への分解ですが、過去の実績と勘が重要になります。
周りに聞ける人がいるのであれば、聞きまくりましょう。
ここのスキルが、プログラマーの質だと私は思っています。
普段から、メジャーなライブラリを眺めるとか、フレームワークを分解してみるとかしてると鍛えられるようです。
思いつくままに書いたので、抽象的で微妙な回答になりましたが、参考になれば。
投稿2018/04/20 03:10
退会済みユーザー
総合スコア0
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2018/04/21 05:20
退会済みユーザー
2018/04/21 07:39
退会済みユーザー
2018/05/06 04:05
0
プログラムに何か絵を描かせてjpgやpngで出力させたいとした場合
Yahoo!などで「HTML 画像を出力する方法」と検索するのはどうですか?
投稿2018/04/20 01:04
編集2018/04/20 01:04退会済みユーザー
総合スコア0
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/04/20 01:06
退会済みユーザー
2018/04/20 01:06
2018/04/20 01:08
退会済みユーザー
2018/04/20 01:14
退会済みユーザー
2018/04/20 01:15
2018/04/20 01:24 編集
退会済みユーザー
2018/04/21 06:23
退会済みユーザー
2018/04/21 06:48
退会済みユーザー
2018/05/06 04:20
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2018/04/21 05:56
2018/04/21 11:36 編集
2018/04/21 11:51
2018/04/21 12:08
2018/04/21 12:18
2018/04/21 12:21
退会済みユーザー
2018/05/06 04:16