SQLについて通して読んでみました
こんにちは。しゅーのーです。
近頃はカルロス・ゴーン氏に不正発覚とかで、目玉が飛び出そうな額の話題がテレビやネットで見受けられます。
稼いでもいいけど、不正はあかんよね。
というわけで、今日もプログラミングのお勉強。
今日はデータベースついてでした。参考書はこちら。
今日の収穫
今日はコードを書くというよりは、とりあえず参考書を通読することになりました。
この参考書は
1時間くらいでサーっと読んでみましたが、結構おもしろく読めました。
全体的にポップな感じになっていますが、基本的なことは充分できそうです。
ぼくが作ろうとしているWebアプリでも、この参考書はかなり役に立ちそうです。
いつの間にか使っていたデータベース
データベースってなんだか難しそうな感じがしましたが、仕事でちょっとだけ触れていたことに気がつきました。
使っていたのは「Microsoft Access」です。会社支給のパソコンにプリインストールされていました。
社内システムでデータを取り出して作業をすることが多いときがあったのですが、データが複数のExcelファイルになっていたりしたので困っていました。
「あっちの表にあるのと、こっちの表にあるのをくっつけられたらいいのに」
そんな悩みを解決してくれるのがAccessでした。
具体的にはExcelファイルをAccessで取り込んで、クエリでくっつけて新しい表を作ったりしていました。
AccessはSQLを「視覚的」に分かりやすくしたものです。
SQLの言語を知らないぼくでも、マウスとキーボードがあれば操作ができました。
SQL自体はほぼ英語
SQLも一応は「プログラミング言語」の位置付けであると参考書に書いてあります。
ただ、言語自体は普通の英語だったりするので、使うのは簡単な気がしました。
難しいのは、「データベースをどう設計するか」というところだと思います。
データベース内にはテーブルという表みたいなものがありますが、それが何個必要なのか。
テーブル内の要素はどういったものにしていくのか。
このあたりをアプリケーション作成前に詰めていかないといけません。
行き当たりばったりではダメそうです。
明日からはSQLの勉強をしながら、参考書の練習問題をしていこうと思います。
今日はここまで。ではー。
ログインフォーム(練習問題)ができました!
こんにちは。しゅーのーです。
今日も参考書『PHP入門講座』を使ってphpでのプログラミングの勉強をしていました。
ログインフォームができた!
今日はコンタクトフォームを応用した「ログインフォーム」を作るという練習問題にチャレンジしていました。
ページの移動はせずに、ユーザー名、パスワードを入力したときにメッセージを返すことになります。
まずは体裁を整える
phpでのプログラミングの前に、ユーザーに入力してもらう部分を作る必要があります。
これはHTMLでの記述になります。
まだHTMLも完全に理解しているわけではないのですが、<form>タグで囲った中で<input>のtypeをいじってテキストボックスにしたり、methodをpostにしたりして準備をします。
この辺はコンタクトフォームのものを流用して作ってしまいました。
ユーザー名、パスワードを変数で設定
この部分からphpでのプログラミングに入ります。
課題としては「$_SESSION['login']をTRUEにせよ」というものでした。
最初は「何言ってんだおめぇ」って感じで見てたんですが、考えてるうちに色々だんだん分かってきました。
とりあえず$userと$passwordという変数に何かしら入れておいて、ユーザーがpostしてきたものが一致したら「$_SESSION['login'] = TRUE」っていうことを書いてあげればいいわけです。
入力チェックも忘れずに
今回もこれまでの基礎学習と同様に、入力のチェックをしていきます。
テキストボックスに割り振ったname属性がpostされるので、$_POST変数をisset()関数で使ってチェックします。
入力されていれば、あとはif構文を使って$_POST変数とあらかじめ設定したユーザーとパスワードが一致しているかを調べて、一致していれば$_SESSION['login']をTRUEにします。
模範解答はかなりすっきり
こんな感じでウンウン考えながら、なんとか動作するプログラムが書けました。
その後に模範解答を見たら、すごくすっきりしたコードで書かれていたので驚きました。
自分で書いたコードでも動作しますが、当然のごとく模範解答のほうがいいコードだったので、自分で書いたものを少し改良してみたりして、理解を深めました。
「確かにこうしたほうがいいな」と思う部分もあったりしたので、それも盛り込みながらのコーディングになりました。
達成感
今回の練習問題は、解けたということもあってか、とてもすっきりした達成感がありました。
今使っている参考書は、ひとまずこれで終わりにします。
次は下のものを使ってphpとSQLの連携を勉強をしていこうと思います。
SQLだけやっているとphpを忘れそうなので、phpにも少し時間を割きながらSQLメインで勉強していきます。
明日は通読するだけになりそうな気もします。
今日はここまで。ではー。
練習問題が出来そう、でも出来ない
こんにちは。しゅーのーです。
今日もこちらの参考書でphpの勉強を進めました。
ドキュメントがやや読めるように
最近は仕事のお昼の休憩時間中にもphpに触れるようにしています。
この間まではCodeIgniterのチュートリアルだったわけですが、一旦断念したので、php.net、つまりphpの大元の方のドキュメントを読むことにしました。
このとき、自分の中でハッとしたことがあったのでtwitterに投稿しました。
https://t.co/6ZBxZW4p2bのドキュメント、最初は意味不明だったけど、少しずつ読めるようになってきた感じあるある。#php #プログラミング
— 30歳からWebエンジニア転職を目指す (@jobchangeit1) 2018年11月20日
そう、最初はドキュメントの内容はさーっぱり頭に入って来なかったのですが、結構読めるようになってきました。
これも勉強の成果かもしれません。まだわからない部分もあったりはしますが。
このことで少し自分の中で自信がついたりしてました。
コンタクトフォームは問題なく作成完了
前回はコンタクトフォームを作るために、とても時間がかかりました。
しかも内容のチェックのために書いてあるコードの意味も、あまり理解できていませんでした。
今回はかなりスムーズに完成まで持っていくことができました。
さらにセッションやクッキー、トークンというものの使い方もより深く理解できたように思います。
この辺りはセキュリティで重要になってくると思うので、しっかり押さえておこうと思います。
練習問題で苦戦
例によって、コンタクトフォームを作る章でも、最後に練習問題がついています。
これがなかなか難しいような気がします。
具体的には「ログインフォーム」を作ることになるんですね。
コンタクトフォームと大体の原理は一緒なはずです。
ユーザーが入力した内容と、phpで発行したID、パスワードが一致しているかを確認する。
これだけのはずなんですが、どこから手をつけたものやら。
考える時間も必要かなと思いますので、また明日チャレンジしたいと思います。
データベースの学習も必要?
Webアプリを作る上で、やっぱりデータベースを作る必要があるな、と感じました。
というわけで、以下の参考書を買いました。
多分、今やっていることと重複している部分もあると思うので、練習問題が終わったら、データベース部分に着手していきます。
データベースは仕事でMicrosoft Accessを使う機会があるので、何となく分かるような気もします。
ただ、Accessはかなり視覚的に分かりやすくなっているので、ちょっと勝手が違うような。
とりあえずやってみようと思います。
今日はここまで。ではー。
2回目のコンタクトフォーム作り
こんにちは。しゅーのーです。
今日は朝に寝坊する事件がありましたが元気です。
夕方〜夜はphpのお勉強。参考書は例によって下のもの。
コンタクトフォーム(2回目)
参考書の復習ということで、前回は相当苦戦したコンタクトフォーム作りをしています。
今回は2回目ということもあり、アンケートフォーム同様、かなりスムーズに作ることができています。
試運転でエラーがちょこちょこ出たりしていますが、全く解決できないようなエラーは発生していません。
できるものがもう分かっているから、と言えばそれっきりなんですけど、これも1つの成長の証なのかな、と思っています。
今日の収穫・・・?
と言うわけで、今日の収穫は特にありませんでした。
実はコンタクトフォームはユーザーが自由に記述できる欄が付いているために、ユーザーからの入力チェックだとか、攻撃対策にかなりの時間がかかります。
今日は入力チェックの部分の記述までで時間がきてしまいました。
入力チェック
入力チェックで何をするのか。
今回のコンタクトフォームでは「名前」、「メールアドレス」、「件名」、「本文」を入力することになっています。
名前、件名、本文は入力されているか、というチェックくらいで済むんですが、メールアドレスは少し複雑になります。
入力されているかの他に、「メールアドレスとしての形式に沿っているか」を確認する必要があります。
具体的に言うと「example@gmail.com」みたいな感じですね。
これには「正規表現」という手法(っていうでしょうか?)を用いてチェックすることになります。
メールアドレスの場合だと、「@より前の文字は何が入るか」、「@があるか」、「gmail.com」のような形になっているか、というのを正規表現で記述してあげます。
今回はメールアドレスがサンプルになっていますが、電話番号や郵便番号にも応用が可能なようです。
記述の方法がかなり特殊で難しいですが、覚えるというよりは、都度確認しながら組んでいく方がよさそうですね。
覚えるのが一番でしょうけど、今はとりあえずphpのことを頑張ることにします。
明日はコンタクトフォームをもう一度完成させて、練習問題にトライする予定です。
今日はここまで。ではー。
練習問題でつまづきながら
こんにちは。しゅーのーです。
今日は日曜日ということで、文字通り日曜大工をしていました。屋内で。
もちろんphpの勉強もしました。参考書は下記のとおり。
復習をすることに
前回までCodeIgniterと戦っていたわけなんですが、自分の力量が全然足りていないことが分かったので、もう一度参考書の最初からやり直すことにしました。
最初からやり直す予定はしていたのですが、とりあえず参考書が全部終わってからかな、と思っていました。
しかし、このままエラー画面を見ているままでは、時間が無駄に過ぎていくだけです。
思い切って予定を繰り上げて、最初から復習することにしました。
2回目なのでスムーズ
参考書に書いてあるコードを写していくのは、今回で2回目になります。
前回はけっこう時間がかかったのですが、さすがに1回やったことなのでスムーズに進みました。
今度は解説もちゃんと理解しながら進めていきます。
コードについてもただ写すだけではなくて、こう書けばよさそうだな、というポイントを押さえながら書いていきました。
練習問題に苦戦
この参考書には章が終わるごとに練習問題がついているのですが、1回目はこれをすっ飛ばしていました。
理由としては、まずは本に書いてある内容を全部通しで進めたかったからです(結局できなかったんですが)。
今回は練習問題にもとりくんでいきます。
練習問題なので、自分でコードを考えて、結果を出すわけです。
今日やったものは、1問目でいきなりつまづいてしまいました。
やりたいことは分かるのに、コードの書き方が分かりませんでした。
具体的に言うと、「繰り返しの処理でファイルに書き込みをする」という処理です。
自分なりに考えて、ああでもないこうでもないと、書いていたのですが、できませんでした。
結局、解答を見るはめに。できれば見たくはなかったのですが。
見てみたら、なんてことはない答えでした。
for構文で書いていくだけだったのですね。
目から鱗
ぼくが一番「うおっ」と思ったのは「for構文には必ずしもカウンターを入れなくていい」ということですね。
大体の基礎的なところだとこんな感じで書いてあるじゃないか。
for ($num = 0; $num <= 4; $num++) {
echo $num;
}
ぼくの頭の中の先入観として「for構文の中には必ずカウンターがある(今回は$num)。」が根強くありました。
これ、カウンターを裏で使うことも当然できるんですね。
for ($num = 0; $num <= 12; $num++) {
fwrite($fp, 0 . "\n");
}
これが今回の答えだったんですが、こうすることで「0」を13回、改行しながらかきこんでくれます。
あぁ、{}の中にカウンターがない。
処理の回数だけ数えててくれれば、それでいいんですね。
明日は苦戦したコンタクトフォーム
明日は1回目でエラーが多発した、「コンタクトフォーム」の復習をしようと思います。
今回はスムーズにいけばいいんだけど。
今日はここまで。ではー。
やっぱり基礎を固めないと?
こんにちは。しゅーのーです。
今日は土曜日ということで、phpの勉強をたっぷりできるな、と思っていました。
結局、エラーにより参考書と画面を目で往復するだけになってしまった感じはあります。
参考書はこちら。
参考書の応用部分は後回し
結論として、「Webアプリケーション部分はどこがエラーになっているか分からないので無理」ということになりました。
phpも始めたばかりですし、それを応用したフレームワークのCodeIgniterを使って書くコードは、構造が全く理解できませんでした。
以前から書いているとおり、バージョンの違いにより、色々書き直さないといけない部分が多いため、今のぼくの実力では無理だと思います。
CodeIgniterのチュートリアルをやってみた
じゃあ、まずはCodeIgniterの基礎をやってみよう、ということでチュートリアルを始めてみました。
これなら何とか理解できるんじゃないかという希望を持っていました。
今日は「静的なページ」の部分だけができました。
これなら簡単でした。モデルとコントローラーとビューの関係も分かりやすかったです。
書かれているとおり、しっかり動作しました。
次の「ニュースセクション」というものは問題がありました。
やはりエラーが出てしまって、先に進めなくなってしまいました。
しかもこれまでに見たことのない、新しいエラーで意味がわかりません。
ちなみにこんなやつです。
うーん、ちゃんとチュートリアルに書いてあるとおりだったんだけどなー。
まだモデルが呼び出してくるデータベースに何も入っていないからなんでしょうか。
でも何もなかったときの条件分岐もしてあるみたいだし、やっぱり分からない。
もう少し見直してみることに
チュートリアルもお手上げ、ということであれば、もう一度参考書に戻る必要があるのだと思います。
結局のところ、基礎的な部分でもう少しスキルアップしないと、構造も意味も理解ができないと思うからです。
参考書は3周目になりますので、今度は練習問題にもトライしていこうと思っています。
練習問題は難しい内容だったので、飛ばしていたのでした。
ちょっと参考書の変更も考えていかなければならないような気もして来ましたが、とりあえずそれは後日。
今日はここまで。ではー。
ぐるめMAPづくり(検索画面)のコードが打ち終わったけど・・・?
こんにちは。しゅーのーです。
今日は金曜日ということで、さっさと家に帰ってきてphpの勉強をしていました。
参考書はこちら。
検索画面のコードが打ち終わったけど・・・?
今日でなんとかサンプルである「ぐるめMAP」の検索画面のコードが書き終わりました。
長かったですね。アプリケーションを作るのって大変だ。
まだ1ページしかできてないし、設計図はぼくじゃなくて、本の著者が書いたものをなぞっただけですからね。
これを1人でやると考えると、、、ちょっと怖いですね。
さて、コードは打ち終わったのですが、困ったことにエラーを吐いてしまっている状態です。
今日はエラーがいっぱい表示された日でした。
Page Not Foundからsyntax errorまで、まーそれはそれは心が折れるほどエラーが出てくれました。
中途半端
結局、今日は検索画面の完成を見ることがなく終わりました。
がっかりです。
でもエラー画面で何行目が間違ってるかが書かれているので、その辺りを見ながらなんとか修正していこうと思います。
それでもできなかったら、とりあえず「日本CodeIgniterユーザ会」のチュートリアルに移行することにしようかと思ってます。
、、、それとも参考書の最初の方をもう一周するか。
参考書には練習問題がついているのですが、それは3周目でやるつもりでした。
しかし、CodeIgniterがこれだけ動いてくれないとなると、もう少しphpの基礎的な能力を上げてからトライした方がいいような気がして来ました。
「初心者こそフレームワークを」って書いてありましたが、CodeIgniterのページには中級者なら数日で理解できるはず、との記載が。
初心者がどうこうできるレベルの問題ではないのかもしれません。・
まずはやってみる
弱音ばかり吐いてもいられないので、明日はとにかくコードの打ち間違えが本当にないのかを確認するところから始めようと思います。
これまでの傾向からすると、結構ケアレスミスが多いので、そこのあたりを重点的に見ていこうと思います。
今日はここまで。ではー。