PHPについて質問です。


はじめてのプログラミングとしてPHPを勉強しはじめ、
セキュリティ、データベース、PEARについて
本に書かれてることは理解できるようになりましたが、
簡単なカウンターのようなものでさえ思うように作ることができません。

サンプルスクリプトを読んだりして理解はできるのですが、
いざ自分でスクリプトを作ろうとするとそこでばったり手が止まってしまいます。

英語にたとえると、英単語を知っていて、和訳を読むことはできるけど、
英作文は書けないというかんじです。
どうしたら良いのでしょうか?

「自分のしたいことをおおざっぱに分けて、それをさらに分けてみる」とか
「まずHTMLから作ってみる」とか教えていただいたのですが、それらは大変参考になりました。
あるいはZendやSmartyなど不足していることを教えていただいたり、
ほしいスクリプトはこうやって探すと良いなどを教えていただけると参考になります。

質問が漠然としているので、答えも参考になりそうなことなら何でも良いです。
よろしくお願いします。






回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2008/06/25 20:13:46
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答5件)

id:kn1967 No.1

回答回数2915ベストアンサー獲得回数301

ポイント24pt

セキュリティなどは当然ながら大切な事柄ですが

一度に出来るものなどありません。


出来る限り短い(数行から十数行程度まで)サンプルスクリプトを沢山テストして

「それらを組み合わせて何か出来ないか?」というように考えたりして

徐々に複雑にしていけばよろしいかと思います。


実用的なものを造れるようになることを優先するのであれば

細かな部分は既に準備されていてパーツを組み合わせるだけでOK

セキュリティなどもある程度考えられた環境を使うというのも手になります。

それがフレームワークです。


どれでも良いので人気のありそうなフレームワークか

書籍などで何度でも読み返せる資料があるフレームワークをチョイスして

使ってみる事から始めると良いでしょう。


そして、足りない機能の部分を改造する形でスキルアップ・・・。


何事も時間はかかるものですから、あせらず最低2~3年は基礎固めに使いましょう。

1つのフレームワークを使いこなせるようになったら

あとは実装されている機能が多少違うくらいで中身は似たような物です。


フレームワークのようなものを個人個人で作っていた時代に比べれば

ネット上に無料のものが幾種もあるとは・・・何と幸せな時代になったことでしょう。

id:taroemon

丁寧なご回答ありがとうございます。

いろいろ参考になりました。


>出来る限り短い(数行から十数行程度まで)サンプルスクリプトを沢山テストして

やはりそういうことになりますね。

もしネット上でおすすめのサイトなどありましたら教えてもらえると嬉しいです。


>最低2~3年は基礎固めに使いましょう。

そんなに時間がかかるのですか!?


フレームワークも検討してみます。

2008/06/25 18:45:02
id:taku_j_7 No.2

回答回数139ベストアンサー獲得回数12

ポイント23pt

「PHP」という言語は実用レベルに十分到達していると客観的に感じます。

問題はプログラムを組み立てる能力であって、PHP固有の問題ではないと思います。

私はネットワーク/サーバ関連の業務を行ってます。

この分野に居るのはプログラムに苦手意識があったからだったのですが、

結局、サーバ関連の業務を行うにはプログラミング能力も必須でした。

当時、ほぼ素人同然の私が上司から教わった方法です。


1:まずテーマを決める(プログラムの目的)

2:目的に至るまでの処理の細分化(箇条書きでOKです)

3:プログラムの遷移を簡単な図で表す

  (UMLみたいな大層なものではなく、処理、条件分岐が四角で描ければOKです)

4:日本語交じりのコーディング

  (この処理をして、その結果をさらに処理して という流れを日本語で書いていきます。)

5:実際のコーディング

4番が少し不思議な表現ですが、要はこの箇所で「やりたい事」を日本語で書きます。

例として、携帯からのアクセスをキャリア別で振り分けるコードの一部で説明します。

----------------------------------------

$変数A = 取得したユーザエージェント;

if(変数Aに"docomo"が含まれる場合){

宛先をhttp://www.hogehoge.com/imode/に書き換える。

}

~以下略~

