phpについて質問です。


独学で覚えて、ウェブサービスを作るようになりました。
ただ「汚い」ので、キレイに書く&管理する方法を学びたいと思っています。
まずは浅く広くで良いので、おすすめの本やURLをお教えください。

以下、具体的にどう汚いかをご説明します。

継ぎ足し継ぎ足しでサービスを拡充した結果、
いろんなファイルやデータが散らかっています。
ファイルや変数の名前の付け方もディレクトリもルールが無く曖昧。
無駄な処理が多くて、スピードアップできる余地も多々あるはず。

でも、お客さんは結構来て、儲けも取れそうですので
そろそろ、きちんとした開発をしようと考えました。

こんな状態で「キレイに整えて下さい」とプロのエンジニアに投げると
絶対嫌がられると思うので、まず事前に自分なりに整理してみようと思いました。

ファイル・変数名のつけ方や、ディレクトリのルールや
オブジェクト指向?(よく分かってません)的な構成とか
複数人でプログラムを管理するためのコメントの付け方とか、
プログラム全体の構成図の書き方とか、
まずは浅く広くで良いので学べるサイトや本があればお教えください!

回答の条件
  • 1人1回まで
  • 登録:2008/10/21 16:11:56
  • 終了:2008/10/28 16:15:03

回答(7件)

id:kn1967 No.1

kn1967回答回数2915ベストアンサー獲得回数3012008/10/21 19:19:40

ポイント18pt

「PHP 標準コーディング規約」の項は参考になるかと・・・。

http://www.ivystar.jp/archives/category/php/


整理を始める事によって既存のシステムがおかしくなる事は多々ありますので

整理をするのであれば、まずは機能を紙に書き出して整理するところから始めて

テスト項目を洗い出した上で改変&置換していくほうがよろしいかと・・・。

id:freewriter

ありがとうございます。

そうですね、こういう感じの情報がもっと欲しいです。

tipsというよりは体系的に学べるものだと尚良いです。

皆様宜しくお願いします。

2008/10/21 19:33:59
id:pahoo No.2

pahoo回答回数5960ベストアンサー獲得回数6332008/10/22 00:28:18

ポイント17pt

PHPの標準開発規約としては、以下の2つが参考になるでしょう。

id:freewriter

ありがとうございます。

Zend Frameworkは名前を良く聞きますが

よく見てみたら自分がいま部分的に使っているのはPEARですね。

開発規約というものがあるのは知りませんでした。

最大公約数的な、一番使われている

フレームワーク?開発規約?は、何なのでしょうか。

ちなみに主に作っているのは、色んなAPIを引っ張ってくるようなマッシュアップサイトです。

会員登録でDB使いますが大した量ではありません。

2008/10/22 03:53:20
id:krese No.3

krese回答回数20ベストアンサー獲得回数42008/10/22 11:11:26

ポイント17pt

きれいに書きたいですよね。私もまだまだ勉強中ですが...

> ファイル・変数名のつけ方や、ディレクトリのルール

PEARのライブラリの中を読んでみてはいかがでしょうか。

もちろん全てがきちんとしたきれいなコードというわけではないですが、

ある程度参考になるとは思います。

> オブジェクト指向?(よく分かってません)的な構成とか

PHPを学んでいくならオブジェクト指向は避けて通れないと思います。

あんまり入門書的なものが思い浮かばないので、とりあえず

webで調べてみてはいかがでしょうか。

http://www.atmarkit.co.jp/im/carc/serial/object01/object01.html

など「オブジェクト指向」で調べるといろいろ出てきます。

> 複数人でプログラムを管理するためのコメントの付け方とか、

PHPDocというものがあり、こちらでほぼ統一されるかと思います。

JavaDocのwikipediaが参考になります。

http://ja.wikipedia.org/wiki/Javadoc

各言語に○○Docというのがありますが基本的に書き方は一緒です。

あと既出ですがコーディング規約でコメントのつけ方を指定している所もあります。

> プログラム全体の構成図の書き方とか、

これはある程度の規模のフレームワークを読み解くのが一番かと思います。

コメントが日本語でついてるEthnaあたりが読みやすいかと思います。


あと「リファクタリング―プログラムの体質改善テクニック」という本がありますので

こちらはプログラムをきれいに書き直すのに有用かと思います。

ご参考まで。

id:freewriter

ご丁寧にありがとうございます。

オブジェクト指向って、一種の思想なんですね。

頂いた情報を元に事例を読みこなして、勉強していきたいと思います。

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

2008/10/22 17:06:03
id:peraneko No.4

ぺらねこ回答回数7ベストアンサー獲得回数02008/10/22 13:57:52

ポイント17pt

自分で記述したコードが不ぞろいなのであれば、関数の命名規則を作り、インデントを徹底的に行ってください。

まずは、他人が読むことを意識したコードを書く癖をつけるべきです。

PHPの絵本など、簡単な書籍でもサンプルコードはついているので、まずはそれを見て書式を真似するのがいいんじゃないでしょうか。

id:freewriter

ありがとうございます。手元の書籍を参考にしてみますね。

2008/10/22 17:06:27
id:ken-ton No.5

KT回答回数2ベストアンサー獲得回数02008/10/22 17:50:00

ポイント17pt

まずは、自分の中のルールとして、コーディング規約や、命名規則をまとめてみてください。

すべては紹介できませんが、

*クラスの命名規則

  • クラス名には英数字のみ使用。(クラス名に数字を含めることはお勧めできません)
  • クラス名から内容が理解しやすい名前を付ける。略語の使用は極力控える。
  • クラス名は大文字から始める。
  • 複数の単語を組み合わせたクラス名を使用する場合は、それぞれの単語の 1 文字目を大文字にする。ただし、大文字が連続する名前は使用しない。代わりに、2 文字目以降を小文字にする。
  • クラス名に動詞を含める場合、基本的に "動詞 + 名詞" の形式にする。

