REDLINE MAGAZINE | PHPを勉強する事についてデザイナが思う事。REDLINE MAGAZINEトップページへ

すべてのエントリを見る

PHPを勉強する事についてデザイナが思う事。

先日、こちらのエントリを拝見して・・・

デザイナーがwebサービスを10週間で作れるようになる方法。または私は如何にしてPHPを愛するようになったか。 - ウェブ狂の詩

なんかいいなぁ・・・って。PHPを今勉強している自分としては、こういうお話大好きです。

激しく同意→「デザイナーはphpを覚えると楽しいよ!」

自分はまだ何かwebサービスが作れるとか、そんな高度なレベルではない初心者ですけど、とりあえず今PHPの勉強するのがすごく楽しいです。

本業はデザインやコーディングがメインで、実務でPHPと言われれば他のプログラマさんが作ったシステムを設置・デザインをカスタマイズする程度。自分で1から何かを使って何か大きな事をするという機会にはまだ遭遇してないんですが(最近ちょこっとしたスクリプトは実務で自分で用意させてもらったりして、それはそれで感動しました)、とりあえず勉強するのはすごく楽しい。知らなかった事と中途半端だった知識がピーン(←ニュータイプの効果音)と連結する瞬間に遭遇した時とか「うひょーー」ってなります。

選択肢が増えたよ

以前は何かプログラムが必要ならば、プログラマさんにお願いするか、もしくはネットで配布されているものを探すか・・・。選択肢はそういう感じでした。自分で作るという道は考えもしませんでしたし。

環境によるとおもいますが、基本的にデザイナは、最初から誰かが作ってくれたプログラム一式をこう設置したら動作する、デザイン面はこうやって手を入れる、こう使えばこういう結果が出てくる。それだけ知ってればなんとかなっちゃうんです。プログラムを作ることは求められてないし、基本的な知識があればなお良いけどね、程度のレベルです。あまりテンションの上がる話ではないんですが、私のやってる規模の案件ではそんな感じです。

もちろん「一応この知識だけは勉強しておかなきゃ」という事は勉強しますが、レベルの高低に関わらず断片的な知識だけが増えていく感じなんです。例えば、MySQL使うモノがあるからとりあえずローカルに環境作らなきゃならないとか、接続方法知っておかなきゃならないとかphpMyAdmin使えなきゃならないとか何かエラーが出てるよ、こうすれば直るんだな、とか。別に自分でデータベース作って何かするわけではないのにそういう断片的な知識だけが増えていくんです。

それが、ちょこっとした内容のプログラムなら「自分で作れる」という選択肢が増えました。これはとても大きい。自分は代理店から請けてる仕事と個人として請けてる仕事があるんですが、代理店経由の方は向こう側にプログラマさんもいるし、いざとなったら何とでもなるんですが、今まで個人で請けてる案件が問題でした。

予算はないけどプログラムが必要だ、という状況がたまにあるんですが、予算ないと言われると今までの「自分で作る」選択肢がない時は全力で必要機能を満たしたフリーのスクリプトを探しまくらねばならんかったのです。これが意外と面倒だし大変。当然後から機能を増やしてとか言われても増やせないし。そうなるとまた探しなおしです。自分がプログラマだったらどれだけこの無駄な時間が省略できるだろうとか思ってました。

まだ自分は大した事はできないですが、少しずつできる事が増えてて、ちょこっとしたものなら自分で提供できるようになりました。楽になった。気持ち的に。会社勤務のデザイナさんはあまりこういう気持ちにはならないかもしれないですが、個人でやってるとデザイナ同士の横の繋がりはできてもプログラマさんとの横の繋がりがなかなか見つからなくて相談できる人もいなくてオロオロする瞬間があるんですね。どうしよっどうしよっ!ってなって、胃かキリキリするような。だから個人でやってるデザイナこそプログラムを勉強すると幸せになれるのでは、とか思ってます。

使い道はユーザーに提供する場面だけじゃなかった

自分が勉強しはじめるまでは、こういうのって外に公開するために勉強するものだっていう固定観念みたいなものにとらわれてました。だけどちょっと落ち着いて考えてみると、自分の作業を少し楽にするために使うこともできました。下記は以前PHPの勉強日記として書いたエントリなんですが、

全角数字⇔半角数字・全角カナ⇔半角カナ変換
dat から1行ずつ抜き出して xml 書き出し
画像にロゴ(ウォーターマーク)を入れる

