半年600時間-プログラミング学習ブログ!

プログラミング学習中+転職活動中! オリジナルアプリは1つ目を(仮)完成。2つ目を制作中!

プログラミング学習ブログ#12 *18週目:30時間

#今週の一番

"続・仕事をやりつつ30時間学習!"

#6月2週目の学習記録

#学習開始18週目

18週目の合計学習時間:30H

6/5土曜:3.5H 

6/6日曜:0.5H

6/7月曜:9.5H ※休日

6/8火曜:4H

6/9水曜:9H ※休日

6/10木曜:1.5H

6/11金曜:2H

"一週間の振り返り"

<先週のTryの確認・18週目にチャレンジしたかったこと>

・最終課題の商品出品,一覧表示,詳細表示,情報表示

→◎:最終課題の制作は一番の優先事項。無事に計画通りに終えた!

 

・オリジナルアプリのDB設計とトップページサンプルの作成をする

→△:少しづつ進めている。トップページは、良い感じのタブを使ったデザインのサイトを調べたり、白と黒を基調としてシンプルで和の感じもあるデザインを調べる。

 

Rubyドリル、課題図書、技術ブログ

→×:この3点は余裕があったらやるはずだったが、余裕がなく手付かずのまま。最終課題が終わってから一気に進める予定。

 

もくもく会への3回目参加

→◎:6月9日に朝もくサロン3回目。もうちょっと頻度を増やしたいところ、そのための早寝とか、健康的な生活リズムとか、身体のことも考える。

 

 

<Keep・良かったこと継続したいこと>

・学習進捗と時間の確保がとても良い

→一方的なインプットから実装でドンドン手を動かすようになり、のめり込むように学習をしている。どうすれば良いのかわからないエラーに直面した時は冷や汗が出るけど、時間があっという間に過ぎるし、解決できた時の快感も味わえる。引き続き、最終課題とオリジナルアプリの実装を頑張りましょう!

  

・一週間の予定管理を見直した!Googleカレンダーを利用し色分けで管理。

→先週から実践済み。どうしても取り組む必要がある学習は、最初から赤色にして時間を決めてしまう。最終課題では、どの機能をどのタイミングで提出するのかを赤色で管理した。また、プライベート予定は個人アカウントと連携して、一つの画面で全部確認できるようにした。引き続き、可視化をして学習に取り組む!

 

・夜の寝不足改善傾向にあり。

→大事なのは、昼間にしっかり動いて、夜に寝ること。ひたすらこのリズム。

 

<Problem・課題点>

・もうちょっと朝学習を頑張りたい

→健康的な生活リズムに、朝を1時間早く起きるとか。寝不足で起きてからボーッとするのを避けるとか。まずはそこから。さらにプラスαを目指していきましょう!

 

・引き続き、ダイエットと運動と。

→一番は、夜の間食をやめること。そして週3回目標の適度な運動。

もちろん意味のない夜更かしは避けるように!

 

 

<Try・19週目にチャレンジしたいこと>

・水曜日に商品購入機能を実装完了!

・木曜日にオリジナルアプリの課題完了!!!

・技術ブログ2本以上を書く! ネタはすでに溜まっている!

・オリジナルアプリをいよいよ作成開始。

・HTMLデザインについて技術書を読む。

・最終課題後は、オリアプと平行で課題図書・Rubyドリルを進める。

 

<オリジナルアプリの候補>

◎メイン制作:寄席情報アプリ

→・各寄席の出演情報がわかること(Twitterとの紐付け。)

・ユーザー管理機能があること

・ミニアプリで自分の番組を作成できること

・出演情報やミニアプリの番組をツイートできること

・いいね!機能があること

・いいねした一覧をチェックできること・・・etc

 

●ファンクラブアプリ(後回し制作予定)

→こちらは、機能面の整理をしておく。宣伝方法はどうするのかは考えないといけないかも。いかに人気の人とコラボするのか? が最も早いかもしれない。

広瀬香美さんが利用している"Bitfan"が近い

kohmihirose-sing.bitfan.id

 

<一週間の学習日報>

6/5土曜 9:00~10:30/17:00~18:00/22:00~23:00

・本日の学習時間:3.5時間

 