や、クラス名、メソッド名を付ける場合の名前の対称性として、


get/ set

add / remove

start / stop

begin / end

send / receive

first / last

etc...

などを、あらかじめ決めておいて、少し意識しながらコーディングするといいと思います。

また、コーディング規約に関しては、他の方も提示されていますが

上記等を参考にまとめてみてはいかがでしょうか?

id:freewriter

なるほどなるほど、この名詞の対象性は分かりやすいですね。

かなりイメージが沸いてきました。ご丁寧にありがとうございます。

2008/10/23 16:39:44
id:yasu_sinjuku No.6

やす@新宿回答回数71ベストアンサー獲得回数102008/10/23 06:45:19

ポイント17pt

重要な事は、今後、プロのエンジニアに依頼を出来るスキルをつける事で、ご自身がプロのエンジニアになる事とは違います。

既出の情報を事細かく理解する必要はありません。あなたは、ご自身で勉強されて、サイトを構築し利益も出し始めてるのですから、今後は、その利益をもっとあげる為の勉強に一番時間を費やすべきです。


プロのエンジニアも、プログラマーレベルであれば、綺麗に書く事の費用対効果の計算は出来ません。ドキュメントを1から10まで残す事、プログラムを綺麗に書く事、これらの作業には、時間が掛かります。複数の人間や、複数の会社に発注をする場合には、ある程度の基準が必要ですが、この基準をどこに置くかで、利益率に繋がってきます。

あまりにも基準を高くすると費用ばかり食って、利益を損ないかねません。


既出の情報は、良い情報なので、ご覧になるには良いと思いますが、わたしの経験からするとサラッとこれらの情報をお読みになったレベルで十分ですので、発注されて構わないと思います。何も現在動いている物を書き直してから発注する必要は無いと思います。

また、その方が効率的だと私は考えます。

id:freewriter

仰るとおりですね。ありがとうございます。

ただお任せで発注すると今の身の丈には合わない価格になりますし

レベニューシェアは面倒だし

安値で発注すると、テキトーな仕事をする方が多かったので、

勘所は押さえておこうと思って問い合わせた次第です。

分業は美しいですが、スモールスタートにおいては中々難しいですね。。

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

2008/10/23 16:49:49
id:fukken No.7

fukken回答回数16ベストアンサー獲得回数22008/10/25 04:19:47

ポイント17pt

まず「キレイなコードとはどんなコードか」のイメージが必要でしょう。既に挙がっていますが、マーチン・ファウラーの『リファクタリング』は必携書です。リファクタリングとは何か、整頓されたコードとはどんなコードかという所から始まり、「コードが汚い」状態に気づくためのコツを教えてくれます。

オブジェクト指向の考え方の次は、クラス同士をどう関係させるとスッキリするかの経験。これはフレームワークをちょっと使ってみるのが手っ取り早いと思います。面倒ならばマニュアルだけ斜め読みしても相当得るものがあるとは思いますが。個人的には必要最小限の機能でまとまってるCodeIgniterが好きですが、正直どれでも大差ないと思います。

この道を究めたいなら『エンタープライズ アプリケーションアーキテクチャパターン』(PoEAA)が最強の一冊です。凄すぎて理解不能ですが。

開発規模が大きくなるとソースコード管理が必須になってくるので、TortoiseSVNをインストールした方がよいと思います。複数人開発ならばサーバーを用意して運用するのですが、ひとりならばサーバーではなくローカルのファイルを使ってバージョン管理をすることも可能です。

id:freewriter

将来像の参考になりました。ありがとうございます。

2008/10/25 14:10:17
  • id:t_shiono
    回答できないので、コメントで。

    ある程度作成できるようになると、プログラムに「キレイ」を求めるようになりますよね。
    私も何年も前のコードとかを見ると、自分で恥ずかしくなっちゃいますからね。

    とはいえ、キレイにもいろいろあると思うのですが、まずは何かのフレームワークを使ってみては如何でしょうか?
    Zend Framework、cakePHP、Symfonyあたりだと、これからもWeb系の開発をするのであれば、1つの指標になるでしょう。

    ただ、フレームワークはパフォーマンスを犠牲にしている部分もありますので、開発されている規模や内容によっては不適切な場合もあるかもしれません。ですが、こういった仕組みをみると、自分に必要な共通化がどこまでなのかなんかを考えるいいきっかけにもなると思いますよ。

    以前に、Smartyを使い始めたころに、ここまで柔軟じゃなくてもいいと思って、Smartyの劣化コピーのようなものを作成したことがあります。Smartyよりも使い勝手は悪いですが、自分がそのときに作りたかったものには必要十分な機能だったので、重宝した覚えがあります。

    何かの参考になれば。



  • id:freewriter
    ありがとうございます。
    現状、恥ずかしくてたまらない状態です。。

    いずれは他の人に開発・運用を移管したいと考えていますので
    今からフレームワークを取り入れてスッキリしてみます。

    開発会社や派遣エンジニアが一般的に良く使うフレームワークは
    やっぱりZend Frameworkでしょうか?(個人的に名前を良く聞くので)

    一旦、有名なフレームワークに置き換えてから
    自社開発に置き換えるかを改めて検討してみます。
  • id:pahoo
    > 最大公約数的な、一番使われているフレームワーク?
    ZendFramework, PEAR, Smarty‥‥と、各々に特徴がありますし、機能も違います。
    皆さん、目的に応じて使い分けているのではないでしょうか。


    > 最大公約数的な、一番使われている開発規約?
    自社の開発標準を適用しているケースが多いのではないでしょうか。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません