妊娠/出産を経て独学から個人でプロダクトを作るまでにやったこと

この度、[iitoko](https://iitoko.online/)という、地方移住のマッチングサイトを開発しました。
（どうしてこのサイトを作ろうと思ったのか、どんなサイトになっているのか、ということはまた別の機会に書こうと思います。）

今回は、独学からこのサイトを開発するに至るまで、
どんな風に勉強してきたのかを備忘録として残しておこうと思います。

#ざっくり系譜
|  | 出来事と勉強法 |
|:-|:-|
|2019.４〜| お腹に長女を授かる|
||Progate・ドットインストールで色々とやってみる→日本語のドキュメントが豊富ということでRubyを勉強することにする|
|2019.10〜|産休に入ったことで勉強に本腰。Rubyをチェリー本で勉強。|
|2019.11|出産　〜3ヶ月間は産後の回復と育児で精一杯（チェリー本終わらず）|
|2020.02〜04|少しリズムが掴めてきたので、勉強再開。記憶がなくなったので再びprogate(ruby)から。アプリ版終わったあとWeb版でもう一周。その後チェリー本再開 ~4月にかけて２周やった。|
|2020.04~05|progateでrailsの勉強を始める。|
|2020.06~07|Railsチュートリアルを始める。およそ1ヶ月で１２章までやったところでトラブルにより、うっかり２周目を始めることに。|
|2020.08~09|Railsチュートリアル２周目は2週間くらいかかって走破。走破後はRailsチュートリアルにお気に入り機能と返信機能をつけたり|
|2020.09~10|Railsチュートリアルの拡張機能に挑戦してたけど、娘が10ヶ月をになった辺りで夜泣きがスタート、日中もパワフルに。これまで溜まっていた育児疲れがピークになり、勉強速度がアリンコ並に。|
|2020.11|娘も一歳を迎え、保育園の申し込みも完了。改めて勉強に気合いを入れる。オリジナルアプリのサイト設計（サイトマップ、要件定義、ワイヤーフレーム、ER図の作成）を始める。|
|2020.12|Docker使って環境構築しようとしてたので、Dockerの勉強を始める。サイト設計も引き続きブラッシュアップしたり。|
|2021.01|引き続きDocker(windows)で環境構築を試みる。平日はキタミ式の基本情報技術者の参考書で情報技術の基本を勉強。|
|2021.02|windowsでdockerもうダメだ>< と思って買ったのがうっかり M1 Mac...引き続き苦戦。サーバーはAWSで立てたかったので、AWSの勉強も始める。保育園決定。|
|2021.03|もう一個作りたいWebアプリを思いついてしまったので、そっちの設計を始める。それにあたり、論理設計を勉強。|
|2021.04|結局元々設計を進めてたアプリに戻ってきて開発をスタートする。DockerはM1用の正式版がまだだったので諦めた。EverydayRailsでRspecの勉強とRailsチュートリアルの復習をしつつ、開発を進める。娘保育園入園。職場に復帰。 |

振り返るとめっちゃ迷走してたり、遠回りな部分が多々ありますね・・！

#やったこと
## Ruby/Ruby on Rails
Ruby→Railsの順に。
* [Progate](https://prog-8.com/) でRuby、その後[チェリー本](https://www.amazon.co.jp/dp/B077Q8BXHC/ref=cm_sw_r_tw_dp_THPQKM8RFQS2BYDZK64T)でRubyについての理解を定着させた後に、
* ProgateでRails、その後[Railsチュートリアル](https://railstutorial.jp/)。
* Railsでわからないこと、疑問点は基本[Railsガイド](https://railsguides.jp/)を読み漁る。
* [パーフェクトRuby on Rails](https://www.amazon.co.jp/dp/4297114623/ref=cm_sw_r_tw_dp_2GP6315CFW2WBH9ME34Y)も開発を進めつつ、ヒントをもらおうとちょこちょこみたり。
* Rspecは[Everyday Rails](https://leanpub.com/everydayrailsrspec-jp)で勉強。

勉強したことは、（紙の）ノートにまとめたり、twitterで140文字以内にまとめてみたり、
Qiitaの記事にまとめてみたり。
1周目はとにかく内容を理解するためにじっくりと。
2周目は理解の確認、理解に穴があったらちゃんと埋めることを意識して進める。

##Docker
* 主にYouTube（[Docker超入門](https://www.youtube.com/watch?v=DNnW4I43wyU)）
* [プログラマのためのDocker教科書](https://www.amazon.co.jp/dp/4798153222/ref=cm_sw_r_tw_dp_0DWHAFZYNYFMXDGY9WVQ)（サラッと読んだりつまづいたときに該当してそうなページを読んだ程度・・ 

##AWS
* Udemyの講座（[AWS：ゼロから実践するAmazon Web Services。手を動かしながらインフラの基礎を習得](https://www.udemy.com/course/aws-and-infra/)）
* YouTube

##サイト設計
* MENTAでメンターさんが一般公開されていた講座用の資料を参考に。
* 自分でサイト設計してみて、MENTAを使ってスポットで何人かにフィードバックやアドバイスをもらいました。

##論理設計
* Udemyの講座（[はじめてのテーブル設計・データベース設計【わかりやすい解説 + 身近なテーマでレッスン】](https://www.udemy.com/course/hajimete-ronrisekkei/)）

##基本情報
* [キタミ式基本情報技術者](https://www.amazon.co.jp/dp/4297117819/ref=cm_sw_r_tw_dp_4TZ4CYWZ819D3WXQEMZK)

##エラーなどが起きた時
* エラー文を解読
* →解決しなかったらエラー分でググる
* →一旦Railsガイドなどと共に再度コードを見返す（質問する前の下準備として）
* →解決しなかったら[teratail](https://teratail.com/)やQiitaで質問を投稿

#時間の確保方法
##産休中
出産前、産休中はフルで時間使える！と思いきや、産休に入るタイミング＝出産が間近に迫るタイミングだったので、心理的に不安定になったり出産準備だったり、そわそわしてあまり進められなかったです。今思えば産まれる前の時間でガーって進めておきたかったけど仕方ない。

## 出産後育休中
とにかく娘の昼寝のタイミングで、寝るや否やパソコンを開いてました。
布団に置くと起きちゃうから抱っこしながら片手でコード書いたことも。
Progateはアプリがあったので、育児しながらでも手軽にできた点はすごく良かった。

本当は夜の授乳で全然寝れてないからこの時間は自分も昼寝したほうが良いので、
正直、「産休中（育休中）にスキルアップ！」は個人的にはおすすめできる方法ではないです。

土日は夫さんと１時間交代で育児をしてたので、半日は勉強時間を確保してました。
途中からは家事も夫さんにお願いしたり、かなり家族に協力してもらってます。

##復職後
保育園の送りは夫さんにお願いして、
自分は娘にいってらっしゃいしてから始業までの時間（１時間ほど）で勉強。
その他に、早起きしたり寝る前に時間を確保したりして、平日でも最低３時間は確保。
土日は引き続き交代で育児⇆勉強をしてましたが、途中から日中はほぼフルでみてもらって自分は勉強/開発をさせてもらってました。


#まとめ
今回作ったiitokoはずっと自分の頭の中にあったサービスで、割と本気で運営したい、と思っている物だったので、
設計やら、要件定義やら、割と本格的に進めていくことを意識しました。
試行錯誤したり、迷走したり、遠回りしたりしましたが、
その過程で色々勉強できたので、無駄ではなかったなと思っています。
iitokoの本格的な運用はこれからですし、つけたい機能もたくさんありますし、
ファットコントローラーですし、リファクタリングしなきゃいけない部分がたくさん残っていたり、
勉強しなきゃいけないことは盛り沢山ですが、一旦区切りとしてまとめてみました。

もっとこうすべきだった、とか、
こんなやり方がある、とか、
これも勉強したほうがいい、とか、
ありましたらアドバイスいただけますと幸いです。