20201231_アウトプット(タグ付機能アプリ・新しいgem)

アウトプット画像

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

  • タグ付機能アプリ 6時間30分 
    👉新しいgemの実践・完成✨

  • オリジナルアプリ 1時間
    👉どうやったらカウント機能付けられるか

  • PHP勉強 15分



新しい発見 

新しいgemについて

昨日、インストールしてみた新しいgem。
今日から、アプリで使ってみた。

rails_best_practices👉綺麗で読みやすいコードか確認できる

実践!

XXX@XXXnoMacBook-Air tagtweet % rails_best_practices .
Source Code: |====================================================================================|
/Users/XXX/projects/tagtweet/app/helpers/tweets_helper.rb:1 - remove empty helpers
/Users/XXX/projects/tagtweet/config/environments/test.rb:8 - remove trailing whitespace

Please go to https://rails-bestpractices.com to see more useful Rails Best Practices.

Found 2 warnings.

ヒットした2つのエラーについて調べてみたところ、

  1. リロード時間を減らすためにも空のhelpers は使わないのであれば削除すること

  2. 空の行を削除すること

という意味だと理解。

今回helpersについて削除してみた。空の行も削除した。

remove empty helpersについては何故消すのかはっきりした理由(メリット・デメリット)を見つけられず。

今回ミニアプリだったので消してみたけれど、helpersについては目に見えないけれど内部で動いている処理だと思うため、今後は消すかどうか最後の方に判断してもいいかもとも思った。

コマンド実行して、問題がないと、No warning found. Cool!って出てくるから嬉しかった。



brakeman👉SQLインジェクションXSSなどの脆弱性に繋がるコードがないか確認できる

実践!

XXX@XXXnoMacBook-Air tagtweet % bundle exec brakeman -A -w1

(省略)

== Overview ==

Controllers: 1
Models: 1
Templates: 2
Errors: 0
Security Warnings: 1

== Warning Types ==

Missing Encryption: 1

== Warnings ==

Confidence: High
Category: Missing Encryption
Check: ForceSSL
Message: The application does not force use of HTTPS: `config.force_ssl` is not enabled
File: config/environments/production.rb
Line: 1

(補足)オプションでつけている-A-w1の意味ついて。
-Aは全てのファイルから探す。
-w1は全ての警告を出す。(1~3まであって3の高レベル警告だけ出す等も自分で指定できる)


オプションはこのサイトを参考にした。 brakemanscanner.org


ヒットした1つのエラーについて調べてみると、「HTTPプロトコルでも通信できるようになっているけどいいの?」という内容だと理解。

Railsガイドより(エラー内容の原因を調査)

Action Controller の概要 - Railsガイド

Railsガイドより


HTTPSプロトコルHTTPプロトコルの違いは、HTTPSの方が暗号化されて情報が送られるのでより安全になる。
HTTPSでデータがやりとりされた方がいいと判断したのでエラーメッセージにあったコメントアウトを外した。
(勉強になった)


先ほどと同じように、問題がないと、No warnings foundって出てくるので嬉しかった。



2つのgemについて

実際に入れてみてどちらも良さそうだったので、今後のRailsアプリ作成時の必須gemの仲間入りにしようと思った。


(1)まずはgemを使ってエラーを見つけたら解決できるようになる 👉今日できたこと。 (2)解決できるようになったらチェックを自動化する 👉次回、チャレンジしてみよう☺️



memberとcollectionの違いについて

  • ルーティングに設定するmembercollectionについて復習になった。

  • 「member」は、「resources以外のメソッドを追加したい」且つ「id情報を伴うURIを生成したい」時に使用。👉購入機能など(特定必要)

  • 「collection」は、「resources以外のメソッドを追加したい」且つ「id情報を伴わないURIを生成したい」時に使用。👉検索機能など(特定不要、結果を表示させるのみ)

  • ”resources以外のメソッドを追加したい”というところが一番しっくりきた。7つのアクションの時には、自動でアクションを割り振る。idも必要か自動で判断してくれる。

  • なので、7つのアクションの中に入れ構造にすることによって、「検索した後に詳細」「検索した後に削除」等が実現できるのかと復習になった。

オリジナルアプリ

  • whenneverという定期実行してくれるgemを発見。AWSのデプロイの時に使ったCapistranoとの相性も良いとのこと。

github.com



PHP

switch文について。
その都度、breakが必要なことが勉強になった。

 <?php

    // 変数$numを定義し、好きな数字を代入してください
    $num = 0;
  
    // 変数$remainderを定義し、変数$numを3で割った時の余りを代入してください
    $remainder = $num % 3;
    // switch文を用いてください
    switch ($remainder){
    case 0:
      echo "大吉です。";
    break;
    case 1:
      echo "中吉です。";
    break;
    case 2:
      echo "小吉です。";
    break;
   default:
      echo "凶です。";
    break;
    }
  ?>

感想

  • 今年を振り返ってみると、プライベートも会社も新しいことに色々チャレンジした一年だった。
    (プライベート:プログラミング・ICL・歯列矯正、 会社:新しいネットワークの構築・場づくり・仕組みの提案等)

  • プログラミングを始めてよかったことは沢山あるけれど大きく3つ良いことがあった。

(1)自分の弱さに向き合う機会が多いこと。
  • プログラミングは思うようにいかないことだらけだった。

  • しかし、その機会が多いのでどうしたらいいかと試行錯誤する中で、他人との比較癖があったこと、弱い自分も受け入れるのが下手くそだったことに気がつけた。

  • 今も、癖で、その感情が発動する事があるけれど「あ、その癖が発動しているから、気をつけよう」と自分の感情に対して外から見られるようになった。注意できるようになった。
    (以前は、それに気がつけず、苦しみの中にいた感じだったため、改善)

(2)良い人に巡り会えたこと。
  • テックキャンプのスタッフや仲間に出会えたこと。

  • うまくいかない時に色々弱音を吐いてきたけれど支えてくれたり、困った時に助けてくれた。

  • 今まで家族と会社の繋がり以外、ほとんどなかったので、それ以外の方の価値観に触れられたことも良い刺激になっている。

  • このブログやTwitterを始める事によって、銭神さんや岡山さんなど、考え方に共感して憧れるエンジニアに出会えたこと。少しでも繋がりをもてたこと。挫けそうになったときの自分の励みに繋がっている。

(3)好奇心が尽きない環境なこと。
  • プログラミングは「どういう意味?」「何故?」「もっと知りたい」だらけなこと。

  • 今も調べても分からないこともあるけれど、数ヶ月後みると以前よりも意味がわかるようになっていたり(最近だと自動化・デプロイ・環境構築・gemあたりが特に感じる)好奇心旺盛な自分にとっては飽きないので面白い。

  • あと、調べた結果、形になるのも面白い。



覚書(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
9 コメント機能(即時更新) 1/8
10 クレカ登録 1/10
11 パンくず 1/14
12 日本語エラー 1/18



身に付ける力(直近)

  • PHP7

  • Docker


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

  • ドメイン駆動開発

  • 環境構築

  • 環境変数などのOS知識

  • バージョン対応力

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

  • GitHubActions×OpenAPIGenerator(APICilent)