• ベストアンサー

初心者のプログラムの組み方について

訳あって初心者の私に依頼があり、webアプリケーション「会員登録・変更・削除ページ」「認証」「レジシステム(構想のみ)」などを作り始めています。 そのwebアプリケーションは実際にweb上で動かすものです。 今私は、本を読んで全て自分の脳内で組み立てて考え、実際にゼロから1個の作業ごとにエラーが出ないか動かしながら、少しずつ進めています。 漸くhtml上からデータベースに登録ができるようになりました。 しかし疑問が。 ■疑問1 本にはサンプル集というか、すでに形になっているものが、ソースと説明付きで載っています。 一般的に、すでに形になっているものが手元にあるのに、また自分で1から組むものなのでしょうか。 ※出来上がっているものを解読して、それを修正して用いるのが妥当(?…というか、仕事として上手くいく)のではないかと昨日から思っています。 ※初心者が組むとバグとかスパゲッティ(?)とかセキュリティーホールとかが発生して、結局効率がわるいんじゃないかと思い始めました。プログラマも最初はバグ取りから入るらしいのもその為かな、とも思います。失敗学というか。 ■疑問2 本に載っているものを一旦PCに落として、 それを基盤に依頼主の要求通りに変更して渡すのは間違っているでしょうか。 ※もちろん、プログラムの中身は理解した上で、です。 以上、その辺りのことを色々教えて下さい。 宜しくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.6

>自分が別件で以前組んだ(今のところ上手く動いている)プログラムに関して今回流用できる場合、 WEBシステムの場合、登録、更新、照会、一覧、ポップアップ、その他、などと大体パターンが決まってますよね。チームであるシステムを作成する場合はまず、代表的なパターンの画面を吟味して作成し、それを皆でソースコードレビューした上で標準的な雛型として皆で倣って作らせるようにします。規約を作る場合もあります。なので、あんまり個性的なプログラムにはなりませんが保守性もソースの見通しも良いものができます。共通的に使える部分は共通クラス化し、それを使うようにします。 なので別案件で作ったやつが新規案件でも使えそうな場合は流用してます。ただし、前回プロジェクトで共通的な雛型としてまずかった点がある場合は、それを修正した上で新たな雛型とします。 質問者さんがどんな言語で開発しているのかわかりませんが、Javaの場合フレームワークを使うというのが流行ってます。フレームワークを使えば画面遷移とかエラーチェックとか画面とロジックの分離などがきれいにできます。もし、そういった足回り的な部分も手でゴリゴリ書いているようなら、フレームワークの導入(Java Strutsはオープンソースです)も考慮にいれるといいかも知れません。

moonmist
質問者

お礼

有難うございました。 実際の現場の様子がわかり、とても参考になりました。ホントに。 開発言語を書かなかったのは、「書くと回答もその言語の方に偏ってしまう可能性があり、私は別の言語も学ぶ可能性があるので、言語に限定されない回答を頂きたかった」という理由からです。 Java Strutsも今、サッと調べました。 一読しただけではまだイマイチ分かりませんが、またJavaScriptを本格的に学ぶ際には、参考にさせて頂きます。 有難うございました。 他の皆様もとても参考になりました。 ポイント、甲乙つけがたいです。

その他の回答 (5)

回答No.5

>一般的に、すでに形になっているものが手元にあるのに、また自分で1から組むものなのでしょうか。 参考にすることはあっても、そのまま流用するなんて考えられないですね。サンプル集なんてたいていエラーチェックや例外処理なんてなされてないか、ごく簡単なものでしかないですし、#2の方の言われるようにセキュリティ上の考慮なんてなされてないです。 例えば入力ボックスにSQL文を入れたり、HTMLタグを入れたり、スクリプトを入力してデータを盗み出すなんてことが可能なんです。そのサンプル集では、その辺りの考慮がされているか、もしくは危険があることを告知してますか?そんなことは初心者向けの書籍では詳しくは書かないと思うのですが…。 以下のページの内容を参考にしてください。 http://www.ipa.go.jp/security/awareness/vendor/programming/a01.html >そのwebアプリケーションは実際にweb上で動かすものです。 社内システムとかではなくて、インターネット上に公開するものでしょうか?バグとかの問題ではなくて、初歩的なWEBアプリが原因で、データが流出してしまわないことを祈ります。