・今週(18週目)の課題

「最終課題:商品出品,一覧表示,詳細表示,情報表示//オリアプ:DB設計,TopPageサンプル/技術ブログ更新」

→商品出品が60%くらい終わった。残りは日曜にやり切る。土曜日はアウトプットで恒例の学習ブログ。なんとブログアップのツイートをすると10以上のいいねが付くようになった。周りのプログラミング初心者を見ると、それっぽいツイートをしていても、ちゃんと学習を振り返っている人や、どのぐらいの期間積み重ねているのかが見えない人が多い。そういう点でも、地道にブログを続けるのは良いことだなと思った。変わらずにコツコツと続けていきましょう。

 

・学習進捗と内容

→仕事の今日は最終課題のみをひたすら進める。昨日は全然だったけど、今日から切り替えて再スタート。商品出品機能は、itemsモデルの作成とテーブルの作成。追加カラム分のバリデーション設定。価格に関しての半角数字と300円以上のバリデーションを追加。そしてログインとログアウト時での遷移先の分岐を終わらせた。これまでやったことをなぞるのみなので、スムーズに進めたと思う。

問題なのは、明日からやるActivehashを使ったカテゴリーなどの実装と、いよいよ使うJSの価格の手数料表記。どうなるのか? 日曜日は仕事がお昼までなので、それまでにActivehashのカリキュラムを学習し、午後からカテゴリーの実装、そしてJSをやって、提出できる状態に仕上げる。コードレビューのタイミングによりけりだが、もし月曜日の朝に最終課題が進められない場合は、オリジナルアプリを進めていく。こういう時、レビュー待ちにならずにやれるアプリがあるのは並行して進めることの良い部分だな。さてさて、明日の実装で出品機能が終えるのかどうか、楽しみに待つ。

 

・反省点と明日の予定

→今日から18周目。先週はキャリアコーチとの面談もあり、転職サイトへの登録も済んだし、いよいよという感じ。とはいえ、転職の根幹は、どれだけ学習意欲があり、実践し、限られた技術の中でどんなアプリを作ったかどうか、という部分。つまりはオリジナルアプリが大切ということ。さ、頑張りましょう! 明日は朝活〜仕事〜昼から夜までの集中学習。

 

==========

6/6日曜 21:00~21:30

・本日の学習時間:0.5時間

 

・今週(18週目)の課題

「最終課題:商品出品,一覧表示,詳細表示,情報表示//オリアプ:DB設計,TopPageサンプル/技術ブログ更新」

→商品出品のカテゴリーの学習のみ。

 

・反省点と明日の予定

→カテゴリーに関わるActivehashの学習をしていたら寝落ちした。。。

そもそも日曜の今日は、会社が昼過ぎに終わっていたのでそこからガッツリやるはずだったが、最寄りのファミレスは満員で入れず「家に帰ってやるか」で大失敗。

眠気に襲われ、そのまま寝たら夜に。そこから気を取り直してやれるだけやろうと思うが、また寝る。あー、失敗したなーという印象。

また、今日やっていて思ったが、週間スケジュールを意識するようにしたが、理想のスケジュールを組み過ぎている気がした。以前のような少し無茶な予定を作り過ぎ。

今までは、実現可能な目標をざっくりと立てて、日々のタスクを管理していたが、週間スケジュールを取り組み始めたら、勢い余って無理をしたスケジュールを作っている気がする。

その点で「実現可能な予定」に修正をしようと思った。一方で、連日の昼間の眠気問題と夜に寝付けない問題は深刻。休日を利用して、昼寝禁止、眠くなったらもったいないと思わずに外出、夜は早寝、朝は朝活。このリズムの徹底をすること。日曜は残念な過ごし方をしたが、良い反省の日にして明日の休日から徐々に上向き修正をしていこうと思う。

ちなみに実現可能な目標として「月曜:商品出品のレビュー提出、火曜:朝活でオリアプのDBを終わらせる、水曜:商品一覧と商品詳細のレビュー提出、木曜:オリアプのTopPageサンプル作成開始」にしておく。

 

==========

6/7月曜 11:30~12:30/14:00~18:30/21:00~24:50

・本日の学習時間:9.5H

 

・今週(18週目)の課題