こういうのって探せば専用のフリーソフトやwebサービスもあるとは思うんですが、自分でPHPを使って作ってみると好きにできるので・・・楽しいし手作業でやるよりなんぼか早いよっていうお話。外部に出して使うものでなくても、自分の手元での作業を少しでも楽にしちゃう使い方もできるんだなーと。

でも、神が身近にいません

上記サイトの方は身近な神がいらっしゃるそうですが、自分にはいません。以前は仕事を頂いてる代理店に私なんかにも優しくしてくれる神的な存在がいらっしゃったのですが、今はどこか遠い所へ転職されてしまいました。がーん。

身近にPHPのこと、気軽に質問できる人がいるのといないのでは随分差が出てくるのではないかとマジで思います。

今更聞けない、恥ずかしくてネットで聞けない

「多分これって初歩的な事だよね・・・ブログとかTwitterで誰かに聞けばもしかしたら教えてもらえるかもしれない。でも会った事のない誰かに聞くの失笑されそうで恥ずかしいわwww」と思う瞬間が多々あります。こんな時、身近に神がいてくれたら・・・と思ふ。

まぁ、散々このブログでも初歩的な恥を晒しているので今更何を言ってるんだという感じもあるし、元々能力も知識もないのにカッコつけんなって話なんですが。

こういうレベルの質問ができる相手が欲しい

具体的に言うと、こういう質問がしてみたいです。

  • ソースの最後に「?>」をつけないってどういうこと?まじなの?
  • これセキュリティ的にOKでしょうか・・・?
  • 結果としては問題なく動いてるけど、書き方はおかしくないですか?
  • などなど・・・

ググレカスで秒殺できる内容のしょーもない質問は自分で調べろやって話ですが、なんかこういう質問がサラっとできる神がいてくれたら幸せになれる気がするのです。

神がいたらモチベーションが保てる気がする