moonmist
質問者

お礼

ご回答有難うございます。 >参考にすることはあっても、そのまま流用するなんて考えられないですね。サンプル集なんて~ それは書籍含め、他人が組んだプログラムに関してですよね。 自分が別件で以前組んだ(今のところ上手く動いている)プログラムに関して今回流用できる場合、 最初の作業としては1から作成するのか、前作ったモノを修正するのか、その辺の所はいかがでしょうか? (特に複雑ではない単純なプログラムの場合) >URL このページはとても参考になります。 最初のページだけでも「へぇ~」が数回出ました。 私が参考した書籍ではJAVAScriptで入力文字を制限していますが、 「JavaScriptなどの~チェックは~~セキュリティを守る手段には使えない」 とあります。 hiddenもラジオボタンも以前修正したものに(元から)使ってました。 >インターネット上に公開するものでしょうか? そうです。 データ流出は最悪ですので、私もセキュリティについて勉強することにします。 正直、SEの方に指示を仰ぐ等、任せるつもりでした。 勉強になりました。 ありがとうございました。

noname#23995
noname#23995
回答No.4

No.1で回答したものです。 ちょっと補足です。 初心者に依頼するくらいなので、誰が書いても同じようにしかならないような、シンプルなもので、 かつ、登録の際に必要とする情報も個人情報にかかわらないレベルのもので、 業務につかわれるものではない、 と勝手に判断して、「サンプルコピー可」と回答いたしました。 情報のレベルやコピーの程度については、なかなか説明しにくいもので、 つくりながら、もっと細かくわけて質問されると いいと思います。

moonmist
質問者

お礼

いつも長文ですみません。 私もお手伝いする前提として ・初心者であること ・1から作ったことが無いこと ・現在勉強中であること を伝え、SEの方に簡単な面接をしてもらってお手伝いをすることになりました。 私としては ・SEの方がサポートしてくださる ・独学よりもずっと勉強・経験になる ・ある程度のお金を頂ける という利点がありますので、引き受けました。 ところが、SEの方もお忙しいようですが、仕様書など「私が作る上で基準・道しるべになるもの」が欲しいと言っても「普通はそんな小さいプログラムじゃ書かない」とか言われて却下されますし、「設計上の注意はありますか?」や「一度会議をしたいのですがお時間を~」とメールを打っても答えが返ってきません。 自分で考えて欲しいならそう言ってもらえれば自分で考えて次に進めるのですが。。 その結果ラチがあかないので、書籍の力を借りて先手を打ち、こちらからたたき台を示してそれに修正をかけていく方が早いかと思いました。 そこで、一般的に書籍の力を借りる事の是非を皆さんにお聞きしたく、今回質問した次第です。 >つくりながら、もっと細かくわけて質問されるといいと思います。 そうさせて頂きます。ありがとうございました。

  • inu2
  • ベストアンサー率33% (1229/3720)
回答No.3

本のサンプルが、正しい(というか効率的)であるとは断定できない たまに、間違っている時もある 処理の行程の参考にはしますが、ソースを丸写ししてそれを修正する なんてことは私はしません あとは、そのサンプル本の著作問題もありますよ 勉強のためにサンプルを使って改造したりするのは良いけど、それをそのまま仕事として使えるかどうかの判断力も身につけなくてはいけません 基本的に1から自分で組むのですが、プログラムを長年やっていると、今まで作ったアルゴリズムや関数をそのまま使える場合も多く、あまり苦労はしない ただ、プログラムそのものが初心者なのに、個人情報を扱うようなプログラムを組むってのはちょっとリスクがありすぎると思います ちなみにスパゲッティというのは、あまり計画性がなく、まともな設計をしない状態でプログラムを始めると、あとからあとから追加や変更をすることになってごちゃごちゃと書き加えたりすることにより、非常に読みにくいソースになることです

moonmist
質問者

お礼