「最終課題:商品出品,一覧表示,詳細表示,情報表示//オリアプ:DB設計,TopPageサンプル/技術ブログ更新」

→商品出品を9割完成させた。火曜の朝に提出する。

 

・学習進捗と内容

→最終課題で冷や汗をかいたのは、商品販売手数料を表示するJavaScriptの部分。どこから手を付けようかと焦った。個人的に難しいなと思ったのは「イベント発火」の条件。ページを読み込んだタイミング合っているのか、それだとすべてのページで発火することになると思うがそれで問題はないのか? 色々と考え過ぎて深みにハマってしまった。終わった後に「なんてシンプルなんだろう」と気づいたけど。やってる途中は深みにハマるから不思議というか、シンプルにまずは動作を動かすことから考えていけばよかった。もし、もっとスマートなやり方や付け足しの機能があるのなら、作ったベースをアップデートすれば良いわけで。実装において、その考え方を忘れずに引き続き取り組んでいこうと思う。

テストコードは、Fakerでどういう値を入力すれば良いのかを毎回悩む。今回はActiveHashの入力方法。id番号で入力するとして、validationはどうするのか。id:0は選択肢に入れたくない。ググると、ActiveHashをFakerで選択させる方法は「クラス名.all.sample」があるらしいと突き止める。しかし、これだとバリデーションで設定しているid:0も含まれるのでNG。そもそものid:0に入力している”—“を削除するやり方もあるららしいが、他の方法もあるはずだと考えてみた。そこで、id番号で値が入力されているのなら、numberを入力してあげれば良いと考え、シンプルにFaker::Numberを使用し、そこに各クラスごとのid:0を抜いた1〜の番号を乱数入力させると。。。見事に成功した!よかった、変にid:0を削除する方向に走らなくてよかった。あとは火曜の朝にテストコードをまとめて終了となる。

 

・反省点と明日の予定

→切り替えて休日の1日をしっかり学習に使えたのでよかった。気になるのは、オリジナルプリが進んでいないこと。まだDB設計も終わっていない。商品出品の終了後に、最終課題と並行して走るように計画を立て直す。一週間以内にサンプルのTopPageまでやり切る。総合してしっかり学習ができたし、商品出品がようやく終わりそうなのは良かったと思う。

また、明日は仕事の日。しっかり朝学習をすること。出品機能のLGTMをもらうこと。オリアプDB設計を進めること。最優先事項を守って取り組み続ける。

 

 

==========

6/8火曜 8:00~10:30/11:30~12:00/17:00~18:00

・本日の学習時間:4時間

 

・今週(18週目)の課題

「最終課題:商品出品,一覧表示,詳細表示,情報表示//オリアプ:DB設計,TopPageサンプル/技術ブログ更新」

→商品出品は予定通りLGTMをもらう! オリアプのDB設計がようやく進み始めた!

 

・学習進捗と内容

→最終課題は、昨日に仕上げた商品出品機能のテストコードを実装。最終課題ではログイン機能で既にテストコードをやったばかりなので、スムーズに進めたと思う。それと、テストコードの途中で価格のバリデーションにミスがあることを発見し、未然に防げた。テストコードの大切さを知る。レビューは2回で無事にLGTMをもらう。ちょっとだけ画像選択の部分に疑問があるので、そこはchat-appを復讐しておく。

オリジナルアプリは、DB設計をまとめるのとタブを使ったHTMLの表示を調べる。DB設計は思ったよりもシンプルになりそう。今のところポイントはリアクション毎にDBに保存する仕組みで、いわゆるいいね機能の実装について。独立した”いいねテーブル”を作成することを知る。ということは、僕の場合は「行きたい!」と「もう行った!」の2つのリアクション別にそれぞれ保存したいので、リアクション用の2つのテーブルを作成することになりそう。

一方で、FacebookやSlackなどにある「顔文字」のような大量のリアクションはどう保存されているのか? いいね、とは違う考え方で画像データやActiveHashのような形で保存していると予想している。いいねの場合は、「いいねをした投稿の一覧」など個別にデータを表示させたいので独立したテーブルが必要なのかな?と思った。