あと、技術的な事だけでなく、神がいるからモチベーションが保てるという意味でも存在感大きそうだなと思います。私去年からここのブログでPHPの勉強日記みたいなのを書きはじめたんですが、その前の数年間も勉強する→挫折する→もっかい1から勉強する→モチベーション下がって挫折→もっかい1から(ry・・・の繰り返しだったんですよ。

なんでわざわざ「もっかい1から」の手順になるのかといえば、「心機一転!」みたいな気持ちのしきりなおし的な意味でもあるんですが、理解したつもりで完全に理解してないから、なんでしょうねぇ・・・。

神がいたら「神に前いろいろ教えてもらったし、あーもっと勉強続けなきゃ!」「せっかく親切に教えてくれたんだから頑張って期待に応えたい!」とか、挫折しそうになっても、その人がいるから踏ん張れるみたいな状況になるかもしれない。

しかし、もし神が身近にいたとしても、私は神から何か教えてもらっても神にお返しできる能力がないや。神がHTMLとかCSSとか興味あるなら返せるかも、だけど。

そんなこんなで、神がいないので諦めて自分を追い込むためにブログで「そろそろPHPの勉強本気出す」宣言をしてからはなんとか今日まで続いてる。実務に時間とられて、なかなか勉強する時間が確保できない時期も去年後半はあったんですが、「もっかい1からやりなおし」はしてない。多分、ブログに書いた内容まではちゃんと身についてるんだと思う。だから継続して勉強できない時期があっても続きから続きから・・・でやれるようになった。これはなんか成長してる感じがして嬉しい。

テンション上げてくれてありがとう

私の勉強熱がまだ途切れてないその他の要因。みんなのお陰で続いてます。

  • ついったーで「勉強がんばってるね」って言ってくれてありがとうございます。
  • コメントやブクマでいろいろアドバイスしてくれてありがとうございます。
  • 相方よ、「デザイナ・コーダーなのによくこんなに頑張ってるね」と言ってくれてありがとうございます。

頼む。定期的にそれ言ってくれ。ウソでもいいから言ってくれ。最近PHPの勉強日記書いてないなとふと思った方、気づいた時に言ってくれ。頼むっ。

デザイナの私が理解できなかったこと・間違ってたこと

これは私が馬鹿なだけって話かもしれませんし、すべてのデザイナさんがそういうレベルだと思っているわけでもないです。おそらくプログラマ脳の方からすると何いってんの?バカじゃね?って話だと思うんですけど、最初間違えてたなぁと今になって思う事です。

関数をある程度知った後、どうしていいのかわからない

私は、関数を組み合わせてロジックを用意するという考え方自体ができませんでした。他の人が書いたソースを見れば「それが何をしているのか」は理解できるんですよ。関数自体は調べながらでも何でも意味はなんとかなるので。でも自分で1から書けと言われると手順がまったく考えられない。分からない。できない。

だから参考書にそって勉強していっても何もできないまま。最終的に「何か作ってみよう」の章に書いてあるサンプルアプリもそこに見本があるからそのまま写せば動くし、やってる内容は調べながら理解はできるけど、自分では1から書けない。

とりあえず一通り本の通りに動かしてみた。「で?」という状態から抜け出せない日々が長かったです。実務で「これを作らなきゃならない」という目的があればもっと早くこの段階を乗り越えられたと思うんですよ。だけど如何せん、デザイナには「こういうプログラムを作れ」という指示はおりてきません。ここ、第一の壁でした。

作りたいものがないまま勉強してしまう

すごく漠然とした言い方なんですが、いくら関数の意味を知っても「何ができるのか」をまったく想像できなかったんです。「日付を取得するにはこれを使います→はい。サンプルソース試した→理解した。」「ファイルに書き込むのはこの関数です→はい。サンプルソース試した→理解した。」それでその後、何もしないままでした。何かを作りたいからその手段を知るために勉強するのではなくて、なんとなく勉強しなきゃならない気持ちになって読書してただけ、みたいな。

初心者向けの参考書って変数とは何かみたいな所から始まって、繰り返し処理とか条件分岐、関数の説明とか、そういう流れで進んでいって、最後の方の章には何か作ろう、という流れになってるんだけど、そこで高度すぎて挫折したり。

その中間をどうしていいのか分からなくて、それぞれの関数にサンプルソースは載ってるけど、その後「で?」っていう。「関数の勉強する→関数の意味理解した→終わり」になってたんですね。もったいない時間の使い方をしてました。

網羅しなくても全然大丈夫だった

それまでは無駄に関数ばっかり追いかけて、網羅しないといけないんじゃないかという錯覚に陥ってたんですが、そんなのは後から調べながらでも十分いけると分かりました。

CSSやHTMLと一緒である程度よく使うものってのは決まってて、それらは使用頻度が高いから何か自然と覚えられるし、一回自分で1から書いてみると、ふとした時に「あ、この処理、前にもやったことがある!」って自分がやった事を思い出すことが出来るんですね。んでコピペ、みたいな。

勉強方法を改めたら一歩進めた

いい加減に自分で1から書いてみようぜという気になった

去年、ブログで「PHP勉強、本気出す」宣言をしてからは「実際に何かを作る」という目的を先に用意して、どんな機能が必要か、それためにはどんな関数を使えばいいか、どういう手順で処理をしたらいいのかっていう事をちゃんと自分で考える勉強に変えました。

これ、当たり前の勉強方法ですよね。だけど、なぜか私はずっとこの勉強方法ができなかったんです。人のソース見て分かった気になって終わりじゃいけないと思ってるけど、その段階から先に進めなかったというか。面倒そうに思ってたのかな。必要に迫られてないから。

人のソースを真似するだけじゃなくて、一旦1から自分で書いて躓いたらマニュアルや他の人のソースを見て自分がやりたい事をやってる部分を探すっていう手順で勉強しはじめたらどんどん『何か』が分かってきた。その『何か』が分かってくるとどんどん楽しくなってきた。残念なことにその『何か』っていうのがうまく文章で説明できないのですが、『何か』というものがそこにはあるんです(キリッ

そしてその段階になると逆引きリファレンスを読むのが楽しくて仕方なくなってきた。あーこの機能つけたいー!とかワクワクするようになってくる。

日本語で処理の道筋を考えた

私がまったく理解できなかった処理の道筋の立て方についての話ですが、最初からソースを書こうとしても私の頭のキャパオーバーで無理だったので、まずは関数とかそういうの一切無視で日本語で順番にどういうことをすればいいのか考える事にしました。例えばこういう感じ。

  1. 入力用フォームを作る。
  2. 受け取ったデータを変数に入れる。日付、ログ用ファイルも変数に。
  3. フォームの送信ボタンが押されたら。
  4. タイトルと本文の中身が入ってたらエスケープ。本文の改行文字はbrに変換。
  5. それぞれの変数を配列にしてタブ区切りで結合する。
  6. ログ用ファイルを開いてロック。
  7. 一行に結合してたデータをログ用ファイルに書き込む。
  8. ロックを解除してログ用ファイルを閉じる。
  9. 表示のためにログ用ファイルを読み込んで配列に。
  10. 分解して変数に値をセットしてログ用ファイルの中身の数だけループ。

こういうのってプログラマさんは頭の中でパパーと整理しながら順序だててソースを書けるんだと思うんですが、私は最初まったくできませんでした。どんな処理が必要なのかなって紙に書き出して、順番はどうしたらいいかなって番号順に並べて・・・みたいなことやってました。

一通り日本語で流れを書いた後に、それぞれがどうやったら処理できるのか、必要な関数やらなんやらを先に調べて日本語で書いた手順をソースに変換してきました。そしたらなんとかなった。もしかしたら変なソースかもしれない。でもやりたいことはとりあえずできた。

もしもデザイナやコーダー業の方で私と同じように処理の手順を自分で考えられねーっていう同類の方がいらっしゃったら日本語でまず書いてみる方法、オススメします。素人の私がオススメしますって言ってもまったく説得力ないですけど、私は何回か日本語で全部手順考える方法を繰り返してるうちに、知らない間に1から手順を日本語で書かなくても頭の中でこういう手順でやればいいんじゃないかって「予想」していきなりソース書き始められるようになりました。

いや、もちろん日本語で書いても書かなくても私レベルではどこか何かの処理が抜けててうまくいかなくて後で「あーこれ入れなきゃ」っていうのを追加したりしてるんですが。まぁよかったら試してください。

余談・・・プログラマさんへ

不躾なお願いではありますが、デザイナに渡すデータの中に font とか b とか入れないでくれると嬉しいです。あ。あとHTMLの要素は大文字じゃなくて小文字だともっと嬉しいです。あ、あとbrは<br>じゃなくて<br />が好みのタイプです。

いや、もちろん言わんとすることは理解できるんですよ。エラー文だから赤字にしたいですよ、太字にしたいですよ、私も。ええ、わかりますとも。しかしながらですね、できたらそういうタグの代わりにclass="error"とか、何か、そういうのだと幸せなんだけどなぁとか思っちゃうんです。ええ、もちろんスタイルはあとでこっちで挿入でもOKですとも。

あ。確かに個々の仕様によりますよね。そうですよね。嫌ならまとめて置換すればって話ですよね。そうですよね。

直接やりとりできるプログラマさんに何かをお願いするときは、最初にそういう約束事を作ることもできるけど、よその業者さんのプログラムを購入する時とか、ふと上のような事を思ってしまいますっていうお話でした。

あ、いや、敵に回すつもりは毛頭ないです。ごめんなさい。動きゃーいいですよね。そうですよね。そうできない理由があるんですよね。わがまま言いました。生意気言いました。ごめんなさいごめんなさい。

<< PHP宿題 MVC の勉強 | 素敵★ノンプログラマのためのPHP入門 >>

トラックバック

このエントリーのトラックバックURL:
http://redline.hippy.jp/cgi/mt/mt-tb.cgi/254

PHPを勉強する事についてデザイナが思う事。 へのトラックバック一覧

» PHPとTwitterAPIを利用して、自分のタイムラインを表示してみる@デザイナー 送信元 caraldo.net | WebとiPhoneとロードバイクが大好き!
PHPの勉強の為にTwitterのAPIを使用して、まずは自分のタイムラインを表示してちょこちょこ修正を加えてみたいと思います。 完成イメージはサンプル...
Trackback time : 2010.02.17

コメント (10)

最後の部分、いまどきbだのfontだの使うウェブプログラマなんているんですか?
それは偽モンちゃうかと……。そんなレベルの人に金はらっちゃいけませんぜ!

プログラマに対するお願いもっとどんどん言っていいと思いますよ。
class="red"とかも嫌ですよね

自分も過去に二度挫折しましたよ(苦笑)
でも、三度目にしてやっと言語爆発しました。
http://el.jibun.atmarkit.co.jp/hidemi/2010/02/post-78a2.html

爆発したあとの成長スピードは凄まじいですね。
そこまで努力し続けられたら、立派なプログラマーになれると思いますよ!頑張ってください!

>ryumu*氏
多分、随分前に作ったものに、そのまま手を入れて機能追加していってるんだろうなーとか思ってましたw


>匿名さん
気持ち分かります(n' ω 'n)
でもCSS始めた頃は自分もそんな感じだったww


>reaさん
おおおお。言語爆発って始めて聞きました。そんな表現があるのかぁ。今自分は爆発してるのか分からないけれども、もっと頑張る!

神が近くにいたら、、ってすごい分かりますw
その壁が越えられるかが勝負どころなのかもしれないですね。
同じような人がいると励みになります。頑張ってください!

>hiroscoさん
コメントありがとうございますー。
勉強仲間って励みになりますよね。がんばりますー!

こんにちは!
twitterでフォローさせていただいてるので、そこから来ました。

僕は逆にプログラマなので、デザインの勉強をしようとするとCSSの書き方の勉強になってしまいまさに仰っている「作りたいものがないまま勉強してしまう」ですね^^;
目的を持つとだいぶ勉強も理解が深まりますよね。
僕も何か作るのを目的にして勉強してみます!

あ、ちなみにですが

>ソースの最後に「?>」をつけないってどういうこと?まじなの?

これに関しては、閉じた後の文字(改行コードなど)を出力させてしまうため、閉じタグの後に出力がない場合、基本的に書かないほうが良いという解釈です。
例えばPHPタグ内で改行しても実行結果は改行コードが出力されませんが、閉じタグの後の改行は出力されるということです。

ココを参考にしてます。
http://framework.zend.com/manual/ja/coding-standard.php-file-formatting.html
zendが言ってるんだからといってもいいかもですね笑

>masa0221さん
コメントありがとうございましたー。参考ページまで教えていただいてありがとうございます!
PHPコードのみのファイルには閉じタグをつけないほうがいいってことなんですね。勉強になりましたー(n' ω 'n)

masa0221さんのようにプログラマさんが見た目関連(デザインやCSS等)の事を分かろうとしてくれて、デザイナ・コーダー側もプログラムの事を少しずつ理解できたら、きっとお互いいい刺激になってパワーアップできますよね。
勉強頑張ってください(n'∀')η
私も頑張ります!


Redさんすげーね^^この前少し言っただけなのに、すぐ行動に移してる。。その行動力をわけてほしいw

プログラミングはある一定のレベルに達するまでが大変なのは確か。でもそのレベルに達するとその後がすっごい楽です。触ったこともない言語も容易に習得できるようになります!どなたかも言ってますが、突然ばらばらだったピースが繋がる時がきっと来ます。私も数年やってやっと繋がりました(遅いってw)。目どころか全身から鱗がおちます。その後は謎だらけだった解説書が容易に理解できますよ!うそみたいに!

一つ気をつけなくてはいけないのが、構造化プログラミングとオブジェクト指向プログラミングはかなり違いがあるので意識しないと混乱するかも^^;これからやるならオブジェクト指向プログラミングをお勧めします(何度もしつこくてすまそん)!

少し理論を理解したら、何か「楽しそうなモノ」を作ってみるといいですよ。あまり理論を深追いしてるとイヤになりますので^^

>きのこる先生
早くしないと忘れてしまいそうなのでw
>少し理論を理解したら、何か「楽しそうなモノ」を作ってみるといいですよ。
作ってみたいですー。ホントに作りたいものがあるのとないのでは全然違いますね。すごく実感してます。
私も早くいろんなコトが繋がるといいな(n' ω 'n)




※コメント欄に「<」「>」等を含むソースを記載する場合は実体参照に変換してください。

このページの一番上へ

その他の情報など

最近のコメント

PHP オブジェクト指向の勉強
  • Red - 2010.01.08
  • hogepage - 2010.01.21
  • Red - 2010.01.22
  • - 2011.11.27
  • houseiii - 2011.11.27
Fireworks トリミング画像を一括書出 CS4編
  • Iper - 2009.06.27
  • Red - 2009.06.27
  • mala - 2011.11.17
  • Red - 2011.11.18
jQueryでボックスを上下左右中央に簡単配置
overflow を使用したボックス背景のこと
  • - 2007.12.13
  • Red - 2007.12.13
  • - 2007.12.13
  • Red - 2007.12.13
  • hj - 2011.09.23
IE6 → 透過PNG+overflow=混ぜるな危険(追記有)

メッセージを送る

こちらのメッセージ送信フォームは閉鎖させて頂きました。
御用の方は新しい方のブログ にコメント頂くか、 連絡用のフォーム もありますので、そちらからご連絡ください。