>本のサンプルが、正しい(というか効率的)であるとは断定できない >たまに、間違っている時もある ごもっともです。 以前私も少しですが出版業界に居たことがありますので、書籍の悪い部分も把握しているつもりです。 >そのサンプル本の著作問題もありますよ 基盤にしたい書籍にはこの件に関して特に書かれていませんでしたので、現在、著者に問い合わせ中です。 >今まで作ったアルゴリズムや関数 そうなんです。過去に1度だけ、別件で出来上がったものを修正したことがあるのですが、ライブラリがあって、便利だと思いました。 最初見たときは、1度も使って(参照されて)いない部分の意味を理解するのに苦労しましたが。今回のプログラムにどう関連しているのかと思えば、実は意味がなく消しても同じという。。 >ちょっとリスクがありすぎると思います この点は、ちゃんと契約か何かしようかと思っています。 >スパゲッティ ありがとうございます。まだ見たことが無いですので実感がわきませんが、言葉としてわかりました。 ご回答ありがとうございました。

  • galluda
  • ベストアンサー率35% (440/1242)
回答No.2

がると申します。…ちと気になるのですが、業務として受けられているのでしょうか? とりあえず「業務レベル」を基準に。 書籍のサンプル集で、正直なところ「セキュリティ上及び保守性の点で」まともなソースをあまり見たことがないのですが。 無論「何かを参考にしながら」というのはある程度よろしいかとおもうのですが…正直、そのレベルですと、ご自身以外に「ちゃんとプログラムの精査が出来る人」がいたほうがよいように思われるのですが…。 特に会員情報登録周りとかですと、可能性として比較的デリケートなデータである場合もあるので。

moonmist
質問者

お礼

ご回答有難うございます。 ごもっともなご意見です。 >業務として受けられているのでしょうか? 私は現在無職。友人経由でこの件を紹介されました。 「あるサイトを作りたい人」が2人、その友人でSE兼Webデザイナーが1人(SEの方は自分で打つ気が無いようです)、私は友人の紹介によりそのSEの下で今回のみお手伝いをすることになりました。 要するに知人の集まりですね。 しかし上の皆さん、これで儲けたいと思っている模様です。 自営業の方も居ますので、話が本格的です。 (じゃあなぜ初心者にプログラムを頼むのか疑問ですが) ですので、私が業務として受けているわけではありません。正社員として雇われるわけでもないですし。報酬はある程度頂けるようですが、完全なお手伝いです。 ですから >「ちゃんとプログラムの精査が出来る人」 というのは一応1人居ります。 私もプログラムの不備による責任は逃れたいですので、逐次SEに相談しチェックして頂く予定です。 あと私の友人に数人、プログラマが居るので、そちらの方にもチェックしてもらえたらと思っています。 ご回答・ご忠告有難うございました。

noname#23995
noname#23995
回答No.1

質問者さんの思っている通り、サンプルを基盤として、依頼者のニーズにあうように修正(カスタマイズといいます)するのが一般的だと思います。 一から組むひとは、サンプルなんて見なくてもいいレベルの人ではないでしょうか? ただ、画像や音楽に使用には著作権の問題もでてくるので、使用には注意してくださいね。

moonmist
質問者

お礼

ご回答ありがとうございます。 心のモヤモヤが少しスッキリしました。 著作権のご忠告まで頂いて、有り難いことです。 (ホームページで用いる?)画像や音楽に関しては、私で用意する予定はありませんのでご安心下さい。 有難うございました。

