はたしてこのコードは合っているのか
こんにちは。しゅーのーです。
今日から背伸びしてWebアプリケーション実践編に突入です。
参考書はこちら。
ちょっとその前に、、、
昨日も少し書きましたが、CodeIgniterのバージョンが進んでいるため、ファイルの構成やら何やら色々変わってしまっていました。
そんなわけで、今日の仕事の休憩時間に、「日本CodeIgniterユーザ会」のHPを見ていました。
見るとインストールの方法から、どういう流れで動くのかや、チュートリアルまで載っていました。
チュートリアルでは「ニュースアプリケーション」を作っていって、基本的なことを学んでいくみたいです。
もしかして、こっちを先にやった方がよかったんじゃね?と思ったところです。
参考書に書かれている、CodeIgniterの予約語とか実際に変わってましたからね。
これから動かすWebアプリもうまく動いてくれない可能性が濃厚なので、もしそうなったらまずはチュートリアルから始めてみようと思います。
今日は「モデル」部分のコーディング
さて、参考書の実践編では「ぐるなび」のようなものを作ることを目標としています。
今日はphpのフレームワーク、MVCパターンのMの部分、「モデル」をコーディングしていました。
モデルは主に、データのやりとりをする部分になるみたいです。
かなり書くことがいっぱいあって、今日は途中までしかできませんでした。
「ぐるなびWebサービス」のURLも変わってしまっていたので、その辺りのコードは「なんとなくこうじゃないか」って感じで打ってます。
今のところ「ぐるなびWebサービス」のAPIからデータを引っ張ってくる部分をひたすら書いています。
引っ張ってきたデータから、お店の名前や住所なんかを取り出して、配列に入れていくことをが目的みたいです。
「モデル」部分はテストができない?
これまではphpで書いたコードはすぐにテストすることができたので、「間違っている箇所」というのがすぐに分かりました。
しかし、モデル部分については、実際に「コントローラー」で操作して、「ビュー」で表示してみないことには、間違っているのかどうかすら分からないのではないかと思っています。
この考え方で合ってるのかすら怪しいことこの上ないですが、とりあえず今はひたすらコードを打つしかなさそうです。
今日はここまで。ではー。
フレームワーク、難しすぎません?
こんにちは。しゅーのーです。
今日で今週も折り返し。休憩時間などを利用しながら少しずつ勉強していってます。
参考書はこちら。
フレームワークの理解が追いつかない
今日はフレームワーク、CodeIgnterの書き方を勉強していました。
正直に申し上げて、難しすぎて頭がついていってません。
オブジェクト指向までは何とかついていけてましたが、これを応用した途端に急にレベルが上がったような気がします。
便利そう
なんとなく分かることは「これができれば、便利そうだな」ということです。
カレンダーなんかも自分でコードを書かずに、ちょいちょいっとクラスと引数を入れてやれば、一瞬でできてしまうみたいです。
今ぼくが考えているWebアプリにも、カレンダー機能を実装したいので、これはとても参考になりました。
バージョンの差が致命的
難しい難しいばかりも言ってはいられないので、コーディングに着手することにしました。
結構新しい用語が出てきたりしたので、その概念に触れることが大事なのかと思います。
MVCは「Model」、「View」、「Control」のことだとか、それくらいなんですけどね。
今使っている参考書、2011年発刊のものなんですが、それからCodeIgniterもphpもバージョンがどんどん変わっているので、ちょっと困ったことが起きています。
参考書どおりにやっても上手くいかないことが多いですね。
そもそもファイルの置き場所が違ったりするので、困惑しています。
Webアプリに着手
というわけで、考えていても仕方がないので、明日から早速参考書に載っているサンプルのWebアプリケーションを作ってみようと思います。
やっているうちにきっと、CodeIgniterのことも分かってくるんじゃないかと思います。
もうどうしようもなくなったら、Twitterとかで叫びまくって聞いてみようかと思ってます。
果たして反応してくれる人がいるのかは疑問がありますがね。
まぁ、この参考書も1周目ですし、気長にやっていきます。
今日はここまで。ではー。
オブジェクト指向とCodeIgniter
こんにちは。しゅーのーです。
今日もなかなかに苦戦しましたが、前に進んだ感じはありました。
参考書はこちら。
オブジェクト指向は「なんとなく」
昨日までで、アンケートフォームとコンタクトフォームが作れるようになったので、phpでの基本的な内容は1周したのかと思います(多分)。
今日は「オブジェクト指向」というものを学びました。
読んだ感じや、コードを打った感じで、今の感触としては「ユーザー定義関数のでっかい版」という認識なんですが、それで大体合ってるんでしょうか。
オブジェクトの中にはプロパティと言う、今まで変数と呼んでいたものと、メソッドと言う、今まで関数と呼んでいたものを「えいや」って突っ込んでいるようなイメージでした。
引数でデータを渡してやれば、定義したクラスにしたがって、いっぱいオブジェクトを生成してくれるっていう便利なもの、みたいです。
まだプロパティのアクセス権や、継承といったものまで行き着いていないのですが、今のところ順調にきているように思います。
今日はエラーとか吐かれてないですしね。書いたコードが少ないってのもあると思いますが。
フレームワークで便利に使おう?
オブジェクト指向を学ぶと、フレームワークというものが使えるようになるという話でした。
いや、フレームワークを使えと言った方が正しいのかもしれません。
そっちのほうが初心者は安全にWebアプリを作れるようになるそうです。
使うフレームワークは「CodeIgniter」です。
参考書では「これが一番簡単で分かりやすいから」ということで、入門的な意味合いでこれを使って勉強していくみたいでした。
バージョンが違うといろいろ違う
ただ、ちょっと問題があったのが、参考書の出版年が古くなっていたため、CodeIgniterのバージョンがどんどん進んでいて、phpのバージョンに追いついていないことがわかりました。
おかげでちょこちょこエラーを吐いてくれています。
一度、参考書の示していたバージョンのCodeIgniterを入れてみたのですが、それはそれでphp側で処理できないものがあったりして、ちょっと厄介です。
これについては自分でCodeIgniterのドキュメントを読んでみるしかなさそうですね。
幸い、ネット環境があればドキュメントは読めるので、仕事の休憩時間で読めそうです。
明日は細切れになりますが1時間くらい勉強の時間が取れるのではないかと思っています。
今回のフレームワークの基本的なところを押さえれば、次はWebアプリっぽいものができるみたいです。
なるべく早くそこまで行き着きたいものです。
CodeIgniterの仕様、あんまり変わっていませんよーに。
今日はここまで。ではー。
コンタクトフォームが完成しました!
こんにちは。しゅーのーです。
勉強する習慣も身についてきた今日この頃。これが長く続けばいいのですが。
参考書は例によってこちら。
ようやくコンタクトフォームが完成
昨日はプログラム部分が思ったように動かない、確認画面にエラーの表示もできないという散々な目にあっていたわけですが、なんとか完成にこぎつけました。
途中でもうダメかとも思いましたが、参考書とにらめっこしながら、不具合を1つ1つ潰していきました。
何がダメだったのか
今回うまくいかなかった原因はなんだったのか。
それは意外と単純だったりしました。
・HTML部分の記法が間違っていた
・phpの構文が間違っていた
間違っていたのは、2箇所。
これだけでプログラムがぜーんぜん動きませんでした。
もっと具体的に書くとすると、HTMLでは「 <font color="red>"」とかになってましたし、phpの方では「ehco」とか書いてあったりしました。
我ながらケアレスミスのレベルにガックリきています。
今回はユーザーが入力したデータをセッションを利用して受け渡したり、正規表現という機能でエラーのチェック等をしたり、難しい内容が多かったんです。
きっとそこが間違っているんだろうな、と思っていたら、全く別の部分で間違っていました。
まぁその分、参考書のコードをいっぱい読むことができたのでよかったことにしましょう。
phpのエラー表示について
これまでphpで何か書き間違っていると、画面が真っ白になっていました。
それで以って「あーなんか間違っているんだな」と判断していたのですが、他にも方法がありました。
というより参考書には、「ブラウザにエラーが表示される」と書いてあったのですが、ぼくの場合は表示されなかったんですよ。
なんでかなーと思いながら何となくやっていたわけですが、これ結構不便なんですよね。
どこで間違ってるのか表示してくれれば、今回ももっと早く解決していたはずでした。
それから検索をしてphp.iniの「display_errors」を「On」にすればいい、という答えを得たんです。
早速試してみたんですが、一向に表示してくれない。
なんでだろ、と思いながらまた検索しまくってたんですが、いじくる「php.ini」が違うだけでした(これを調べるのにも20分くらいかかりました)。
おかげでsyntax errorとかが表示されるようになりました。
表示されたあとも少しエラーで苦しめられたんですけどね。
まぁそれはいいでしょう。
次はオブジェクト指向を学ぶ
明日からはオブジェクト指向プログラミングという手法を学びます。
これをマスターすれば、他の言語でも応用が効くみたいです。
じっくりやっていこうと思います。
今日はここまで。ではー。
コンタクトフォーム作り苦戦中
こんにちは。しゅーのーです。
今日は家に新しいハードウェアが届きました。
テレビのレコーダーなのですが、そこには「Java」の文字が。
phpでWebアプリができたらJavaも覚えてみてもいいかもしれません。
今日も参考書はこちら。
今日の収穫
率直に言うと「ありません」。悲しい。
アンケートフォーム作り、かなり難航しています。
と言うのも、参考書どおりに作っているはずなのですが、うまく動作してくれないのです。
通常の動作もそうなのですが、エラー処理も全くうまくいっておらず、もう一回最初からコードを見直す必要があるのかもしれません。
ちなみに、画面自体はなんとか表示されているので、記法の間違いとかではなさそうです。
多分、ユーザーの入力したデータがうまく受け渡せていないのではないのかと思います。
その受け渡しの部分の処理が思ったように行っていないと。
こうなってくるとただの写経のようなコーディングではなくて、1個1個関数の意味をもう一度確認しながら進めていく必要がありそうです。
当初の予定ではコーディング2周目でこの作業をする予定だったので、それが少し早まった感じですね。
なるべく早めに終わらせて次に移りたかったのですが、仕方がないですね。
つまづいてるのはここ
今のところつまづいているのはここです。
1.コンタクトフォームの確認画面が表示されない
2.エラーをわざと発生させようとしても発生しない
この2点ですね。
今回はユーザー定義関数なんかも出てきているので、そのあたりに原因がありそうな気がします。
一通りコードは打ち終わっているので、明日はもう一度見直す作業をしていきたいと思います。
今日はここまで。ではー。
コンタクトフォームに着手し始めました
こんにちは。しゅーのーです。
土曜日ということで勉強をできる限り進めたいと思っていましたが、エラーとの戦いでなかなか進みませんでした。
php学習の参考書はこちら。
一気に高度化した内容
「コンタクトフォームを作ろう」の章の始めは、どちらかと言うと読みものという感じでした。
内容としては、HTML部分とphpプログラム部分を分けることができる、というものです。
これがなかなか難しいです。
いや、言っていることは分かるんですよ。
HTMLを書く人とphpを書く人が別々に作業ができれば、当然効率も上がりますしね。
参考書の中では「見通しがよくなる」とも書いてあります。
でもその分、phpの中身が複雑化していくんですよね。
1個のファイルがあれやこれやと繋がっていったりするもんだから、間違えると全部に影響してくるわけですよ。
まぁ1個うまく作れればいいと考えることもできなくはないので、これはこれでいい仕組みなんだと思います。
結局は慣れになってしまうような気がします。
自分で関数を作る
これまでは主に内部関数を使っていましたが、この関数を自作できるようです。
この関数の作り方というのが、難しかったですね。
まず言葉の意味をしっかり理解していないといけないです。
引数とか、返り値だとか。
これが分かっていないと、作っているものの意味が全くわからなくなってしまいます。
というより、分からないです。
今現在、参考書には例として1個だけしか載っていないので、これから出てくるもので理解を深めていこうと思います。
今日の収穫
今日はコンタクトフォーム作成の下準備ができた、という感じでしょうか。
前回のアンケートフォームのときもそうでしたが、例外の処理をどうするのか、という部分にかなりの時間をかけています。
大切なことですが、動作テストの段階で画面が真っ白になると、こっちも頭が真っ白です。
落ち着いて、参考書とどこが違うのかを確認しながら作業をしています。
まだコードを書き始めたのは1回目なので、くじけずに続けて行こうと思います。
今日はここまで。ではー。
アンケートフォームが完成しました!
こんにちは。しゅーのーです。
今日は参考書に載っているアンケートフォームを完成させました。
今日の収穫
昨日まででユーザーが入力した値を取得する部分ができていました。
今日はその値をファイルに保存するための処理をコードで書いていました。
アンケート結果の記録までのみちのり
アンケート結果をファイルに記録するまでの道が、結構長かったように思います。
- まずは保存するファイルの位置を選択します(今回はtxt形式で保存)。
- 次にファイルが存在するかのチェックを行い、エラーがあれば警告を出します。
- ファイルが同時に操作されると破損する恐れがあるので、それを回避します。
- ファイルの要素を1行ずつ取り出して、配列にしまっていきます。
- 入力されたデータを配列に加算していきます。
今文章にすると、「あれ?これだけ?」って感じなんですが、実際にコードにしていくと結構長く感じました。
今回のコードは関数の学習がメインだったようです。
fopen()、flock()、feof()については、これからも使いそうなのでphpのマニュアルを見ながら感覚を確かめていました。
マニュアルが難しい
参考書には「関数は覚える必要はなく、その時々でマニュアルを見ましょう」のようなことが書いてあるのですが、このマニュアルが難しいです。
文章的にもそうなんですが、カタカナが異常に多くて分かりづらい。
これはIT関係なので仕方のないことなのかもしれません。
まぁ、結局は慣れなような気がしますが。
今回feof()関数が何者なのか調べるため、マニュアルを見ていました。
そのほかのfopenは「あぁ、ファイルを開けるんだな(ファイルオープン?)」とか、flock ()関数は「ファイルをロックするんだな」って分かるんですけど、feof()関数は意味不明でした。
マニュアル曰く「ファイルポインタがファイル終端に達しているかどうか調べる」とのことなので、もしかしたら「エンド・オブ・ファイル」のことなのかもしれません。
違うかもしれませんが、そんな感じで捉えておけば今後でてきた時でも大丈夫でしょうきっと。
次はコンタクトフォーム
次回からコンタクトフォームを作ることになります。
一回読んでおいてるので少しは覚えてるかなとも思いましたが、もう半分くらい忘れています。
読みながら思い出せればいいなと思ってます。
今日はここまで。ではー。