teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

誤解をまねきそうな表現を訂正・説明を補充

2016/01/30 10:46

投稿

kozuchi
kozuchi

スコア1193

answer CHANGED
@@ -1,29 +1,64 @@
1
- このサイトの趣旨からは外れるかもしれませんが、
1
+ このサイトの趣旨からは外れるかもしれませんが、
2
2
  自分が重要な問題だと思うので、回答させていただきます。
3
3
 
4
- アプリケーション開発にとって一番重要なことは、言語でもフレームワークでもOSでもありません。
5
- そういうのをいくら勉強てもアプリケーションを開発する方法はわかりせん
4
+ 「原理」というお話ですで、原理原則までさかのぼった話をしま
5
+ 若干抽象的な話になってしまいますが、かまわなければ読んでください。
6
6
 
7
- アプリは問題を解決したり、目的を達成するための手段です。
8
- ですから、最も重要なのは「そのアプリがなんであるか、目的は何か」をしっかり決めることです。
9
- それさえしっかりできれば、「アプリを実装する方法」は開発力のあるベンダーに丸投げしてしまえばいいのです(そしてこのサイトの問題分野は、どちらかというとここでは丸投げされるぐらい信頼されるベンダーの持つべき知識といった領域のほうにあるんだろうなとは思います)。
10
- 極端な場合、問題をしっかり定義した結果、プログラムなど開発しなくても解決できる
11
- (あるいは既存のアプリの応用で解決でる)ことがったります。
7
+ アプリケーション開発」には、大けて二つの異なった作業があります。
12
8
 
9
+ 1.何を作るのかを決める
10
+ 2.決めたものを実現する
11
+
12
+ このサイトで話題になっている技術の大半は、2.に関するものです。
13
+ しかし、「便利なアプリ」を作るために本当に重要なのは 1. です。
14
+ アプリケーションが便利なものとして完成する「原理」は 1. の中にあって、2. にはありません。
15
+ 1.の段階で便利でないものを 2.の段階の技術で便利にすることはほぼ不可能です。
16
+
17
+ ですから、あなたに「どうしても作りたい」アプリがあり、それが便利なものであるという絶対の自信があり、
18
+ それを他人に伝える能力があり、しかしながらアプリというものの作り方がよくわからない、という状態であるなら、
19
+ それを「便利なアプリ」として完成させるためにあなたが注力すべき作業は1.です。
20
+ 1.のための時間が足りないのでしたら、2. の作業を能力のある他人に任せるべきです。
21
+ なぜなら、あなたが考えたアプリに関して 2.は他人でもできますが、1.はあなたにしかできないからです。
22
+ 1. の作業がきちんとできないならば、そのプログラムが「便利なアプリ」として完成する可能性は
23
+ 限りなく低くなります。
24
+
25
+ もちろん、「どうしても作りたい」のでなければ、そこまで極端考える必要はありません。
26
+ 「アプリをプログラミングする」という作業を、
27
+ ホビーとして楽しみたい、または教養として知りたい、仕事で使う技術を身に着けるためにやってみたい、
28
+ というならこの限りではありません。
29
+ その場合は「便利なアプリを作ること」は手段であって目的ではないからです。
30
+ 「なんか使いにくいけど面白いからいいや」で済んでしまいますからね。
31
+
32
+ 「便利なアプリを作ること」を第一の目的とするならば、
33
+ アプリケーション開発にとって一番重要なことは、言語でもフレームワークでもOSでもありません。
34
+ そういうものをいくら勉強しても便利なアプリケーションを開発する方法はわかりません。
35
+ わかるのは、すでに何をするのかきちん決まっているアプリの設計を
36
+ コンピュータプログラムとして実現する手段だけです。
37
+
38
+ アプリは問題を解決したり、目的を達成するための手段です。
39
+ ですから、最も重要なのは「そのアプリがなんであるか、目的は何か」をしっかり決めることです。
40
+
41
+ 本当に便利なアプリは、目的の作業を行うための手順などがよく考えられていて、
42
+ ユーザが無駄なことをしなくても済むように、やるべきことがすぐわかるように、さまざまな工夫が凝らされています。
43
+ そのような工夫をこらして、そのアプリがどのようなものか、何をすべきかを決めた人が「便利なアプリ」を作った人です、
44
+ プログラマはそれをコードとして実行可能な形にしたに過ぎません。
45
+ その作業や技術は自体は十分価値のあるものですが、
46
+ 「アプリの便利さ」を決定付ける要素ではありません、代替えの効くものです。
47
+
13
- >haskellやlispなどの言語でアプリを作りたいときはどうすれば良いのでしょうか?
48
+ >haskellやlispなどの言語でアプリを作りたいときはどうすれば良いのでしょうか?
14
- 特定技術においてアプリを実装する場合の作業は、
49
+ 特定技術においてアプリを実装する場合の作業は、
15
- アプリの目的とその技術の機能の付きあわせです。
50
+ アプリの目的とその技術の機能の付きあわせです。
16
- 足りない部分は新規開発するなりライブラリを探すなりします。
51
+ 足りない部分は新規開発するなりライブラリを探すなりします。
17
52
  一般にそういった作業のコストが予算をオーバーするような(しそうだと予想されるような)場合は、
18
- 責任者はその技術を使うことを断念する判断をして別の技術を検討し始めます。
53
+ 責任者はその技術を使うことを断念する判断をして別の技術を検討し始めます。
19
- チューリング完全であれば理屈の上ではなんでもできますが、
54
+ チューリング完全であれば理屈の上ではなんでもできますが、
20
55
  実装コストが見合うかどうかは別問題です。
21
56
 
22
- >もしよろしければ参考になる書籍やサイト、キーワードなどを教えていただけるとありがたいです。
57
+ >もしよろしければ参考になる書籍やサイト、キーワードなどを教えていただけるとありがたいです。
23
58
  >よろしくお願いします。
24
59
 
25
60
  問題解決や要件定義に関する本を読まれるのがいいと思います
26
61
 
27
- 少し古いですが・・(ソフトウェア開発の話はほぼ出てきません)
62
+ 少し古いですが・・(ソフトウェア開発の話はほぼ出てきません)
28
- >ライト、ついてますか―問題発見の人間学 単行本 – 1987/10/25
63
+ >ライト、ついてますか―問題発見の人間学 単行本 – 1987/10/25
29
- >ドナルド・C・ゴース (著), G.M.ワインバーグ (著), 木村 泉 (翻訳)
64
+ >ドナルド・C・ゴース (著), G.M.ワインバーグ (著), 木村 泉 (翻訳)

1

補足を追加

2016/01/30 10:46

投稿

kozuchi
kozuchi

スコア1193

answer CHANGED
@@ -6,7 +6,7 @@
6
6
 
7
7
  アプリは問題を解決したり、目的を達成するための手段です。
8
8
  ですから、最も重要なのは「そのアプリがなんであるか、目的は何か」をしっかり決めることです。
9
- それさえしっかりできれば、「アプリを実装する方法」は開発力のあるベンダーに丸投げしてしまえばいいのです。
9
+ それさえしっかりできれば、「アプリを実装する方法」は開発力のあるベンダーに丸投げしてしまえばいいのです(そしてこのサイトの問題分野は、どちらかというとここでは丸投げされるぐらい信頼されるベンダーの持つべき知識といった領域のほうにあるんだろうなとは思います)
10
10
  極端な場合、問題をしっかり定義した結果、プログラムなど開発しなくても解決できる
11
11
  (あるいは既存のアプリの応用で解決できる)ことが分かったりします。
12
12