知らないことが多くて焦るが、新しいことを知るのは楽しい。HTMLにおけるタブの表示は、CSSのみの方法とJavascriptの方法の2つがあると分かった。では、どちらを使うのが良いのか? CSSの方は力技のように思ったので、まずはJSを使った方でタブ表示を試してみる。たくさんサンプルはあるけど、Qiitaのブログのように良いものもあれば、悪いものもあると思った。その判断もしっかりしていきたい。考えることを続ける。

 

・反省点と明日の予定

→まずは最低限の出品機能のLGTMまでいけたのは良かったこと。また、久しぶりにオリジナルアプリに時間を使えたのでそれも良かった。今日はとにかく仕事後は早寝をして、明日は朝からガンガンに進めていく。

明日の目標は「最終課題:一覧表示、詳細表示」の2つをLGTMまでもっていく。オリジナルアプリで「テーブルのER図とREADMEの完成」と「サンプルTopPageの準備を開始する」こと。1日を使った学習日になりそう。良い休日を過ごし、夜はゆっくり過ごしたい。

 

==========

6/9水曜 7:00~11:00/15:00~17:30/20:00~23:40

・本日の学習時間:9時間

 

・今週(18週目)の課題

「最終課題:一覧表示,詳細表示,情報表示/オリアプ:DB設計,TopPageサンプル/技術ブログ更新」

→最終課題をなんと3つ進めた! 朝、昼、夜と3ブロックに分けて取り組めました! オリアプはDB設計とTopページデザインの準備。

 

・学習進捗と内容

→最終課題は、スムーズに進めて良かった。以前も書いたが、エクセルで処理手順をまとめているのがとても思考の整理に役立っている。どういう考えで、どの順番でやっているのかがよく分かるし、疑問に思ったことも漏らさずにチェックできている。エラーで手こずった部分は赤塗りして、後で見返したり、技術ブログの下書きを作成している。そろそろ、下書きが溜まっているので多めに更新をしようと思う。

一覧表示に関しては、「商品情報が一つもない場合はサンプルを表示する」条件について、@items.present? でデータがあるのかないのかが判断できると知った。また、Activehashの表示に関して、最初は@items.category_idと記述していて、結果をみると”2”という数字が出力された。なるほど、idの番号がそのまま出るのかと理解したのは良いが、それではどうやってnameの部分を出すのだろうと試行錯誤する。ハッシュで保存しているから”@items.category[:id][:name]”か?と思ったが、ダメだった。もう一度記述を見返すと、そもそもactivehashはアソシエーションがあることを知り、user_idを引き出すように、”@items.category.name”でいけるのかと試す。なんとか正常に出力された。簡単そうに見えて、難しい。解決できて良かった。

商品の詳細表示に関しては、showのビューページにitemのデータが渡されないので四苦八苦した。ページ遷移はlink_toを使っているが、これを部分テンプレートのrenderメソッドと混同してしまい、viewからviewへインスタンス変数を渡せないかと意味のない悩みに時間を使うこともあった。最終的に、落ち着いて処理の流れを考え、ある商品のデータを引っ張ってくるので、showアクションには @item = Item.find を使う。どのレコードなのかを特定するのはリクエストに含まれるparams[:id]で指定するので、Item.find(params[:id])と記述する。あとはviewページでインスタンス変数@itemに含まれる各カラムのデータを表示させる。と、正常な表示にすることができた。本当に実装をやっていると勉強になる。

最後に、情報編集の実装。editとupdateを使用する。routesの設定でupdateのみを記述してeditを忘れたときは落ち込んだ。まだまだ初心者だと痛感。そこからはコントローラーとビューを順番に実装していく。ビューの後にコントローラーに戻り、修正。ここも先程の詳細情報と同じく、順番になんのデータが必要なのか、テーブルにどういう処理をするのかを考えて進めた。一つだけ、調べたことは「if @item.update(item_params)」の記述。これは更新が成功したか否かを条件分岐にするのだが”.update”という記述が知識になかった。”.save”で進めようとしていた。ここに少し手こずる。出品者とログインユーザーの一致かどうかなどの条件分岐は何度も書いているのでスムーズに実装して、レビュー提出をする。明日の10時までレビュー待ち。なので、明日の朝はオリアプを進めていく。

 

・反省点と明日の予定

