- ベストアンサー
初心者のプログラムの組み方について
訳あって初心者の私に依頼があり、webアプリケーション「会員登録・変更・削除ページ」「認証」「レジシステム(構想のみ)」などを作り始めています。 そのwebアプリケーションは実際にweb上で動かすものです。 今私は、本を読んで全て自分の脳内で組み立てて考え、実際にゼロから1個の作業ごとにエラーが出ないか動かしながら、少しずつ進めています。 漸くhtml上からデータベースに登録ができるようになりました。 しかし疑問が。 ■疑問1 本にはサンプル集というか、すでに形になっているものが、ソースと説明付きで載っています。 一般的に、すでに形になっているものが手元にあるのに、また自分で1から組むものなのでしょうか。 ※出来上がっているものを解読して、それを修正して用いるのが妥当(?…というか、仕事として上手くいく)のではないかと昨日から思っています。 ※初心者が組むとバグとかスパゲッティ(?)とかセキュリティーホールとかが発生して、結局効率がわるいんじゃないかと思い始めました。プログラマも最初はバグ取りから入るらしいのもその為かな、とも思います。失敗学というか。 ■疑問2 本に載っているものを一旦PCに落として、 それを基盤に依頼主の要求通りに変更して渡すのは間違っているでしょうか。 ※もちろん、プログラムの中身は理解した上で、です。 以上、その辺りのことを色々教えて下さい。 宜しくお願いします。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
>自分が別件で以前組んだ(今のところ上手く動いている)プログラムに関して今回流用できる場合、 WEBシステムの場合、登録、更新、照会、一覧、ポップアップ、その他、などと大体パターンが決まってますよね。チームであるシステムを作成する場合はまず、代表的なパターンの画面を吟味して作成し、それを皆でソースコードレビューした上で標準的な雛型として皆で倣って作らせるようにします。規約を作る場合もあります。なので、あんまり個性的なプログラムにはなりませんが保守性もソースの見通しも良いものができます。共通的に使える部分は共通クラス化し、それを使うようにします。 なので別案件で作ったやつが新規案件でも使えそうな場合は流用してます。ただし、前回プロジェクトで共通的な雛型としてまずかった点がある場合は、それを修正した上で新たな雛型とします。 質問者さんがどんな言語で開発しているのかわかりませんが、Javaの場合フレームワークを使うというのが流行ってます。フレームワークを使えば画面遷移とかエラーチェックとか画面とロジックの分離などがきれいにできます。もし、そういった足回り的な部分も手でゴリゴリ書いているようなら、フレームワークの導入(Java Strutsはオープンソースです)も考慮にいれるといいかも知れません。
その他の回答 (5)
- SpiralGalaxy
- ベストアンサー率39% (649/1653)
>一般的に、すでに形になっているものが手元にあるのに、また自分で1から組むものなのでしょうか。 参考にすることはあっても、そのまま流用するなんて考えられないですね。サンプル集なんてたいていエラーチェックや例外処理なんてなされてないか、ごく簡単なものでしかないですし、#2の方の言われるようにセキュリティ上の考慮なんてなされてないです。 例えば入力ボックスにSQL文を入れたり、HTMLタグを入れたり、スクリプトを入力してデータを盗み出すなんてことが可能なんです。そのサンプル集では、その辺りの考慮がされているか、もしくは危険があることを告知してますか?そんなことは初心者向けの書籍では詳しくは書かないと思うのですが…。 以下のページの内容を参考にしてください。 http://www.ipa.go.jp/security/awareness/vendor/programming/a01.html >そのwebアプリケーションは実際にweb上で動かすものです。 社内システムとかではなくて、インターネット上に公開するものでしょうか?バグとかの問題ではなくて、初歩的なWEBアプリが原因で、データが流出してしまわないことを祈ります。
お礼
ご回答有難うございます。 >参考にすることはあっても、そのまま流用するなんて考えられないですね。サンプル集なんて~ それは書籍含め、他人が組んだプログラムに関してですよね。 自分が別件で以前組んだ(今のところ上手く動いている)プログラムに関して今回流用できる場合、 最初の作業としては1から作成するのか、前作ったモノを修正するのか、その辺の所はいかがでしょうか? (特に複雑ではない単純なプログラムの場合) >URL このページはとても参考になります。 最初のページだけでも「へぇ~」が数回出ました。 私が参考した書籍ではJAVAScriptで入力文字を制限していますが、 「JavaScriptなどの~チェックは~~セキュリティを守る手段には使えない」 とあります。 hiddenもラジオボタンも以前修正したものに(元から)使ってました。 >インターネット上に公開するものでしょうか? そうです。 データ流出は最悪ですので、私もセキュリティについて勉強することにします。 正直、SEの方に指示を仰ぐ等、任せるつもりでした。 勉強になりました。 ありがとうございました。
No.1で回答したものです。 ちょっと補足です。 初心者に依頼するくらいなので、誰が書いても同じようにしかならないような、シンプルなもので、 かつ、登録の際に必要とする情報も個人情報にかかわらないレベルのもので、 業務につかわれるものではない、 と勝手に判断して、「サンプルコピー可」と回答いたしました。 情報のレベルやコピーの程度については、なかなか説明しにくいもので、 つくりながら、もっと細かくわけて質問されると いいと思います。
お礼
いつも長文ですみません。 私もお手伝いする前提として ・初心者であること ・1から作ったことが無いこと ・現在勉強中であること を伝え、SEの方に簡単な面接をしてもらってお手伝いをすることになりました。 私としては ・SEの方がサポートしてくださる ・独学よりもずっと勉強・経験になる ・ある程度のお金を頂ける という利点がありますので、引き受けました。 ところが、SEの方もお忙しいようですが、仕様書など「私が作る上で基準・道しるべになるもの」が欲しいと言っても「普通はそんな小さいプログラムじゃ書かない」とか言われて却下されますし、「設計上の注意はありますか?」や「一度会議をしたいのですがお時間を~」とメールを打っても答えが返ってきません。 自分で考えて欲しいならそう言ってもらえれば自分で考えて次に進めるのですが。。 その結果ラチがあかないので、書籍の力を借りて先手を打ち、こちらからたたき台を示してそれに修正をかけていく方が早いかと思いました。 そこで、一般的に書籍の力を借りる事の是非を皆さんにお聞きしたく、今回質問した次第です。 >つくりながら、もっと細かくわけて質問されるといいと思います。 そうさせて頂きます。ありがとうございました。
- inu2
- ベストアンサー率33% (1229/3720)
本のサンプルが、正しい(というか効率的)であるとは断定できない たまに、間違っている時もある 処理の行程の参考にはしますが、ソースを丸写ししてそれを修正する なんてことは私はしません あとは、そのサンプル本の著作問題もありますよ 勉強のためにサンプルを使って改造したりするのは良いけど、それをそのまま仕事として使えるかどうかの判断力も身につけなくてはいけません 基本的に1から自分で組むのですが、プログラムを長年やっていると、今まで作ったアルゴリズムや関数をそのまま使える場合も多く、あまり苦労はしない ただ、プログラムそのものが初心者なのに、個人情報を扱うようなプログラムを組むってのはちょっとリスクがありすぎると思います ちなみにスパゲッティというのは、あまり計画性がなく、まともな設計をしない状態でプログラムを始めると、あとからあとから追加や変更をすることになってごちゃごちゃと書き加えたりすることにより、非常に読みにくいソースになることです
お礼
>本のサンプルが、正しい(というか効率的)であるとは断定できない >たまに、間違っている時もある ごもっともです。 以前私も少しですが出版業界に居たことがありますので、書籍の悪い部分も把握しているつもりです。 >そのサンプル本の著作問題もありますよ 基盤にしたい書籍にはこの件に関して特に書かれていませんでしたので、現在、著者に問い合わせ中です。 >今まで作ったアルゴリズムや関数 そうなんです。過去に1度だけ、別件で出来上がったものを修正したことがあるのですが、ライブラリがあって、便利だと思いました。 最初見たときは、1度も使って(参照されて)いない部分の意味を理解するのに苦労しましたが。今回のプログラムにどう関連しているのかと思えば、実は意味がなく消しても同じという。。 >ちょっとリスクがありすぎると思います この点は、ちゃんと契約か何かしようかと思っています。 >スパゲッティ ありがとうございます。まだ見たことが無いですので実感がわきませんが、言葉としてわかりました。 ご回答ありがとうございました。
- galluda
- ベストアンサー率35% (440/1242)
がると申します。…ちと気になるのですが、業務として受けられているのでしょうか? とりあえず「業務レベル」を基準に。 書籍のサンプル集で、正直なところ「セキュリティ上及び保守性の点で」まともなソースをあまり見たことがないのですが。 無論「何かを参考にしながら」というのはある程度よろしいかとおもうのですが…正直、そのレベルですと、ご自身以外に「ちゃんとプログラムの精査が出来る人」がいたほうがよいように思われるのですが…。 特に会員情報登録周りとかですと、可能性として比較的デリケートなデータである場合もあるので。
お礼
ご回答有難うございます。 ごもっともなご意見です。 >業務として受けられているのでしょうか? 私は現在無職。友人経由でこの件を紹介されました。 「あるサイトを作りたい人」が2人、その友人でSE兼Webデザイナーが1人(SEの方は自分で打つ気が無いようです)、私は友人の紹介によりそのSEの下で今回のみお手伝いをすることになりました。 要するに知人の集まりですね。 しかし上の皆さん、これで儲けたいと思っている模様です。 自営業の方も居ますので、話が本格的です。 (じゃあなぜ初心者にプログラムを頼むのか疑問ですが) ですので、私が業務として受けているわけではありません。正社員として雇われるわけでもないですし。報酬はある程度頂けるようですが、完全なお手伝いです。 ですから >「ちゃんとプログラムの精査が出来る人」 というのは一応1人居ります。 私もプログラムの不備による責任は逃れたいですので、逐次SEに相談しチェックして頂く予定です。 あと私の友人に数人、プログラマが居るので、そちらの方にもチェックしてもらえたらと思っています。 ご回答・ご忠告有難うございました。
質問者さんの思っている通り、サンプルを基盤として、依頼者のニーズにあうように修正(カスタマイズといいます)するのが一般的だと思います。 一から組むひとは、サンプルなんて見なくてもいいレベルの人ではないでしょうか? ただ、画像や音楽に使用には著作権の問題もでてくるので、使用には注意してくださいね。
お礼
ご回答ありがとうございます。 心のモヤモヤが少しスッキリしました。 著作権のご忠告まで頂いて、有り難いことです。 (ホームページで用いる?)画像や音楽に関しては、私で用意する予定はありませんのでご安心下さい。 有難うございました。
お礼
有難うございました。 実際の現場の様子がわかり、とても参考になりました。ホントに。 開発言語を書かなかったのは、「書くと回答もその言語の方に偏ってしまう可能性があり、私は別の言語も学ぶ可能性があるので、言語に限定されない回答を頂きたかった」という理由からです。 Java Strutsも今、サッと調べました。 一読しただけではまだイマイチ分かりませんが、またJavaScriptを本格的に学ぶ際には、参考にさせて頂きます。 有難うございました。 他の皆様もとても参考になりました。 ポイント、甲乙つけがたいです。