20210122・23_アウトプット(オリジナルアプリ・パンくず)

アウトプット画像

1/22行ったこと 計:4時間20分

1/23行ったこと 計:11時間20分

  • 自分の強み・弱み発表会(テックキャンプの友人と)

  • オリジナルアプリ(自分だけのページで見られるようにしたい)3時間20分

  • オリジナルアプリ(セルフコンパッションページで非同期通信で保存できるようにしたい)3時間50分

  • オリジナルアプリ(Herokuデプロイ、Rubyのバージョンアップ)3時間15分

  • パンくず(完成✨)30分

  • アウトプット 25分



新しい発見

  • Userモデルとアソシエーションを組むことによってcurrent_userが使えること

  • indexアクションにおいて、自分だけのページにしたい場合は、下記にて実装できること(本当にありがとうございます!!!)

def index
   @troubles = current_user.troubles.all.order(created_at: :desc)
  end
  • ストロングパラメーターについて、newアクションに定義していたものを、indexアクションにうつしたところ、ストロングパラメーターの二次元ハッシュが変化したこと。

  • 変化することによって、requireも必要なのか、permitだけで良いのかが変わってくる。

  • 今回は、アソシエーションによるuser情報も利用したかったので、requireも定義したかった。newにある内容をindexに移動させて、ストロングパラメーターを設定したら運べるようになった。


悩んでいたこと:その1

teratail.com

悩んでいたこと:その2

teratail.com

ルビーのバージョンアップ、Herokuのデプロイで勉強になったこと

qiita.com



感想

  • 一昨日ふと感じた「みんなページ見れるかも」という懸念は的中していた。作りたいアプリにおいてそこが抜けているとアプリとして成り立たない要素部分だったので今の段階で気づけてよかった😭

  • ヤフーのテックカンファレンス面白く勉強になった!!!また別の記事でアウトプットしよう☺️

  • 土日でも5時半に起きられるようになった!!習慣化になってきたの嬉しい!

  • 今日はテックキャンプの友人と自分の強み・弱みの発表、それをエンジニアになったらどう活かせるだろうかという視点でフィードバックをした。嬉しかったなあ(笑)

  • 自分では意識していなかった魅力を皆さんがフィードバックしてくれた。「こういうエンジニアになりたい」という要素が混じっている部分も多く、自分の理想の姿に少しでも前に進んでいることが感じられ嬉しかった。

  • 気の合う、自分の素直な価値観を共有できる仲間を持てて幸せだなあ。(恵まれている)

  • プログラマーになったあとも、そんな仲間に出会える機会は少ないので大事にしたいと思った。



覚書(12/29計画の見直し)

(1)やるべきこと (2)やりたいこと (3)やれること

(1)やるべきこと

  • 卒業要件の完成

(2)やりたいこと

(3)やれること

メンタル:楽しみながら、ゲーム感覚でいく🎮😎

時間で区切り(達成すればよし)
  • PHP 一日15分以上

  • オリジナルアプリ 1日1時間以上

追加実装のミニアプリを作り、引き出しを増やす
優先順位 内容(機能) 締め切り 達成度
1 AWS S3 12/18 完了(フリマアプリ)に実装)
2 AWS EC2 12/24 完了(フリマアプリに実装)
3 ウィザード形式 12/27 完了
4 SNS認証 12/28 完了
5 複数条件検索 12/29 完了
6 タグ付 12/31 完了
7 画像プレビュー 1/2 完了※フォーク
8 複数枚写真OK 1/4 完了※7に追加実装
9 コメント機能(即時更新) 1/8 完了
10 クレカ登録 1/10
11 パンくず 1/14 完了
12 日本語エラー 1/18



身に付ける力(直近)

  • PHP7

  • Docker


身に付ける力(ゆくゆく・覚書)

  • ドメイン駆動開発

  • 環境構築

  • 環境変数などのOS知識

  • バージョン対応力

  • データベースをインポートする力・エクスポートする

  • GitHubActions×OpenAPIGenerator(APICilent)

20210120・21_アウトプット(オリジナルアプリ/セルフコンパッションのページ)

アウトプット画像

オリジナルアプリ / ”セルフコンパッション”のための投稿ページ作成 

