201016アウトプット 12日目
TECHCAMP12日目
【目標】
他人の褌で相撲をとってしまった今週前半
自分の体験をアウトプットした今週後半
実りのある経験が出来たのは、当たり前か後半の週
前半の失敗を、土日含めて必ず取り戻す
【復習事項】
○ 投稿の結合テストについて have_selector
目的 投稿したページに画像データが表示されているかを知りたい
効果 指定したセレクタが存在するかどうか判断するもの
expect(page).to have_selector ".content_post[style='background-image: url(#{@tweet_image});']"
○ ツイート編集の結合テスト
目的 自分以外のユーザーは、編集・削除が出来ないようにする
効果 FactoryBot で、ユーザー① ユーザー②をインスタンスして確認
○ find().hover
目的 挙動確認の際にカーソルを持っていくと表示される動作を再現
効果 挙動で、ホバー表示してくれる
○ find().value
目的 挙動確認の際に、中にある値を表示する動きを再現
効果 挙動で、値を表示してくれる
○ 新規登録のテストコードについて
expect{find('input[name="commit"]').click}.to change { User.count }.by(1)
expect(find(".user_nav").find("span").hover).to have_content('ログアウト')
疑問 expect の後ろにある()と {}の違いについて
回答 {}は中の処理を飛ばして、後ろの動きをしてから処理する
()は順書通り、()を処理してから後ろの部分が処理される
効果 {}の方は、後半部分に押すとカウントされる仕組みがある
そのため、先に{}のボタンをクリックされたら動作できないため
【今日の振り返り】
あっというまの2週間、残りは55日しかない。
時間は無限にあるわけではなく有限であるから焦ろ、自分。
もっと向上する意識をもって取組め、自分。
意識なきところに成長はなし、観察するからこそ芽が出る。
201016思考の整理
拡散と集約を繰り返す行為
電車が目の前を過ぎ去るように、過ぎ去ろうとした思考を言葉にする行為
○:題目 思考の種となったもの
△:飛躍 思考の本流から伸びた枝葉
○スイッチをいれるためには?
・朝のルーティン(縄跳び・ダッシュ・ゴミ拾い・シャワー・家事・0秒思考)厳守
・上記でも駄目な場合
・夢の確認(長期的に達成したい目標)
・良いことを考える(短期に達成したい目標)
→今日はこうなりたいを想像する
△
・私の今日はこうなりたいは、誰かもこうなりたい姿であると仮定
→自分が達成したいならば、誰かに与えることから始める
→良い言葉をもらいたいなら、良い言葉を自分から発信する
○満足のいく勉強をするためには?
・目標・宣言をして、自分の周りに壁をつくる
→壁を超えられるから達成感を得られる
△
達成感が目に見えるようにする
→達成感という概念に形をあたえて、どれだけ自分がハードルを超えられたか確認
○心を落ち着かすためには?
・紙に書く
・筋トレ
・マインドフルネス
→肉体的・精神的に、自分から心のザワザワを自覚的に切り離す
△
・心は自分の一部と認識して、コントロール出来ると考える
・紙に書く際の原因フォーマットをつくる
・”X” が 理解できない
・”X” を 理解するための方法は?
→問題の細分化
○今日を工夫するためには?
・新しいことにチャレンジをする(挑戦)
・昨日の反省を見直して改善する(改善)
△
・反省をつける
→その時の気持ちを残す (”X” に対して ”嫌であった”,”気持ちが悪かった”等々)
→反省すべき気持ちを取り除くor上書きするには の方法を見つける
→気持ちはすぐに現れ、消えてしまうので、心にアンテナを張る
201015アウトプット 11日目
TECHCAMP11日目
【目標】
ノートの取り方を考える。
テキストを書き写すプログラムのような何かではなく、
自覚的に、これはどうなのかと疑問を持ちノートをとる。
【復習事項】
○FactoryBot
目的 テストコードを複数回書くのが手間なので省略したい
効果 インスタンスをまとめてくれる
あらかじめ各クラスのインスタンスを設定して、使いまわせる
○Faker
目的 実装テストの際に、様々なパターンの確認をした
効果 FactoryBotのインスタンスを設定する部分に記述すると、
ランダムにインスタンスを生成する
○結合テストコード
目的 ユーザーがたどる一連の流れを確認し、エラーがないか想定する
効果 何がどのルートで指示がなされているかを自分で確認できる
○Capybara
目的 Systemspec(結合テストのコードを記述する仕組み)を記述したい
効果 実装(ターミナルで "rails g")すると上記の記述ができるようになる
○visit
目的 移動先に移動するを再現できる
効果 visit ○○_path で結合テストの際に、自動的にに移動するを実装できる
○page ,have_content
目的 移動先に目的の文言があるかの確認ができる
効果 visitで移動した(page)に、have_content(目的の言葉)が"ある"を表現できる
【今日の振り返り】
ノートのとりかたに関しては、納得のいく1日となった。
チームの一番早いペースの人に、ノート術を聴いたりして自分に取り入れる。
何故を問い、自発的に問題に取り組むようなノートの取り方で成長をする。
201015 思考の整理
拡散と集約を繰り返す行為
電車が目の前を過ぎ去るように、過ぎ去ろうとした思考を言葉にする行為
◯テキストの写経をやめる
・テキストをそのまま写経して、アウトプットすることをしていた
テキストから自分で受け取ったことを、アウトプットするように変更
間違えていい場所を提供されているのに、間違えない方法をやろうとしている
△仮説
①_____をしたい
②なので_____を使う
③そして_____となる
④_____と記述する
◯ノートをとるタイミング
・テキストであれば小ステップごとに、上記内容でまとめる
・時間単位であれば、25分ごとにタイマーを使用する
△仮説
・枝葉に囚われすぎていないか確認する
・自分でチェックする習慣をつけていく
◯手を動かすために
・最低限自分ノートに言語化すること
・身体に覚えさせるように繰り返す
△仮説
・目的は言語にして、何のためにしているのかの目標に形を与える
・その目標に対して、身体に反復作業をさせる
・反復作業 = 自分の体験として定着させる
・自分ごととして無理にでも受け入れる覚悟を持つ
◯自分をアップデートさせるために
・今考えた思考を実行してみる
・自分の心を使う
△仮説
・体を使って、心に染み付ける
・その心を使って、アウトプットする
・その行動に心はあるのかを、自分で確認する時間をつくる
201014アウトプット 10日目
TECHCAMP10日目
【目標】
勉強量が多くなり、その量に怠け癖が出ている。
テキストを見ながら書きながらと、「〜ながら」となってしまっている。
ただ写すのではなく、見る時間と書く時間を切り分けて設ける。
【復習事項】
○Git・GitHubについて
何故 アプリケーション作成の際に「元に戻したい」という状況が発生
何を ある段階を記録しておき、あとで戻ることができるツール
方法 Git :バージョン管理ツール(仕組み)
GitHub:複数人開発ができる支援Webサービス
Gitで変更した内容を共有できる
○共同開発における、clone(クローン)について
何故 共同開発において、1人がアプリケーションのベースを作成するため、
共有するメンバーはそのアプリケーションをダウンロードしなければ、
何を制作したらいいかわからない
何を clone(クローン)をダウンロードする
方法 ターミナルに、リモートリポジトリのURLに.gitを加えた文字列指定する。
そして、ローカルリポジトリとしてダウンロードする
○同時編集の際に発生しがちな問題について
何故 複数のプログラムが同じデータを使おうとすると、競合している状態になる
何を コンフリクト(同時編集の際に発生しがち)を解決する webサービスの利用
方法 git hub web上の「resolve conflicts」をクリックすると修正箇所が表示され
表示されるファイルごとに編集・修正をして反映をさせる
○テストコードをする理由について
何故 クオリティの担保(人為的ミスを防ぐ、記録を残す)
仕様をみきわめる(仕様を理解しているかの確認)
何を RSpec(アールスペック)と呼ばれるGemを使用する
方法 コードを自動確認して表示をするように反映させて使用する
【今日の振り返り】
昨日の振り返りを生かすべく、全体を読んだ後に一つ一つの項目へ。
一度読んで、もう一度文章を読むというN+1問題のようなことを地で行く。
学習項目は増え、このやり方が今のところ自分の最適解となっている。
201014思考の整理
拡散と集約を繰り返す行為
電車が目の前を過ぎ去るように、過ぎ去ろうとした思考を言葉にする行為
◯考えるという行為について
・物事を前進させるキッカケを生み出す手段
△仮説
・個人的な方法として、とりあえず手を動かして書き出す
・書き出すことで、考えという概念(クラス)に形を与える(インスタンス)
・形を与えられた物に対して、どのような手段をとっていくか検討する
◯実行する勇気
・自分の進む道を"自分で選択"すること
△仮説
・"自分で選択"=自分の事を決めることが出来る感覚を持つ
・他人からの評価でない、自分の内面にある評価軸を基準とする
・自分の内面の評価軸とは?
・評価軸に従う事で、自分の判断に責任を持つことができる
◯継続するには
・繰り返して、継続したい行動に触れる
△仮説
・物事の習慣化は平均2ヶ月程度、週4回以上、継続したい行動に触れる
・手触り感の重要性
・人間という存在に身体があるため、皮膚感覚というレベルで実体が必要
・まだ目に見えない情報だけで、習慣化するのは難しい
・外からのアクションを取り入れる(:仲間, :視聴, :触覚≒触れる?)
・人は人件費がかかるため、その他の方法でアクションを取り入れる方法は?
◯やめるタイミング
・自分が諦めた時
△仮説
・諦める=自分の"可能性"がないと感じた時
・誰が決めた"可能性"なのかは人それぞれだが、自分であって欲しい
・単純に時間がなくてタスクを実行できない場合
△仮説
・価値(=生産性の効果)の低いものから行動をやめる
・行動にランク付け
(例)ジョギング 5/10 点
・運動、勉強などでグラフ化して自分の採点をする
◯流行をとりいれるための方法
・ネット
・検索ランキング
△仮説
・流行っているものが重要なのか、流行りそうなものが重要なのか
・まず知るために、その流行を作った人が考えた思考を辿る
・どんな価値を提供したいと思ったのかを知る
201013アウトプット 9日目
TECHCAMP9日目
【目標】
自分のしたいことのために挑戦していることを問い直す。
今までの学習方法を見直す
【復習事項】
○アソシエーションについて
目的 モデル同士を関連づけるための方法
処理したい情報が増えると複雑化する(モデルが増える)ので、アソシエーションを使用する
方法 モデルに記載する
・has manyメソッド (ユーザー→ポスト 一人の投稿者が複数の投稿をする)
・belongs_toメソッド(ポスト →ユーザー 一つの投稿は一人がしたもの)
※実際は各々のモデルが、モデルに対して記載するので
○N+1問題
問題 ループ処理の都度SQLを発行し、パフォーマンスが低下してしまう問題
例え 買い物する際に、1点1点お会計をしてしまうようなことが起きている
何故 一度目にモデルの取得して(+1)、それから各モデルを読み込む(N回)
対応 includesメソッド: 一度のアクセスでまとめて情報を取得できる
モデル分なので(N回)で済むことができる。
○投稿者本人のみに編集・削除を許可するために
目的 他のユーザーから勝手に編集・削除を防ぐ
誰彼構わず編集・削除ボタンが表示されている状態だから
方法 if文を使用する
ログイン 且 ログイン中のユーザーID == 投稿したIDが同じか確認する
同じであれば編集・削除ボタンが表示されるようにする
○部分テンプレート
目的 複数ページで利用する表示の一部をまとめる
繰り返し使用するコードを再利用して、ページの量を減らす
方法 _○○.html.erbファイル を新規作成して同じページはまとめる
○ネスト(入子構造)の利用
目的 ネスト利用でモデル同士を結びつけ共有しid情報が送りやすくする
id情報を共有し利用する
方法 ルーティングにアソシエーション定義
親(Do)を作り、その子を指定します(~end)
【今日を振り返り】
テキストを確認しながら読み進めると、途中手を動かして記載することがある。
プログラミングを書くことに慣れることも重要だが、ペースが途切れる。
思考が中断してしまい、全体の工程が複雑にもなっていることもあるので、
プログラミングした後に、何故こうなったのか流れを再度戻らなくてはならない。
全体の流れを読んだ後に、手を動かす時間として方法を変えるようにする。