文系出身でも・未経験でも・プロのプログラマーを目指すブログ

ウェブカツ‼︎でのプログラミング学習進捗を報告します

メモをとる勉強法を取り入れてみた

 

 こんにちは。

文系出身でも・未経験でも・プロのプログラマーを目指すブログ

略して「プロプロ」

あんまん(@aaii0123)です。

 

昨日は、誕生日だったのですが、

ドイツ在中の友人が夜に電話をくれて盛り上がってしまい

気づいたら夜中の1時でした・・

 

そのため、昨日の学習報告をササットまとめます。

 

昨日取り組んだこと

・ユーザー登録機能実装(途中)

自作サービスの方もいよいよ機能の実装に入り

手始めにユーザー登録機能から着手しました。

 

昨日、ウェブカツのコードを写経した部分ですね。

昨日写経した内容を思い出しながら自力でコードを書く練習をしました。

 

取り入れてみた勉強方法

ここで、昨日から新しい勉強法を取り入れてみることにしました。

題して、

実装の流れを文章化する勉強法!!

 

・・いや、まぁそのままなんですけどw

 

いざ、ユーザー登録機能を実装するコードを書こうとしても

いきなりすぎてコードを思い出す糸口が何にもない状態だということに気がつきました。

 

そこで、まずユーザー登録機能の実装の流れをメモで書き出してみて、

そのメモをみながら順番にコードを書いてみることにしたのです。

 

そのメモがこんな感じ。

 

ユーザー登録機能実装の流れ

 

ログを取る指定

エラーメッセージの指定

エラーメッセージ格納用の配列

関数

 バリデーション

  未入力

  Email形式チェック

  Email 重複チェック

   データベースに接続する 

    データベース接続関数を呼び出す

    SQL文作成

    クエリ作成

    クエリ実行

    クエリ結果の値を取得

  同値チェック

  最小文字数チェック

  最大文字数チェック

  半角チェック

 DB接続関数

  DBに接続する準備

  オプションを配列形式で指定する

  PDOオブジェクトを生成してそのオブシェクトを返す

 クエリーポスト関数

POST送信されているか

 POST送信されていれば変数にユーザー情報を代入

 未入力チェック 

DB接続

レコード挿入

マイページへ遷移

こんな感じで最初にできるだけ細かく実装の流れを書き出してみました。

そのうえで、Bracketsの並列表示機能で正解のコードを横に並べた状態で

メモをみながらなるべく正解コードをみないようにしつつコードを書き

詰まったら、サッと目線を滑らせて正解コードを確認して

詰まった部分をさらにメモに加えるということをしてみました。

 

まだ実装自体が途中なので、最後までいってませんが

メモを追加したのがこちらです。(赤字が追加した部分)

 

ユーザー登録機能実装の流れ

 

ログを取る指定

エラーメッセージの指定(define(定数)で指定)

エラーメッセージ格納用の配列

関数

 バリデーション

  未入力

  Email形式チェック

  Email 重複チェック

   $emailキーを入れる

   データベースに接続する (try catch)

    データベース接続関数を呼び出す

    SQL文作成

    クエリ作成

        SQLプレースホルダに情報を流し込む

    クエリ実行

    クエリ結果の値を取得

    (実行したクエリからfetchメソッドを使って取り出す

      $result = $stmt->fetch(PDO::FETCH_ASSOC)

  同値チェック

  最小文字数チェック

         mb_strlen関数を使って$strの文字数をカウントする

  最大文字数チェック

  半角チェック

 DB接続関数

  DBに接続する準備

  DB(’mysql:dbname=〇〇;host=localhost;charset=utf8’)、DBのユーザー名、

   DBのパスワードを指定)

  オプションを配列形式で指定する

  PDOオブジェクトを生成してそのオブシェクトを返す

 クエリーポスト関数

POST送信されているか

 POST送信されていれば変数にユーザー情報を代入

 未入力チェック

エラーメッセージが空であればバリデーションチェック

 Email・パスワードに対してそれぞれ

DB接続

レコード挿入

マイページへ遷移

 

後から見返すとどこが途中で書き加えたメモなのか記憶が曖昧になってしまってますが

こんな感じで、実装しながら自分の理解が足りてない部分を洗い出していく感覚で進めました。

 

新しい勉強法の感触

まだ、始めたばかりですがこれはなかなかいい勉強法なのではないかと思っています。

 

まだまっさらな状態からコードを書くのはさすがにきついし、

しかも、自分でも何がわかっていて、何が曖昧なのかもはっきり把握できていない。

 

そんな感じなので、文章に書き起こしてみてわからなかった部分を書き足していくのは

頭を整理することや記憶の定着にも繋がる予感がします。

 

ユーザー登録機能は、最初にコードを写経してからこの作業に移りましたが

次の機能からは写経の段階でメモ書きして

実装はいよいよ自力でやってみる、という流れに変えようと思います!

 

ググったこと、学んだこと

昨日、ググったり、色々試してみて新しく学んだことを

まとめます。

ググったこと

fetch(PDO::FETCH_ASSOC)

 PDOクラスのfetchメソッドを実行し、引数のPDO::FETCH_ASSOCによって、

 列名を記述して配列で取り出す設定をしている。

    fetch:取り出す。Assoc:Associationで、連想する(=連想配列で情報を取り出す)

PDOについて

 アプリケーションとDBMS(データベース管理システム)の間に入ってDBMSの違い

 を意識せずにアプリケーションを作成するもの。

 つまり、色んなデータベースがあるけど、同じ様に書いても全部のデータベースに対

 応できるようにしてくれる

 参考 URL:PDOで接続、SELECT、プリペアドステートメントとは(PHPでMySQLに接続) - Qiita

PDOオブジェクトのプリペアードメソッド

  prepareメソッドはプリペアドステートメントと呼ばれるものを利用するための関 

 数。

 プリペアードステートメントとは、SQL文を最初に用意し、その後はクエリ内のパラ

 メータの値だけを変更してクエリを実行できるようにする機能。

 参考URL:PDO prepare プリペアドステートメントの使い方 | PHP入門~bituse~

学んだこと

・Git Hubのプッシュについて

 新しくgit init でファイルを作った場合は

 「.git/config」の[remote "origin”]URLパスを指定してからプッシュする。

 (そうしないとエラーが出る)

まとめ

今まであまりメモを活用していなかったのですが、

ブログを始めてから何かとメモで残すようになり

結果的に勉強にもプラスになっていることを感じます!

 

メモのとりかた自体もまだ下手くそですが、継続することで

自分でももっといいやり方が思いつくようになると信じて

引き続き、ブログの更新とともに頑張ります!!