----------------------------------------

↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

これでプログラムの流れは組めたので、あとやりたい事に従って、

処理をPHPのものに変換していくだけです。

逆引きリファレンスなどがあると非常に助かります。

↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

----------------------------------------

$agent = $_SERVER['HTTP_USER_AGENT'];

if(ereg("DoCoMo",$agent)){

header("Location: http://www.hogehoge.com/imode/");

exit;

}

~以下略~

----------------------------------------


非常に手間ではありますが、プログラム思考を身につける事が出来ると思います。

有識者の方にアドバイスを得る際にも、「何をどうしたい」がはっきりしていると事がスムーズにゆきます。

id:taroemon

ご回答ありがとうございます。


>問題はプログラムを組み立てる能力であって、PHP固有の問題ではないと思います。

それは疑ってません。ひとえに私の経験不足、能力不足によるところです。


上司さんから教わった方法はとても参考になりました。

この流れは実践に取り入れていこうと思います。

2008/06/25 18:45:21
id:kou32rr No.3

回答回数197ベストアンサー獲得回数8

ポイント23pt

そもそもプログラミングは必要とする目的があって、

それを実現するためのものであり、

何か目的がないとなかなか身につかないと思います。

おそらく

簡単なカウンターのようなものでさえ思うように作ることができません。

というのは、途中でハマッてしまっているだけであり、

ハマッてしまうことは10年選手でもありえることです。

ハマッてからどう実現するか、

努力できるかどうかが大事であると思います。

「自分のしたいこと」であると目的として弱い可能性があります。

プロを目指すのであれば「顧客が求めるもの」が目的となります。

また、smartyなどは一人でやっている場合はあまり役に立たないし、

効果的な使い方は身につかないと思います。

具体的にはデザイナーとの連携を考え出すと必要になってきます。

なので目的が必要ですね。

それを探すのが一番難しいわけではありますが。。。

id:taroemon

ご回答ありがとうございます。


はまったというか、最初から全然先に進まないんです。

頭が真っ白になってしまうんです。


>smartyなどは一人でやっている場合はあまり役に立たない

これは参考なりました。

2008/06/25 18:33:37
id:kemworld No.4

回答回数62ベストアンサー獲得回数1

ポイント15pt

まさにボクもそういうところで悩みました。

発想を変えて、まず

「いきなり作ろうとしてみる→わからないので参考書でソースを見る」「ほかいろいろ調べる」

の連続でいくしかないと思います~。

しかも簡単な掲示板とか。参考ソースがありそうな簡単なものを目標にするといいと思います。

id:taroemon

ご回答ありがとうございます。

私も結局はそれしかないかなと思います。


>まさにボクもそういうところで悩みました。

そこからの体験談や、技術的なことも教えてもらえると嬉しいです。

2008/06/25 18:35:39
id:tyage No.5

回答回数5ベストアンサー獲得回数0

ポイント15pt

逆にこっちのほうが難しいかもしれませんが、Perlをやってみてはどうでしょう?

こちらでカウンターができればできるのでは?

http://www.tohoho-web.com/wwwperl.htm

id:taroemon

ご回答ありがとうございます。

とりあえずはPHPで頑張ってみます。

2008/06/25 18:17:56
  • id:humiya_r
    一番の近道はサンプル集を数多く
    自分なりにアレンジしていくことです。

    そして、そのスクリプトの機能を細分化していって
    どの命令が何の処理を行っているのかを読み解く練習をします。

    それができたら
    自分でスクリプトのフローチャートを
    紙で結構なので書いてみることから始めます。

    スタート
     ↓
    アクセスがあった
     ↓
    カウンターファイルを読み込む
     ある ・ ない 
     ↓    ↓
     ↓   ファイルを作成
     ↓    ↓
     ↓  ←
     ↓
    ファイルの中身を表示

    ・・・ といったように部分ごとに分けます。

    それから各々のポイントとなる関数を考えれば
    おのずとできるかと思います。

    こうやっていけば
    どの時点で、問題が発生したのかが
    わかるようになります。



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

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

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

回答リクエストを送信したユーザーはいません