どんな記事?
プログラミング初心者が、イチからSNSサイトを構築する過程を記録したもの。
誰かに「勉強の状況はどう?」と訊かれたときに提示できるよう、Qiitaの記事として投稿しています。
前置きや前提
完成品のイメージ
- コンセプトは「勉強記録をポストしたり、問題を出しあったりできるSNS」
- 自分の勉強記録をポストし、閲覧できる
- 友人の勉強記録に対し、コメントやミニクイズを投稿できる
- 自分と似た目標を持つユーザーを検索し、フォローできる
- フォローしている人の勉強記録を一覧表示する「タイムライン」もある
- 当然レスポンシブデザイン(本記事では未実装)
制作の目的
- プログラミング技術の向上
- あわよくば友人にこのSNSを使ってもらいたい
これまでの経験や知識
- WordPressで構築されたサイトの調整経験
(2年弱従事していたため、HTML・CSS・PHPとも基礎はわかっていたつもり)
(通信をはじめバックグラウンドの知識はゼロ) - 大昔にイチからサイトを構築した経験
(HTMLしか使用していない化石のようなサイトのみ) - JavaScriptとSQL:1年ほど前にProgateで一応学んだだけで、ほぼ忘却
- DBの知識:応用情報技術者の合格ラインにギリギリ触れられる程度
先週まで
今週の日記
10日目(6月6日)
- 「勉強記録」画面の入力項目を減らし、簡略化
- 「勉強画面」に編集機能を実装
11日目(6月7日)
- 「勉強画面」にデータ削除の機能を実装
- 「友達検索機能」の実装(未完成)
【ハマったドツボ】
ユーザーの入力情報に当てはまるデータをselect
する機能を作成
→結果がnullにしかならない
→途中で生成している変数をすべてecho
(配列ならvar_dump()
してから)
→異常はなさそう……。ここで2時間くらい悩んで、結局寝る
→起きたら気づいた。「そもそも当てはまるデータがテーブルにない!」
12日目(6月8日)
- 「友達検索機能」の実装(完成)
- 「フォロー機能」の実装
- 「タイムライン機能」の実装
【悔しい点】
SQLのJOIN
を使えばスマートに実装できそうな場所があったが、
どうにもうまくできず、結局スマートでない方法で実装してしまった……。
DBにアクセスする回数が増えてしまい、低速化につながっているはず。
13日目(6月9日)
- 「勉強記録」に画像をCRUDする機能
14日目(6月10日)
- 「コメント」のうち、CRUDのRだけ
- 共通部分としてまとめられる箇所を発見したため、一部を共通部品化
(設計段階でそこを見抜けという話ではある)
15日目(6月11日)
- 「コメント」のうち、CRUDのCRおよびD(ただしDはバグ発生中)
- 「勉強記録」や「コメント」をREADする権限の調整
- 共通部分を部品化(昨日よりさらにコードの可読性がアップした)
16日目(6月12日)
- 残ったバグ潰し
【得た教訓】
PHPベースでコードを組んでいるのだから、無理にJSを使おうとしない。
可能ならば言語は統一したほうが良さそう。 - コメント機能の完成
来週以降実装したいこと
- 「勉強記録」の「詳細」にもURLがある場合、自動でリンク化
- 変更前の画像データの自動削除機能(プロフィール画像のみ初週に実装済)
- GET通信でデータをやりとりしていた部分をPOSTに→セキュリティの改善
- レスポンシブデザイン化
- よりセキュアに、より高速に
- 全体的なデザインのブラッシュアップ
- androidアプリ化
- ファイル名や変数名のルールを明確にし、脱スパゲッティ化