初学者チームがWebサービス開発を始めて４週間で出来たことと出来なかったこと

２週間前にアップした「[初学者チームがWebサービス開発を始めて最初の２週間でやったことを振り返り、そして次を考える](https://qiita.com/kakudaisuke/items/8a3f9e9d9ed2630e7e4f)」という記事から、また２週間経ったので、どこまで進捗したのかまとめたいと思います。

「初心者だけど何かモノを作ってみたい！」という方の参考になれば幸いです。

#目標達成度
２週間前掲げていた目標と、実際できたことを整理します。
こちらが２週間前の記事では言っていたこと。

>というわけで、次なる目標ですが、深い意味は特になく、なんとなくまた２週間先（9/21月曜）にチェックポイントを置きたいと思います。
目標は、9/21Monまでに人にURLをばら撒けるレベルのサイトにしたい！です。
具体的には、下記８点の要件を満たしたいです。

その８点と結果がこちら。

| 2週間前掲げた目標 | 達成度　10点満点|コメント|
|:-----------|------------:|:-----------|
|Heroku上でアプリが機能する| 8|２週間前はHerokuにデプロイしたてでエラーもしばしば。今は表示は安定、基本動作も問題なし。|
|ページ内のリンクなど、ページがきちんと遷移する| 5|まだ作れてないページがあったり、戻るボタン、キャンセルボタンなどが欠けています。|
|シンプルだが見るに耐えうるデザインであり全ページに統一感がある| 3|フロントチームは頑張って作ってくれたのですが、サーバーサイドがそこまで手が回りませんでした。|
|投稿が新着順で表示でき、１ページの投稿は10件まで、それ以上は別ページとする|9|今では[ペジネーション](https://qiita.com/kakudaisuke/items/d6f155f4f2ea0c25e1a8)という専門用語も覚えました！でもデザイン配置のカスタマイズができてないので-1。|
|投稿がキーワード検索できる|0|全く手をつけてませんでした涙|
|アカウント登録した人がログイン、ログアウト、投稿、削除、編集できる|9|Laravelデフォルトのユーザ認証機能も利用しつつ、自分らのデザインを当て込むこともできてきました。|
|ゲストでも投稿できる|10|できました。|
|Contactページから問い合わせすると運営にメールが届く|5|今日滑り込みでメールを受信するまでの基礎機能の実装はできました。|
|**総合得点**|**49/80**|**達成度61%**|
60点ならまずまずではないでしょうか！ただ、残念ながらまだ胸を張ってURLを配れるようなレベルはなりませんでした。
そして、ストレッチで掲げていた目標は綺麗に一切手を付けられませんでした(笑)↓

| ストレッチ目標 | 達成度　10点満点|コメント|
|:-----------|------------:|:-----------|
|アカウントがアイコン画像を設定できる|0||
|投稿に画像を１枚添付できる|0||
|ミュージシャンごとの投稿を集約したページが生成できる|0||
|ライブハウスごとの投稿を集約したページが生成できる|0||
|いいね！ができる|0||
|利用規約のページがある|0||
|管理人が不適切な投稿を削除できる|0||
|**総合得点**|**0/70**|達成度0%|

その他にこの２週間でできたこと箇条書き↓

* DBの再設計
* 全ページのHTML/CSS作成完了、ブラッシュアップ（コードの視認性、Font Awesome使用）
* ログイン認証
* [HerokuのアドオンDB（ClearDB MySQL）を設定](https://qiita.com/kakudaisuke/items/782e5982eec4a85ecb70)
* [MySQLの文字コード設定で日本語の文字化け解消](https://qiita.com/kakudaisuke/items/73aa165bc0f0db522f4f)
* [MySQLのタイムゾーン変更](https://qiita.com/kakudaisuke/items/f4b76fbfd7f89992d971)
* 投稿にタグを付ける初期機能実装

#感想３つ
（そういうのいいよって方は飛ばしてください）
###初心者なのにモノを作ってみた感想
人それぞれ勉強方法はあるのかもしれませんが、基礎から教科書をやっていくという勉強方法よりも、実際にモノを作るというこの方法が僕には一番合っていると感じています。めっちゃくちゃ夢中になっています。ただし！１ページめくれば、次の手順を教えてくれるテキスト学習と違って、１歩進むごとに、何をしたらいいのかわからない、どう調べればいいかもわからない、手をつけたらエラーになるの繰り返しです。

上手くいかない時は、焦るし、焦って変なコマンド打ってしまったり、イライラしたり、精神的に安定しないこともありました。一般人は「プログラミングは超絶簡単」「１ヶ月でできるようになる」という有名人の言葉を鵜呑みにしない方がいいです。でも何かちょっと対策を講じてエラー文章が変わり、それで推理が進んで、原因を突き止めて、前に進んだ時の喜びと快感は尋常じゃなかったりします。
###仲間という存在の貴重さ
まこなり社長さんが「プログラミング学習には仲間を作った方がいい」と仰っているのを聞いたことがありますが、僕も同意です。あれは単なるテックキャンプへ誘導する文言ではないと思います(笑)僕の理由は「行き詰まった時、話せる相手がいるのは超助かるから」です。相談する相手も初学者なので、答えがもらえるとは限らないのですが、一緒に調べてくれたり、解決のヒントを与えてくれたりします。自分の思考がクリアになって、話してるうちに閃くということも経験しました。そして何より精神的に落ち着けます。こういうことで悩んでるんだよねーというと、「わかるーー！」と言ってもらえるだけでなんか落ち着けるんですよね。女子の気持ちが少しわかりました(笑)

ただし、初心者のチーム開発はハッキリ言って楽ではありません。でもその大変さを差し引いてもプラスになっていると思います。

あと先輩やメンターの存在も結構大きいです。それらが揃ってる**[YouTube万屋エンジニアチャンネル](https://www.youtube.com/channel/UCHxqQ8bUg5F2GW79D_DvSjQ/videos)**超おすすめっす！

###開発初期にはプログラミング以外の時間が結構かかる
最初の３週間はアプリの企画、設計を考えたり、開発環境を整えたりで手一杯で、コードを書く状態に至りませんでした。（フロントチームはその間HTML/CSSでサイトの見た目を作ってくれていました）ようやく４週間めくらいからプログラムを書けるようになってきて、やっぱりコーディングの方が楽しいなと思いました。


#今後の開発
###次の目標
期限：10/5月曜18:00
下記10点の実装を目指します。

* 継承レイアウトで構築し、サイト全体にデザインの統一感がある
* 投稿の文章が長い場合、全文表示／一部表示の切り替えができる
* ドロップダウンメニュー
* 投稿の際、チップスの効いたタグ付けができる
* 投稿に付いたタグをクリックするとそのタグの投稿一覧を表示できる
* 登録ユーザーの投稿一覧が表示できる
* 検索機能
* いいね機能の実装
* Contactから運営側にメールが届き、問い合わせ内容がわかる
* ユーザーがプロフ画像を設定できる

###開発体制の変更
今まではフロントには一旦別環境でHTML/CSS作りに集中してもらっていたのですが、開発が進んできてそれでは大変になってきそうなので、フロントチームもLaravelを入れてもらってバックエンドと同じ環境下でフロントのブラッシュアップをしてもらうつもりです。