〜昨日行ったこと〜 2時間40分
  • 一昨日のアウトプット 20分

  • 「undefined method `permit' for 」エラーに苦しむ 1時間40分

* 複数形が悪かった? 1時間30分

👉エラーを解決できず。

〜今日行ったこと〜 3時間
  • ”セルフコンパッション”のための投稿ページ 3時間
    👉エラーは解消できたものの、user_idの原因は分からずモヤモヤ。

  • アウトプット 1時間10分



新しい発見

エラーから学んだこと。

(1)uninitialized constantエラー

  • アクションで定義している変数は、アクションと同じビューファイル名からでないと読み込まれないと理解。

  • 今回、コントローラーのcreateアクションでしか定義していない変数を、index.html.erbの中で使用しようとしていたのが原因だった様子。

  • コントローラーのクラス名と同じ名前でファイルを作成し(_trouble.html.erb)、index.html.erbにおいて<%= render @troubles %>で呼び出したところ解決。

理由がわかった記事

Rubyでuninitialized constantエラーを解消する方法を現役エンジニアが解説【初心者向け】 | TechAcademyマガジン

【Rails】部分テンプレートの使い方を徹底解説! | Pikawaka - ピカ1わかりやすいプログラミング用語サイト



(2)複数形と単数形について

  • 一番初め、アクションに原因があると分からず、モデル名(単数形)とコントローラー名(複数形)が噛み合っていないからではないかと思ってしまった。(コントローラーとモデルの作り直しをしてしまったが原因はそこではなかった)

  • その作業を行った後に、rails cのコンソールで単数形と複数形を確認できるメソッドがあることを知った。

Railsで単数形を複数形に変換する方法と、その変換がうまく行かない場合の対処法 - 久保清隆のブログ



(3)user_idについて。

  • UserモデルTroubleモデルのアソシエーションを組み、privateメソッド.merge(user_id: current_user.id)を定義。

  • しかし、フォームから呟いてもuser_idnilになってしまい、DBに保存できない(エラー)

  • before_action :authenticate_user!でログインを前提としたり、@troubles = Trouble.includes(:user).order('created_at DESC')と含めているはずなのに何故?

  • だんだんと、そもそもuser_idとアソシエーションを組む必要あるのか?商品購入などと違って「誰が」それを行ったのかは関係ないぞ?と思い始め、外したところ、エラー解消。

  • 調べていると出てきたbuildメソッド。テストコードでは使うけれど、これなんだろう?と思うも、現在のバージョンではnewとの違いに差異はないとのことだった。

railsのnewとbuildの違い - Qiita



感想

  • ずーっとうまくいかなくて、ブルーだった(><)

  • そして頭の中がモヤモヤ(ちゃんと理解していない)とこのブログでも全然かけないことを実感。

  • 把握し切れていないのでモヤモヤするんだな。

  • ひとまず非同期通信で呟きを投稿できるようになったのはよかった。でもuser_idの原因は分からなかったのはなんだかモヤモヤ。明日時間を決めて調べてみよう。

  • ふと感じた疑問は、ログインしている本人のみが見られるページと、みんなで共通で見られるページの違いってなんだろう。そこ漏れてるかもと感じた。(明日確認しよう)

  • 最近早起き出来るようになった。方法としては目覚まし時計を寝る部屋とは別の部屋において、朝アラームが鳴った時に「止めないと近所迷惑になる」という感情を利用して起き上がること☺️



覚書(12/29計画の見直し)

(1)やるべきこと (2)やりたいこと (3)やれること

(1)やるべきこと

  • 卒業要件の完成

(2)やりたいこと

(3)やれること

メンタル:楽しみながら、ゲーム感覚でいく🎮😎

時間で区切り(達成すればよし)
  • PHP 一日15分以上

  • オリジナルアプリ 1日1時間以上

追加実装のミニアプリを作り、引き出しを増やす
優先順位 内容(機能) 締め切り 達成度
1 AWS S3 12/18 完了(フリマアプリ)に実装)
2 AWS EC2 12/24 完了(フリマアプリに実装)
3 ウィザード形式 12/27 完了
4 SNS認証 12/28 完了
5 複数条件検索 12/29 完了
6 タグ付 12/31 完了
7 画像プレビュー 1/2 完了※フォーク
8 複数枚写真OK 1/4 完了※7に追加実装
9 コメント機能(即時更新) 1/8 完了
10 クレカ登録 1/10
11 パンくず 1/14
12 日本語エラー 1/18



身に付ける力(直近)

  • PHP7

  • Docker


身に付ける力(ゆくゆく・覚書)

  • ドメイン駆動開発

  • 環境構築

  • 環境変数などのOS知識

  • バージョン対応力

  • データベースをインポートする力・エクスポートする

  • GitHubActions×OpenAPIGenerator(APICilent)

20210119_アウトプット(オリジナルアプリ)

アウトプット画像

今日行ったこと 2時間40分

オリジナルアプリ

  • 昨日のJavaScriptについて最終確認の上、マージ✨ 30分

  • 2つめの機能である”セルフコンパッション”のページの新規作成、カラム追加、ビュー作成 2時間10分



新しい発見

  • 今日は、どうやったら実装できるか紙に書き出したり、悩んだりしていることがほとんどだったため、新しいは少ない。

  • 一つ復習になったことは、requireメソッドrequireメソッドを使わずに直接モデル指定でも実装できるがエラーは出ないことが復習になった。  
    (1)requireメソッド自体は、paramsが、使用できるメソッド。
    (2)requireを使わずに、params[:モデル名]としても同じ情報を取得できる。
    (3)しかし、意図しないパラメーターであった場合にエラーとして返すことができるのは、requireのみ。
    👉具体例として、モデルAがないにも関わらずモデル名指定していたとして・・・
    requireだと「そのモデル存在しないよ」とエラーが出るが、モデル指定だとエラーが出ない。



感想

  • 今日は、眠くて集中力が低かった。

  • 早めに寝ようと思い、寝床にパソコン持って写真のデザインを考えたり、コードを書いていたら、意外とまた集中できた😂

  • 新しい機能、一つのページにフォームを2つ付けようと思っていて、どう実装しようか考え中。



覚書(12/29計画の見直し)

(1)やるべきこと (2)やりたいこと (3)やれること

(1)やるべきこと

  • 卒業要件の完成

(2)やりたいこと

(3)やれること

メンタル:楽しみながら、ゲーム感覚でいく🎮😎

時間で区切り(達成すればよし)
  • PHP 一日15分以上

  • オリジナルアプリ 1日1時間以上

追加実装のミニアプリを作り、引き出しを増やす
優先順位 内容(機能) 締め切り 達成度
1 AWS S3 12/18 完了(フリマアプリ)に実装)
2 AWS EC2 12/24 完了(フリマアプリに実装)
3 ウィザード形式 12/27 完了
4 SNS認証 12/28 完了
5 複数条件検索 12/29 完了
6 タグ付 12/31 完了
7 画像プレビュー 1/2 完了※フォーク
8 複数枚写真OK 1/4 完了※7に追加実装
9 コメント機能(即時更新) 1/8 完了
10 クレカ登録 1/10
11 パンくず 1/14
12 日本語エラー 1/18



身に付ける力(直近)

  • PHP7

  • Docker


身に付ける力(ゆくゆく・覚書)

  • ドメイン駆動開発

  • 環境構築

  • 環境変数などのOS知識

  • バージョン対応力

  • データベースをインポートする力・エクスポートする

  • GitHubActions×OpenAPIGenerator(APICilent)

20210118_アウトプット(オリジナルアプリ)

アウトプット画像

今日行ったこと 5時間50分

  • 昨日の復習・アウトプット 1時間10分

  • オリジナルアプリ
    *目標設定の結合テスト完了✨ 1時間20分
    *パスワードについてより安全にするためのUI実装✨ 2時間35分
    *今日の復習・アウトプット✨ 45分



新しい発見

結合テスト:投稿機能が「ログイン」前提のとき、どうするの?

昨日から格闘していた目標設定の結合テストコード。 
ログインしていることが前提なのだか、上手くログインした状態のまま「目標設定」のページまでいけず四苦八苦。
この記事のおかげで解決できた!!!!
(できた時、めちゃくちゃ嬉しかった〜!!!😂Rspecの全部緑で出てきたときの嬉しさといったら✨)

qiita.com

この記事から理解したことは、
(1)ログイン(サインイン)に関するモジュールを作成する
(2)目標設定の結合テストにおいて(1)を読み込む
と理解。

これからの残りの2つの昨日でも「ログイン前提」となるので、
その部分だけ他のファイルに切り取れていて、対象の結合テストにおいてはメソッドを呼び出すだけなのも嬉しいな。



パスワードの一意性制約について

一意性制約って何?

  • かぶらないようにする(同じデータはNG)設定のこと

今日新しく知れたこと

パスワードに一意制約をかけてしまうと、攻撃をうけるリスクが高まること。

(1)パスワードに一意制約がかかっており重複した場合に「このパスワードもう使われているよ」とエラーが出る。
(2)これを使えば、ログインできるかも。と悪い人は考える👿
(3)Eメールの流出など他の事象と組み合わさることによって、突破できてしまう危険性。💣

入力できる試行回数を設けることが多いものの安全性をなるべく減らそう。


じゃあどうするといいの?

  • 「パスワード自体」が安全性が高いかどうか教えてあげるといい👍

  • 少ない文字列、英数字を混ぜないなどは危ない。

  • 危険性に応じてUIを変える方法もいい。(危険🔴 普通🟠 良い🟢)


その話を教えていただいて考えたこと

(1)オリジナルアプリのパスワードの一意性制約やめよう!
(2)UIの実装面白そうなのでやってみたいなあ。


「(1)パスワードの一意性やめよう!」について

そもそも、deviseのデフォルトの制限はなんだっけ?

対象 内容
email @を含むこと・存在すること
password 6文字以上であること・確認用の2回入力すること・存在すること

根拠:過去の記事参照

それを踏まえた上で、チェック。

  • なんと「一意性制約」と「存在するpresence: true」を勘違いしていたことがわかった😂

  • オリジナルアプリに「password」に一意性はかけていなかった。よかった。

  • 「全部、一意制約かけた」という勘違いを解けたのは本当によかった。

  • その後、同じパスワードで2人ユーザー登録できるか確認したら出来た。

  • パスワードについて6文字は少ないなと思ったので、こちらの記事を参考に15文字以上にすると設定変更。


2)UIの実装面白そうなのでやってみたいなあ。

  • ググって、これを応用してみることにした。

  • 応用とは、背景じゃなくてアイコン作ってやってみようと思った。

kachibito.net

つまづいたところ

  • 要素はあっているのになぜ読み込まれない?👉window.addEventListener('load',(省略)を忘れていたからだった。

出来たこと

  • 2時間半くらいかけて出来たー!!!すーごい嬉しかった。

  • アイコンのマークも2、3個つくってどの色や形だと可愛いかなと考えるのが楽しかった。

  • 設定している15文字を超えると、「安全鍵マーク」がくっきりし🔑、少ないとぼやけるように実装した。

  • 現在は、文字カウントのみなので、英数字の区別なども出来たらより良いけれど今回は良しとしよう!

出来た様子↓ https://gyazo.com/2aa768070f5a224f448aad74793fe948



感想

  • 銭神さんからの連絡が嬉しすぎた。(本当にいつもありがとうございます。感謝しかないです。)

  • JavaScriptについて「理解がまだまだ」と思っていたけれど、思いの外、基礎的な部分は理解していた。

  • 初🎉JavaScriptについてネットにあるコードから、いい感じに取り入れて実装できたのが嬉しかった・・。

  • 最近、実装が楽しすぎてしょうがない。1日でも早くプログラマーになって、じっくり考えてコードを書くことに集中する日々で暮らしたいなあ・・・🌸

  • ここ最近楽しすぎるがゆえに、5時すぎに起きて、0時以降に寝る生活になってしまっている(気付いたら会社に行く時間、気付いたら寝る時間)ので、今日は早めに寝よう。😪



覚書(12/29計画の見直し)

(1)やるべきこと (2)やりたいこと (3)やれること

(1)やるべきこと

  • 卒業要件の完成

(2)やりたいこと

(3)やれること

メンタル:楽しみながら、ゲーム感覚でいく🎮😎

時間で区切り(達成すればよし)
  • PHP 一日15分以上

  • オリジナルアプリ 1日1時間以上

追加実装のミニアプリを作り、引き出しを増やす
優先順位 内容(機能) 締め切り 達成度
1 AWS S3 12/18 完了(フリマアプリ)に実装)
2 AWS EC2 12/24 完了(フリマアプリに実装)
3 ウィザード形式 12/27 完了
4 SNS認証 12/28 完了
5 複数条件検索 12/29 完了
6 タグ付 12/31 完了
7 画像プレビュー 1/2 完了※フォーク
8 複数枚写真OK 1/4 完了※7に追加実装
9 コメント機能(即時更新) 1/8 完了
10 クレカ登録 1/10
11 パンくず 1/14
12 日本語エラー 1/18



身に付ける力(直近)

  • PHP7

  • Docker


身に付ける力(ゆくゆく・覚書)

  • ドメイン駆動開発

  • 環境構築

  • 環境変数などのOS知識

  • バージョン対応力

  • データベースをインポートする力・エクスポートする

  • GitHubActions×OpenAPIGenerator(APICilent)

20210117_アウトプット(フリマアプリテストコード追加/オリジナルアプリ)

アウトプット画像

今日行ったこと 10時間5分

  • 昨日の復習・アウトプット 1時間

  • フリマアプリのテストコード追加(結合テスト) 4時間5分
    👉Basic認証に苦戦(完了✨)

  • オリジナルアプリ 5時間
    *ユーザー管理の結合テストの続き...20分
    *目標設定ページ(7つのアクション分完成✨)...3時間25分
    *目標設定テストコード(モデルテストは完成✨結合テストの途中)...1時間15分
    👉目標設定のページについて、ビューと結合テスト以外は完了✨



新しい発見

実装していた時に、参考にしたサイト

さすが伊藤さん😭この記事のおかげでプルダウンで選択する生年月日の結合テストコードの部分がかけた。

qiita.com

結合テストを書いていたときに、ベーシック認証が突破できずエラーになったときに以下2つの記事が参考になった。

qiita.com 👉予めメソッド・変数・URLに定義して、メソッドを呼び出すことを理解。

qiita.com

👉コメント欄にある伊藤さんのマインドが励みになった。



パスワードの一意性について

*「 パスワード=一意性制約をかける」ことが良いと思っていた。

  • しかし、メンターさんに質問して話しているときに、「一番大切なのはemailの一意性と、emailとpasswordの組み合わせでは」と新しい視点を得られた。

  • パスワードに一意性をかけることによって「そのパスワードダブってますよ」と表示が出ることにより、「他の人のいずれかが使っているんだ」とわかることになる。

  • 一意性に関して「こちらの方がいい!」という視点を持ちすぎず、本当に大事なのはどの部分だろうとその都度見極める視点を持とうと思った。



Basic認証結合テストコードについて

今日一番悩んだ部分。describe(説明)の前に、メソッドを定義してcontextで呼び出すことによって実装できると理解。

require 'rails_helper'

def basic_pass
  username = ENV["BASIC_AUTH_USER"] 
  password = ENV["BASIC_AUTH_PASSWORD"]
  visit "http://#{username}:#{password}@#{Capybara.current_session.server.host}:#{Capybara.current_session.server.port}"
end

RSpec.describe 'ユーザー新規登録', type: :system do
  before do 
    @user = FactoryBot.build(:user)
  end
  
  context 'ユーザー新規登録ができるとき' do 
    it '正しい情報を入力すればユーザー新規登録ができてトップページに移動する' do
      # basic_passのメソッドを実行
      basic_pass
      # トップページに移動する
      root_path

(省略)
  • basic_passについて引数がなくても実装できた。

  • usernamepasswordについて、実際のusernamepasswordで実装した後、環境変数で出来ないかと複数試したら出来た。



感想

  • 先週の木曜日から作り直し始めたオリジナルアプリ。前回の頓挫したアプリは「挑戦:8、今まで得た知識:2」くらいの割合で作っていたが、今回は「挑戦:2、今まで得た知識:8」の割合に方向転換。まず形にしてから、「挑戦2」の割合部分を広げていこうと思っている。

  • 方向転換したら、前に進む感覚がもてて、楽しすぎて気付いたらめっちゃ時間経ってた😂目標を投稿する機能がブラウザに現れたときめちゃくちゃ嬉しかったなあ・・・♡😂1つの機能をやっと形にできたことが嬉しい!!!

  • 残りの2つの機能をつけるまでは1週間程度オリジナルアプリに集中しようと思っている。(PHPの勉強と追加実装の勉強、少しの間お休み)

  • 今日は久しぶりのライフコーチとの面談があった。話していて落ち着く。今の進捗や夢、それに対するアドバイスを受けているうちにますます元気になってその後の実装もポジティブな気持ちで進められた。

  • 昨日仲間とも話していたけれど、「応援してくれる人」がいると、頑張れる。本当にいつもありがとうございます。



覚書(12/29計画の見直し)

(1)やるべきこと (2)やりたいこと (3)やれること

(1)やるべきこと

  • 卒業要件の完成

(2)やりたいこと

(3)やれること

メンタル:楽しみながら、ゲーム感覚でいく🎮😎

時間で区切り(達成すればよし)
  • PHP 一日15分以上

  • オリジナルアプリ 1日1時間以上

追加実装のミニアプリを作り、引き出しを増やす
優先順位 内容(機能) 締め切り 達成度
1 AWS S3 12/18 完了(フリマアプリ)に実装)
2 AWS EC2 12/24 完了(フリマアプリに実装)
3 ウィザード形式 12/27 完了
4 SNS認証 12/28 完了
5 複数条件検索 12/29 完了
6 タグ付 12/31 完了
7 画像プレビュー 1/2 完了※フォーク
8 複数枚写真OK 1/4 完了※7に追加実装
9 コメント機能(即時更新) 1/8 完了
10 クレカ登録 1/10
11 パンくず 1/14
12 日本語エラー 1/18



身に付ける力(直近)

  • PHP7

  • Docker


身に付ける力(ゆくゆく・覚書)

  • ドメイン駆動開発

  • 環境構築

  • 環境変数などのOS知識

  • バージョン対応力

  • データベースをインポートする力・エクスポートする

  • GitHubActions×OpenAPIGenerator(APICilent)

20210116_アウトプット(オリジナルアプリ)

アウトプット画像

今日行ったこと 7時間15分

  • オリジナルアプリ 
    *ホーム画面(ヘッダーフッターの実装)👉2時間15分(完)
    *新規登録・ログイン画面のビュー👉2時間40分(完)  
    *ユーザー新規登録のテストコード👉2時間20分(8割くらい)



新しい発見

実装していた時に、参考にしたサイト
  • 記事に影を出す際、勉強になった!!

qiita.com

  • 記事を投稿する時にこれ使いたいと思った。見易くて便利!

uxmilk.jp

Userモデルのテストコードについて

ダミーを作れるFakerについて、文字数に関する制限ができるのとできないのがあると知った💡

  • nicknameについて「15文字以下」にしたかったので、nickname { Faker::Name.name(max_length: 15) }にしたら以下の通りエラー。
     ArgumentError:
       wrong number of arguments (given 1, expected 0)
  • 何故だろう??と思って、FakerのGithub見ていたら、見本から、lengthを設定できるものと出来ないものがある(それぞれ毎に型が決まっている)という違いを見つけた。

  • nickname { Faker::String.random(length: 1..15) }にしたところ、15字以下で生成されるようになったが、stringなのに、記号とかも生成されちゃうので、テストコードのコマンド実行時にアプリのDB側で「保存できません」とエラーになってしまった😂

  • 結果、ニックネームということでキャラクターの名前のFakerを使った。



Rails6.0とMysql2の互換性について

テストコード上は、緑色になり完了するものの、警告がでた。(フリマアプリの時ログ見たら同じエラー出ていたのに気づかなかった) Rails6とMysql互換性

まずこのエラーはなにか?

qiita.com

  • 一意性を持たせる制約について、Mysqlは大文字と小文字を区別するが、Rails6.0は区別しないので、エラーが出ていることが分かった。

そこから解決しようと思ったこと

  • 伊藤さんの記事では割愛されているが最良と思われる「DB側のcollationをutf8mb4_binのような「大文字小文字を区別するcollation」に変更する」にチャレンジしたかった。

  • 結論、下記の記事を見て、マイグレーションファイルの変更を試みたがうまくいかなかった。

qiita.com

  • 分かったことは、utf-8でもutf-8mb4でも、このエラーは発生すること。(utf-8mb4が原因かと思い以下のようにDBリセットするも同じエラー)
rails db:drop
utf8に直す
rails db:create
  • 最近リリースされたRails6.1ではその部分が解消できるようなので、オリアプ作り終えたらバージョンアップにもチャレンジしたいと思った。

  • 今のところRails6.0とMysqlは、Actionテーブルと、エンコードの部分で互換性が弱いという事を理解。



感想

  • 今日はひたすらオリジナルアプリを作っていた。

  • 最近、DBとフレームワークの関係性について視点を持てるようになった。(前までは「RailsではMysqlを使う」という把握で、それ以外にもDBはあるという事を分かっていなかった)

  • 互換性を予め知ることは、後々の運用でバグを減らす一助になるのではないか?と思った。

  • 後、今はユーザーが誰もいないので、「drop」「reset」を簡単にできるけど、リリースしたらすでにある情報の移し替えなどもあるだろうし、DBを後から変更するのは、労力が大きいと思うので最初に何選ぶのかちゃんと考えるのが大事、そのために互換性について今後も把握していきたい!と感じた。

  • 企業に入れたら、どんなDB使っているのか・何故使っているのか等知れたら楽しそうだなあとワクワクしながらオリジナルアプリ作っていた。

  • 行きたい企業のプログラマーになりたいなあ。頑張ろう!



覚書(12/29計画の見直し)

(1)やるべきこと (2)やりたいこと (3)やれること

(1)やるべきこと

  • 卒業要件の完成

(2)やりたいこと

(3)やれること

メンタル:楽しみながら、ゲーム感覚でいく🎮😎

時間で区切り(達成すればよし)
  • PHP 一日15分以上

  • オリジナルアプリ 1日1時間以上

追加実装のミニアプリを作り、引き出しを増やす
優先順位 内容(機能) 締め切り 達成度
1 AWS S3 12/18 完了(フリマアプリ)に実装)
2 AWS EC2 12/24 完了(フリマアプリに実装)
3 ウィザード形式 12/27 完了
4 SNS認証 12/28 完了
5 複数条件検索 12/29 完了
6 タグ付 12/31 完了
7 画像プレビュー 1/2 完了※フォーク
8 複数枚写真OK 1/4 完了※7に追加実装
9 コメント機能(即時更新) 1/8 完了
10 クレカ登録 1/10
11 パンくず 1/14
12 日本語エラー 1/18



身に付ける力(直近)

  • PHP7

  • Docker


身に付ける力(ゆくゆく・覚書)

  • ドメイン駆動開発

  • 環境構築

  • 環境変数などのOS知識

  • バージョン対応力

  • データベースをインポートする力・エクスポートする

  • GitHubActions×OpenAPIGenerator(APICilent)

20210115_アウトプット(オリジナルアプリ・Qiita Advent Calendar Online Meetup)

アウトプット画像

今日行ったこと 1時間15分

  • オリジナルアプリ 1時間15分
    👉ヘッダーとフッターの実装

  • Qiita Advent Calendar Online Meetup 2時間
    👉面白かった😂

connpass.com



新しい発見

オリジナルアプリ:フッダーの設定

  • フッターの下に余白ができてしまうことに苦慮。

  • この記事を参考に実装。

techacademy.jp

フッターはどうやって実装するの?(記事から理解したこと:その1)

(1)「全体を包み込む本文部分(フッターも囲うdiv、つまり親要素になるもの)」と、「フッター」と、2つのブロック要素を作る。
(2)「全体を包み込む本文部分」にmin-heightを使い「これ以上小さくならない高さ」を設定する。(100vh)
(3)「全体を包み込む本文部分」は親要素なので、position: relativeを設定する。
(4)子要素である「フッター」に対して、position: absoluteで「あなたはここにいなさい!」+bottom: 0;で「一番下に」を組み合わせて「フッターは一番下にいなさい!」と設定。

間違いポイント 

「全体を包み込む本文部分」ではなく、「本文部分」と「フッター部分」を分けてしまっていた。 その間違いによって、親要素に対しての子要素の絶対位置を決めることが出来ず、上手く実装できていなかった。

本文とフッター部分が重なるのを避けるにはどうしたらいい?(記事から理解したこと:その2)

プラスアルファーで、本文の内容がフッターと重なってしまうことを防ぐため、
(1)「全体を包み込む本文部分」に、「フッター用スペース」を確保。(padding-bottom: 120px;
(2)「全体を包み込む本文部分」にbox-sizing: border-box;を追加。これを追加することにより「フッダー分の120pxを残したまま、本文部分があり、両方合わせて高さ100%にしよう」となり、重ならない✨



やめ太郎さんが出るので見たかったQiita Advent Calendar Online Meetup

どんな内容だったのか?

  • キータ内に「Qiita Advent Calendar」というイベントがあり、その表彰。

  • 人気キータ記事投稿者の3方(mattnさんuhyoさんやめ太郎さん)とキータ運営の清野さんがトークをする会。

(やめ太郎さんが人気投稿者として表彰されると勘違いしていた😂)

新しい発見になったこと。

  • 「キータ=エンジニアの記事サイト」という知識しかなかったので、初めて知れたことがいっぱいあった。

  • Advent Calendarというイベントが毎年12月に開催されており、カレンダーを作成する側、それに対して参加して記事を書く側としてイベント参加できること。
    Twitterで「〇〇の枠が空いていたから記事書いた」というのはそういう意味だったのかと理解。クリスマスまでの時期になぞらえてアドベントカレンダーを行うのは会社ごとの身内のイベントだと思ってた・・・)

  • キータは、1/18に「読み手側」に重きをおいた大幅なアップデートを行うこと。(ストック機能についてカテゴリー別に保存できるの楽しみ)

  • LGTMは評価、ストックは後で見たい等の「ストック」という役割の違いがある。

  • Zennというプラットフォームがあること。(キータと違うところは、投げ銭があることと、技術・本・アイデア等のカテゴリー別で投稿する形のところと理解。早速サインアップしてみた)

  • キータはどんな考えを持ってサイトを運営しているのか知れたこと。
    *誰のために:エンジニアのために
    *何を:皆の技術に関する知識(ポエム含む多様性を大事に)
    *どのように:「書き手」が書きやすい、手間が少ない / 「読み手」が読みやすい、必要な情報を探しやすい
    *なぜ:記事をあげることが有益な世界を作りたい / 「ヒト」の価値が高められるプラットフォームにしたい

  • ユーザー数が増えたことにより(サービスが始まって10年、53万人のユーザー)、必要な情報を的確に提供するにはどうしたらいいか/どうやったら書いている人の価値を高められるか、と悩んでいることを知った。悩みに対して、人気投稿者やイベント参加者に対して、積極的に意見を聞いていたのが印象的だった。(改善したい気持ちを強く持って日々取り組んでいるんだなと思った)

いいなと思った考え

  • 普段新しい知識を吸収する時に「人に説明するとしたら…」と考えるのがすき。自分がここつまづいたらからこんなふうに話そうと考えている間にワクワクする。(やめ太郎さん)
    👉この考えめっちゃ素敵だと思った。いつもブログを書いていて、いざ書く(説明しようとする)と知識が全然頭に入っておらず、自分の言葉でかけないことが多々ある。
     日頃から、どうやったら教えられるかと考えながら知識を吸収できれば頭に入ってくる知識量も大きく異なってくると思った。

  • 面白い中に、実は難しい技術があることをモットーにしている。(mattnさん)
    👉実際に記事を見るとそのコンセプト通りなのが(体現しているのが)すごい!!!ユーモアさは才能だなあと感じた。どうやったらあんなに面白い記事かけるんだろう?
     イベント終わった後に、下記の記事を見て大爆笑した。
      qiita.com

  • 新しい知識を人に広めたい。人が思いついていない・考えついていない情報を届けたい。またその情報によって誰かを助けられた時嬉しい。(uhyoさん)
    👉今の自分には基礎的な部分を学ぶことに毎日必死だったため、自分にとっての新しい学びは日々求めていたが、その技術に関する他の人が知らないことを極めていくという考え方を知れた。新しい知識は海外の知識なのかな?どうやってその情報を仕入れるのだろう?

すごい人が共通しているなと思ったこと

  • 新しい価値、新しい切り口など、「言われた通りにやる」「学んだ通りにアウトプットする」ではなく、自ら価値を作り出していること

  • 楽しいという気持ちから一気に記事を書き上げていること



感想

  • 朝、フッダー全然上手くいかず(要素をバラバラにしていたことに気づかず)気付いたら出勤する準備の時間になって、うわーと焦った。

  • オリジナルアプリ、本当はじっくり楽しみたいが、来月ゆめみさんにエントリーしたいので、そのためには早くオリジナルで作ったアプリを作りたいと焦ってしまう自分がいる。

  • 機能も実装できるか不安というのを言って1ヶ月くらい経っている気がして、自分の実装力のなさに、嫌悪感でいっぱいになる。

  • 今までの自分であれば、嫌悪感でいっぱいのまま終わっていたけれど、もう一人の自分が、実装力足りないのは事実。それを受け入れて少しずつでもいいから進めていくしかない、と受け入れようとする気持ちが芽生えている気がする。

  • キータのイベント面白かったなあ。やめ太郎さん、想像していた方と全然違くて、若くてびっくりした。おっしゃっていることがちょいちょいクスッと笑えてやっぱり面白かった。

  • 「キータ=プログラミングに関する記事の投稿」としか知らなかったので、今回のイベントを通して、新しい発見があって新鮮だった😍

覚書(12/29計画の見直し)

(1)やるべきこと (2)やりたいこと (3)やれること

(1)やるべきこと

  • 卒業要件の完成

(2)やりたいこと

(3)やれること

メンタル:楽しみながら、ゲーム感覚でいく🎮😎

時間で区切り(達成すればよし)
  • PHP 一日15分以上

  • オリジナルアプリ 1日1時間以上

追加実装のミニアプリを作り、引き出しを増やす
優先順位 内容(機能) 締め切り 達成度
1 AWS S3 12/18 完了(フリマアプリ)に実装)
2 AWS EC2 12/24 完了(フリマアプリに実装)
3 ウィザード形式 12/27 完了
4 SNS認証 12/28 完了
5 複数条件検索 12/29 完了
6 タグ付 12/31 完了
7 画像プレビュー 1/2 完了※フォーク
8 複数枚写真OK 1/4 完了※7に追加実装
9 コメント機能(即時更新) 1/8 完了
10 クレカ登録 1/10
11 パンくず 1/14
12 日本語エラー 1/18



身に付ける力(直近)

  • PHP7

  • Docker


身に付ける力(ゆくゆく・覚書)

  • ドメイン駆動開発

  • 環境構築

  • 環境変数などのOS知識

  • バージョン対応力

  • データベースをインポートする力・エクスポートする

  • GitHubActions×OpenAPIGenerator(APICilent)