関連するQ&A

  • 初心者的質問で申し訳ありませんが、

    初心者的質問で申し訳ありませんが、 メールサーバーって2つありますよね? 「送受信用」のSMTPサーバーと 「受信用」のPOP3サーバー。 なぜこのように分かれているんでしょうか? たぶん、インターネット初期の構想でこのように 分かれたと思うのですが、実際のところなぜなんでしょう? こんな素朴な疑問に答えてくれると嬉しいです。 皆さん、どうぞよろしくお願いします。

  • ASPでAccessのデータを更新するプログラム(初心者です)

    ASPの知識がないので質問が分り難いと思いますが、宜しくお願いします。 ASPの本についていたサンプルデータを使って、Webページを作成していますが、プログラムの知識がないので、サンプルデータをコピー&ペーストして四苦八苦しながら作成している次第です。データベースのデータを表示させたり新しいデータを追加するところまではできましたが、データを更新するサンプルがないので登録データを更新することができません。更新用のフォームに現在登録されているデータを表示させるところまではできました。ここで変更をしたデータをupdate.aspにデータを送信してデータベースのデータを更新させたいのですが、このupdate.aspに記載するプログラムがよくわかりません。初心者の私でも解るように、どなたか教えていただけませんでしょうか。質問の仕方が変かも知れませんが、宜しくお願いいたします。

  • 洋裁・初心者・おすすめ本

    幼稚園に通っている娘に服を作りたいなって思ってまずは、本を購入して勉強しようとネットを検索していたら、「私の洋裁塾」という本が気に掛かりました。でも、絶版!古本屋さんでも無いし、オークションは凄く高い!!その本じゃなくても、こんなのお薦めだよっていう初心者に解りやすく、実際始めてみて、あれ、これは?っと思った疑問も解決できるような本をご存知の方教えてください。

  • ホームページの事(超初心者です)

    最近HP作成にチャレンジ中で…一応無料のサーバーに登録しました。「fc2web.com」 という所です。 質問の内容ですが、よく「お気に入り」の所に表示されるHPの名前を変更するにはどうしたらよいでしょうか?すみません、初心者で質問の内容をわかっていただけるかも心配なのですが、よろしくお願いします。

  • パソコン・インターネット初心者と名乗る人たちは本を買わないの?

    このOKWebはまさに、上記初心者の超おたすけサイトとなっているようですが、よく質問に「初心者だから、分かりやすく」と云う注文が付けられていますね。これは構わないのですが、私が疑問なことは、私は毎月パソコン・インターネット関聯雑誌を何誌か定期購読していますし、ソフトを買った時は付属のマニュアルはほとんど読む気がしなくて、必ずといっていいほど1~2冊教則本?も買っています。 私の身近な人でも、私の勧めでパソコン購入した人たちは、ほとんど私が知らない間に「初心者のための○○」や「入門△△」などのタイトルの本を買って読んでいました。 まあ、OSのチューニングやアプリケーションのカスタマイズまでやる必要はないでしょうが、最低限の設定やトラブル回避、リカバリーの方法など、件の初心者むけの雑誌や書籍が書店に並んでいるのですが、これらの本に書いてある定番FAQ(よくある質問)を、やはりこのOKWebでも質問してきています。と云うことは、この類いの本は買って読んでいないと受け取れるのですが、なぜ初心者と云う自覚がありながら、初心者を救済する本を買って使い勝手を良くしようとはしないのでしょうか? それとも、本を買って読んでいるのだけれども、それでもよく分からない。あるいは、書店にそのような本が売っていることすら知らない。また、他にお金を使うからIT習熟のための出費は抑えたい。どうでしょうか? できれば、初心者の方方の回答をお待ちします。

  • ネット初心者です。

    ネット初心者です。 自分のブログに うっかり個人名を載せてアップしてしまいました。 気がついて、すぐに名前の部分を仮名にしてアップし直したのですが googleでその人の名前で検索すると最初の方にその個人名を載せた最初のブログが出てきてしまって… googleで削除依頼ができることを知り URLを報告したのですが 「リクエストは、Google によるこのページのインデックス登録やアーカイブをブロックする適切な robots.txt ファイルまたはメタ タグを、ウェブマスターが適用していないことが原因で拒否されました。 そのサイトのウェブマスターにお問い合わせいただくか、ウェブページ削除リクエスト ツールから別の削除オプションを選択してください。」 と表示されてしまいました。 ウェブマスター というのは何のことでしょうか。

  • ファイルを開くプログラムを元の「不明なプログラム」に戻したい

    パソコン初心者です。が、興味本位から余計な事をしてしまい戻せなくなってしまいました。 「ファイルを開くプログラム」と「アイコン」の戻し方を教えてください。 C:windows¥prefetchにあるファイルの一つ¥音声メモ.exe-764f15b.pfを開こうとしたところ  ・このファイルは開けません… 「開くには動作を選択」との記載があったので  ・一覧からプログラムを選択し→notepad をクリック するとファイルが開けたのですが、内容は文字の羅列で何なのか解りません。 その後、「ファイルを開くプログラム」と「アイコンの形」を元に戻そうとしたのですが戻し方が解りません。 プログラムとアイコンがnotepadに変わってしまいました。 さらに自分では知らないうちに何かやってしまったようで、その画面にあった20以上のファイルも同じくアイコンがnotepadに変わってしましました。    ・変更前のプログラムは・・・“不明なアプリケーション”  ・変更前のアイコンの形は・・・“ツールバーの表示アイコンのような形で、横長方形用紙の中に上段3つ、下段3つ、                     計6つの赤青の小さい点が並んでました” このせいで何か影響がでているのかは実感しませんが、やはり元に戻しておいた方が良いのでは…と根拠なく思います。 宜しくお願いします。

  • Web制作初心者です。

    Web制作初心者です。 今回ある個人飲食店からサイト作りを頼まれて作ってたのですが、ヘッダーのイメージを 変えて欲しいということで変更しようと思うのですが、最初作成した順番的には、 1.イラレで枠組みレイアウト 2.photoshopでその枠組みに沿って、レイヤースタイルとか写真とか加工して当てはめる。 3.それを元にコーディング という形にしたのですが、変更という行為自体初めてでどこから手をつけたらいいのかわかりません。 コーディングの段階でサイトが出来た段階での微調整で幅とか数pxとかいじっているので、 自分的には、Webを画像で落としてそれを元にガイド引いて、変更画像を作って入れ込むという感じなのかな? と勝手に思ってるのですが・・。 普通はどういう順番が正しいのでしょうか?

    • ベストアンサー
    • CSS
  • Linuxを勉強しようと思います。プログラムってどのような種類が?

    タイトルが長くなって申し訳ありません。 これからlinuxを勉強しようと思うのですが 本やネットで色々調べてこれにしようという種類や目的はほぼ決まりました webサーバはとりあえず立ち上げてみようと思っています ただ、そこで一つ疑問が浮かびました。 2冊ほど本を買ったのですが、載っていなかったことです まず 1)これからはGUIでインストールすればいいのかどうか 仕事で使えるようになるには、CUIでインストールした方がいいとよく聞くので この辺がどうなっているのが知りたいです。 2)プログラムをするなら絶対にlinuxがいいと聞きます Cとかなのですが…。 ただこれも本を見てもさっぱり載っていませんし 何故linuxがプログラムに向いているのかも分かりません。 そもそもwindowsのソフトを作るならwindowsじゃないとまずいんじゃないの? と思ったりもしています。 Perlもlinuxを入れるならlinuxでやるほうがいいとも言われたのですが なぜ?という疑問を出すと答えが返ってこないまま生殺しなのです^^; 私としてはとりあえず先にwebサーバをやろうとは思いますが 現状で時間を区切りCの勉強などもやろうと思っています ですので、もしそういうプログラムがlinuxでやる方がいいのであれば windowsではやらないようにしようと思っているのですが 実際の所どうなのでしょうか? 私はlinuxのプログラムというのは、システムの根幹の部分等々の事だと思っています これは間違えているのでしょうか? 間違えているのならlinuxで専らやるプログラムの種類についても教えてください!

  • BVA初心者です。エクセルのマクロを順を追って記録していくことは、でき

    BVA初心者です。エクセルのマクロを順を追って記録していくことは、できるのですが、 BVAに記録された指示を解読することができません。本などで、見比べて理解するしか方法はないのでしょうか? どのような手順で、どのようにしてマクロをつくったかを理解したいのですが・・・ BVAに記録された指示を、簡単な文章で説明してくれるような、サイトというか・・何か・・ あれば是非教えてください。 自分で作ったマクロは本人なので、わかっても、他の人が作った指示はほとんど理解できないので、 実際にマクロでそのとうりに記録して自分で、同じものを作ることがしてみたいと思っています。 どうか、いい方法があれば教えてください。

専門家に質問してみよう