→反省点は特になし。強いて言えば、最終課題だけをやりすぎた気もするが、最重要事項なので少し気にする程度。オリアプも少しずつ進めているので良いと思う。徐々に、最終課題の終わりが見えてきたので、オリアプの比重を多めにしてバランスを取る。木曜〜日曜はオリアプ7割でも良いかもしれない。

学習時間は何も心配なく。朝もくのおかげで、確実に休日の朝に学習の取り組みができている。そのおかげで必然的に学習時間も増える。あとは、平日も3~4時間と増えれば良い。でも、寝不足は禁止。健康が何よりも大切なので、逆に無理をしてコスパを悪くしないこと。

余談だが、やはり実装課題に入った頃から学習時間が増えた気がする。実装を始めると時間を忘れることがあるので、楽しんでできているのかな?と思った。ただし、今は課題に沿ってやっているだけ。これを自分のアプリでも継続できるか? なにも案内がないところで作り切れるのか? 不安はもちろんあるが、まぁ、まずはガンガンやってみるのみ。しっかり寝て起きて、学習と仕事を頑張りましょう。

 

 

==========

6/10木曜 10:00〜11:30

・本日の学習時間:1.5H

・今週(18週目)の課題

「最終課題:情報表示/オリアプ:DB設計,TopPageサンプル/技術ブログ更新」

→最終課題・情報表示が終了。最終課題の今週の目標は達成。

 

・学習進捗と内容

→最終課題は、情報表示のレビュー修正だけだったので出社前に出来た。無事に終了。あとは、トップページのサンプルを作成開始。なかなかCSSは難しいというか、作る前の設計イメージが大切だと気付いた。作りながら考えるよりも、事前に手書きでもイメージを作っておいた方が効率が良さそう。それは、プログラミング以外でも全ジャンルそうだなと思う。大まかなイメージを具現化してから、再度HTML,CSSに取り掛かる。

月曜までにトップページサンプルと、DB設計を終わらせる。頑張りましょう。

 

・反省点と明日の予定

→反省点は、ちょっと学習時間が少なかったこと。でも、進捗は良かったので大目に見る。夜は何もせずにすぐ寝るようにした。明日からは、月曜日までオリアプ中心になる予定。

 

 

==========

6/11金曜 22:30~24:30

・本日の学習時間:2時間

 

・今週(18週目)の課題

「最終課題:達成済み。/オリアプ:DB設計,TopPageサンプル/技術ブログ更新」

→2時間だけの夜学習だったので、一番早く終わる最終課題の削除をやった。明日はブログを更新するのと、オリアプ進める。

 

・学習進捗と内容

→最終課題の削除機能、1時間かからずに提出まで到達した。明日の修正待ちとなるので、明日の朝はオリアプをやる予定。

削除機能で気になる点は、インスタンス変数を使うか否か、という部分。tweet-appでは、削除でインスタンス変数を使用しなかった。今回はbefore_actionで@itemを取得済みだから、わざわざ””item=Item.find(params[:id)”としなくても、そのまま@itemを使って良いんじゃないのか?と判断した。明日のレビューで修正になるのかどうか。

また、そこが触れられなかったとしても、完全に納得していることではないので、もう一度、なぜインスタンス変数を使うのか、tweet-appは使わなかったのか、それを言語化したいと思う。明日の復習として取り組む。

 

・反省点と明日の予定

→反省点は、朝学習ができなかったこと。先週よりは寝不足が解消されたけど、さすがに毎日朝学習はできないな〜という印象。週に数日は疲れて参ってしまう。根本の原因は、早寝と健康的な生活だと思う。筋力やトレーニング頻度が落ちているのも原因のような気がするけど。健康的に最終課題の終盤戦とオリアプ制作を頑張りましょう! 最終課題、本当に終わりが見えてきました!クレジットカード機能がどうなるのか怖い!

あ、先週に続いて今週も”30時間”を突破しました!偉い!後半にきてどんどん学習ができている!

最終課題が終わった後の日々の学習がどうなるのかが怖い気もするけど、課題図書にRubyドリルやpiazaといった取り組むべきことたくさんあるので、たぶん大丈夫。まずは頑張った自分に喜んでおきましょう。