20200928_アウトプット
学んだこと(railsの復習・MVC)
ルーティング
get "posts/index" => "posts#index" get "posts/new" => "posts#new" get "posts/:id" => "posts#show" post "posts/create" => "posts#create"
「get "posts/:id" => "posts#show"」→詳細ページに飛ぶ時、URLにテーブルのidを利用する。
なお、「get "posts/index" => "posts#index"」と混同してしまうため、idを指定するURLは、同じHTTPメソッドgetの「index」や「new」より下に書く。(ルーティングは合致するURLを上から探すため。)
コントローラー
def show @post = Post.find_by(id: params[:id]) end
Postモデルの中から、ユーザーが入力した値に対応するidを見つける→パラムスの箱からidを元に取り出したpostデータを、@postに代入する。(カラムを指定する時は「カラム名:」と書く。)
@postのようなインスタンス変数にすることでビューにも使えるようにする。
def create @post = Post.new(content: params[:content]) @post.save redirect_to("/posts/index") end
ポストモデルにおいて、「カラム名がコンテント」の中にある、「ユーザーが入力した値(コンテント)が入っている箱(パラムス)」を生成する。 保存する。(コンソールを利用してもOK)
「create」のビューを作るのではなく、保存された時にリダイレクトtoメソッドを使って、()の中に飛びたい先のURLを書く。
def index @posts = Post.all.order(created_at: :desc) end
オーダーメソッドにより並び替えができる。
「created_at: 」はカラム名。
「:desc」(降順=新しいもの順)、「:asc」(昇順=古いもの順)
イメージとしては、上の階に行くほど積み重なる知識の階段を想像した。1階から2階に行く時は昇っていくので古いものから新しいものという意味、2階から1階に降りる時は、新しいものから古いものへ、という順番で理解した。
ビュー
<% @posts.each do |post| %> <div class="posts-index-item"> <%= link_to(post.content, "/posts/#{post.id}") %> </div> <% end %>
eachメソッドを使って、取り出している。
link_to(クリックする対象,"クリックして飛ぶURL先")で指定できるrailsのメソッドなので<%で囲む。
<%= form_tag("/posts/create") do %> <div class="form"> <div class="form-body"> <textarea name="content"></textarea> <input type="submit" value="投稿"> </div> </div> <% end %>
ネーム属性が、パラムスのキーになっていた!
フォームタグは、railsのメソッドなので<%で囲む。
フォームに入力されたデータを送信することができる。「form_tag(送信先のURL) do」のように送信先のURLを指定する。
doとendの中に、フォームを作る。(divなどもその中へ入れ込む)
- application.html.erbのなかに、body要素にあたるheaderをいれる。「<%= yield %>」の中に、各ビューが吸い込まれている。
パラムスについて
パラムスは以下の2通りの使い方がある。
「:〇〇」を使ったルーティングのURLから値を受け取る。
「name="〇〇"」がついたフォームの入力内容(つまりビュー)から受け取る。
理解が浅いところ(つみ残し)
includes(:user)※コントローラー →解決
.merge(user_id: current_user.id)※コントローラー →解決
redirect_to action: :index unless user_signed_in?※コントローラー →解決
プライベートメソッド※コントローラー →解決
<%= form_with(model: @tweet, local: true) do |form| %>※モデル
感想
モデル.newでインスタンス生成していたり、パラムスというメソッド(ユーザーが入力した値をいれる箱)を使って、モデルから値を取り出していたり、意味がわかって面白かった。
20200927_アウトプット
今日学んだこと(MVCの復習)
ルーティング
- 対応表の役割を果たす(このアクションの時は、このURLへ行く)
- devise_for :users →実は順番も大事。上から読み込まれるため、ユーザーのログイン前提のアプリケーションの時などはこの情報(デバイス)を一番上に書く。
- root 'tweets#index' →ローカルホストを立ち上げた時に「レイルズへようこそ!の画面が出てくるけれど、それとインデックス画面を紐づけている。これがないと「ようこそ!」が出続ける。なおこの書き方は省略している。そこを極めるにはRailsガイドに載っている。
- Railsガイドは最新版はネットに載っているけれどそれ以前のバージョンは購入しないとわからない。
- 調べたい時に「〇〇 Railsガイド」と調べるのがおすすめ。
- Railsは日本人のまつもとさんが作ったということもあり、ガイドが日本語で充実している。他の言語は、 GitHubなどでガイドを検索(英語)することが多い。
- resources :tweets do →resourcesが引数で、:tweetsがシンボル(わかりそうでわからない)→結果、「rails routes」でコマンド実行した時のURIにあたる部分がシンボルで、「Prefix Verb」や「Pattern」や「Controller#Action」部分が引数になることがわかった。
コントローラー
- コントローラーで定義しているアクション名と、ビューファイル名は同一にする。
- createや、update、searchの際などデータを載せて運ぶアクションの時はパラムスを利用。(例:Tweet.create(tweet_params))
- パラムスの中には、シンボルを使ってデータを格納する(例:params.require(:tweet).permit(:image, :text).merge(user_id: current_user.id))
- N+1問題を解決するための”includes”はコントローラーに定義する。
モデル
- アソシエーションはモデル同士をくっつけること。
- その際に、「has_many :tweets」「belongs_to :user」ということを各モデルに記載することで、紐づく。
- バリデーションはモデルに書く。(”この入力は受け付け不可、データベースに入れないです!”の役割を果たす)
ビュー
- <%= link_to '詳細', tweet_path(tweet.id), method: :get %>→「rails routes」で出たプレフィックスやid情報を載せながら、リンク先を設定する
ターミナルのコマンド
-
rails db:create (作る)
-
rails db:migrate:status (ステータスの確認)
-
clear (行をスッキリさせたい時におすすめ)
-
history (コマンド履歴を検索)
理解が浅いところ(つみ残し)
- includes(:user)※コントローラー
- .merge(user_id: current_user.id)※コントローラー
- redirect_to action: :index unless user_signed_in?※コントローラー
- プライベートメソッド※コントローラー
- <%= form_with(model: @tweet, local: true) do |form| %>※モデル
ブログを始める前のアウトプットが少なかった期間は、理解が浅いと実感。
今までわかっていたようでわかっていなかったことの理解が進んだが、エラー問題を通して、もう少し理解を深めたい。(まだ、知識の「引き出し」状態になってない。)
感じていること
- 初めて、昨日のアウトプットに⭐️と、キータの記事に「LGTM」をつけてくれた方がいて、すごく嬉しかった。(ありがとうございます。)
- 今日のチームミーティングでは、みんなの考える「幸せ」を聞いた。それを実現するためにはどうしたらいいのかという話の際に、本音を聞けて、たくさん笑って楽しかった(笑) カラフルは今度読んでみよう。
- 仲間が言っていた「自分の心の奥底で感じている”やってみたい”を無視しないこと」という言葉が素敵で自分に取り入れたいと思った。
- 今日は、Rails勉強会だったり、ずっとお世話になった方の最後の夕礼があったり、自主的なアウトプット会を3セットやったり、チームミーティングがあったり、濃い1日だった。一緒に勉強する仲間がいるとモチベーションが全然違う。
20200926_アウトプット・今週の振り返り
今日学んだこと
- エラーをきっかけにutf8やutf8bm4やdatabase.ymlについて学びました。根幹となる部分を深堀しながら、理解を深めることができてよかったです。
- 7つのアクション①index②new③create④show⑤edit⑥update⑦destroy(showとupdateが即座に答えられず悔しい!笑 完全に覚えました。質問を投げかけてくれて感謝です。)
理解が浅いところ(つみ残し)
- ハッシュ・シンボルの概念
- タグ・セレクタ・id
- ログアウトの時だけ、「httpメソッド」が「delete」されること。→解決!getの時だけ省略できる。
今週の振り返り
学習に対する戦略について、設定するだけではなく、振り返りが大事だと考えました。なので、大体1週間ごとに、ブログに取り入れようと思います。
現在の戦略
- (HOWよりも)WHYを大事にする
- 作業時間を確保する(平日4時間、休日10時間)
- 優先順位を決めて行う(約60%がテックキャンプのカリキュラムを進めること・仲間とのアウトプット、約20%がプロゲートで知識補う、約20%がブログでアウトプット)
達成具合
4連休の途中から、上記戦略をやると決めたので中途半端ですが、
- 6日中、5日達成できた
よかったこと
- 予め作業時間の確保と優先順位を決めることで迷わない。(焦りが減った)
- WHYを大事にすることで、新しい発見が多くあった。知的好奇心が満たされて面白い。(今日学んだutf8のようなことです)
- アウトプットを大事にしているので、インプットばかりのことに比べて自分の言葉で話せるようになった。(細かい単語は出なくても、概要について口で説明できることが増えたのが嬉しい)
悪かったことや壁になったこと
- 休日について、朝の時間を活用できないと「まだ10時間全然行かないや」と精神的に辛い(笑)
- 残業が多くなると、睡眠不足になりがち(体調を崩しては1週間くらいロスしてしまうので、キッパリ諦めて寝るのも一つの手かなとも感じた)
以上です。
今日、尊敬する人が「ピグマリオン効果」について教えてくれたので、私も「プログラマーになった」気持ちで取り組んでいきたいと思います!
また、自分が弱点だと考えていることについて、その弱点から起きる失敗のウエイトはどれくらいなんだろう?と考えて、大したことなければ直す必要ない(それよりももっと長所を伸ばすことにフォーカスした方がいい)という言葉が心に残りました。
あと、まこなり社長が言っていた「意識します」「頑張ります」「気をつけます」は一切信用していない、「仕組みを作れるか」が一番大事なんだという話が、その通りだなと思って、勉強になりました。
上記2つの話を合わせて、
自分の弱点なところ、不得意なところをまずは把握して、それを出さないような仕組みをいかに作れるか、という視点を大事にしていきます。
20200925_アウトプット(バイナリサーチ、attrメソッド)
学んだこと
探索法について
ルビードリル38でバイナリサーチが出てきた。バイナリサーチとは2分割検索のこと。中央の値を見て、検索したい値との大小関係を用いて、左にあるか右にあるかを探していく方法。1から順番に探すよりも選択肢が半分になる。注意点としては「①あらかじめデータをソートしておく事」「②ダブりがない事」が前提となる。
特定のデータを探し出す方法は、いろいろある。
勉強になったことは、
array[center]
の、centerは添字だったこと。return -1
とは、While文において当てはまらなかった値をreturnとして戻り値を返しているだけで、 「-1」でなくても良い。「当てはまるものがなかった」という時に可読性で使われることが多い。
attrメソッドについて
Rubyにおいてインスタンス変数をクラスの外から呼び出して使うには、イニシャライズメソッドで生成しただけでは使えない。以下の方法で定義しないと呼び出せないよ。
attr_reader
ゲッターと同じ意味。(外からの)読み取りOKメソッドを定義する意味。attr_writer
セッターと同じ意味。(外からの)書き込みOKメソッドを定義する意味。attr_accessor
ゲッターとセッターの役割を兼ねたもの。上記3つの方法で、定義する時は、シンボルを使う。(例:
attr_reader :title, :price
)外から呼び出す場合に使えないのであって、"#{@price}円です"と直接参照する時は不要。
Ajax(エイジャックス)について学ぶ
非同期通信とはリクエスト後に、ブラウザが再読み込みされることなく一部分が更新される通信方法のこと!
非同期通信をJavaScriptで行う場合には、Ajax(Asynchronous JavaScript + XML)を使うよ。
積み残し(復習したいこと)
20200924_アウトプット(devise基本)
deviseの基本
deviseとは
ユーザー登録管理機能を簡単に実装するためのgemです。
今回は「新規登録」「ログイン」機能の(本当に基本部分だけの)deviseを作成します。
前提として、
です。
おさらい(ライブラリとRubyGemsとGemって何?)
ライブラリとは、プログラミングにおける拡張機能です。複雑なプログラムが1つのセットになっていて、インストールすることで簡単に実装できるようになります。
RubyGemsとは、Rubyのライブラリを管理するシステムです。RubyのライブラリのほとんどはRubyGemsに集められています。
そして、Gemとは、RubyGemsに集まった、たくさんのGemの一つ一つを指します。今回のdeviseはその中の便利な一つの拡張機能なのです。
その1:Gemfileに記入しよう!
使用するには、Gemfileに記入しましょう。 (一番下に書き足す!)
その2:Gemfileの更新をしよう!(Gemfile.lock)
Gemfileに記入したあとは、バンドルインストールをします。
バンドルインストールとは、gemに追記した後に、実行すると、そのgemに必要な機能を依存関係を解決した状況で一気にインストールしてくれます。
また、どのようなバージョンでインストールしたかをGemfile.lockに記録してくれます。(素晴らしい!)
なお、追加したGemをアプリケーションに反映させるには、下記コマンド後に、サーバーを再起動する必要があります。
その3:このアプリケーションで使用できるようにdeviseインストールしよう!
実は、その2の処理だけではこのアプリケーションで使える状況になっていません。
以下を実行して、アプリケーション内に取り入れましょう。(コロン忘れずに!)
その4:モデルを作成しよう!
ここでdeviseならではの注意点です。
普段であれば、「rails g model user」と実行したいところですが、devise機能を自動生成するには、以下のようなコマンドを実行します。
以下のコマンドを実行することで、主に「モデル」「マイグレーションファイル」「ルーティング」が作られます。(ログイン機能なども生成されます)
その5:テーブルを作成しよう!
その4のおかげで、マイグレーションファイルが生成されます。
そして、その中身にはデフォルトで「Email」と「Password」のカラムをすでに記載してくれています!
今回はそのままカラム追加せず、マイグレートします。
上記を実行すると、カラムが追加されます。(シークエルプロを確認してみてください。)
ここでおさらい (テーブル・カラム・レコード・マイグレーションって何?)
テーブルとは、データベースにある1つのカタマリ(単位)です。
テーブルを作成するには、「カラム」といって、エクセルで言うと「見出し」を設定します。(今回で言うと、EmailとPasswordです。)
「カラム」を設定することで、カラムに対応したデータがそこに入っていきます。
(その1行のことをレコードといいます。)
「カラム」について書く場所が「マイグレーションファイル」です。
「カラム」の設定が終わったら「マイグレート」することで、シークエルプロ(パンケーキ)に見出しが設定されます。
その6:devise用のビューを作成しよう!
さて、indexというホーム画面があったとして、そこに「新規登録」「ログイン」というボタンがあった時、そこをクリックすると、「新規登録」には、Emailとpasswordを入れる欄があって‥と押した先にページが広がっていますよね。
deviseをインストールした時には、裏側でそのページを作ってくれるものの、もしその見た目をカスタマイズしたい場合には、自分でターミナルの実行をします。
上記を実行することで、views内に「devise」というディレクトリ(フォルダ)が現れます。その中に、今回でいうと「新規登録」「ログイン」にあたるファイルがありますので、それを編集すれば、見た目をカスタマイズできます!(今回はしません)
です。2つとも、ディレクトリ名は異なるものの、ファイル名は一緒なので、間違えないように気をつけましょう!
ここでおさらい (registrationsとsessionsの違いって何?)
結論からいうと、テーブルに保存されるかどうかです。
- 新規登録=registrations(レジストレーションズ)は、ユーザーテーブルに保存される(つまり、新規登録者としてレコードが追加されていく)
- ログイン=sessions(セッションズ)は、ユーザーテーブルに保存されない(元々ある情報にログインしているだけなので、レコード追加されない)
また、それぞれのルーティングは以下のような意味があります。
- registrations#new(ユーザー登録へのパス)
- registrations#create(ユーザー登録の処理=保存される)
- registrations#destroy(ユーザー登録の削除の処理=データベースから削除)
- sessions#new(ログインページへのパス)
- sessions#create(ログインの処理)
- sessions#destroy(ログアウトの処理)
その7:最後に、deviseならではのヘルパーメソッドを使ってみよう!
deviseならではのヘルパーメソッドとして、「user_signed_in?」があります。
(補足)今回は、モデル名が「user」なので、「use~」から始まっています。始め部分はモデル名にします。
これは、ログインしているかどうか判断してくれるメソッドです。
以下であれば、
- ログインしていたら「ログアウト」のリンクを表示
- ログインしていなかったら「新規登録」と「ログイン」のリンクが表示
されるように設定できます。
その他のポイントとしては、
- リンク先は「rails routes」で確認
- ログアウトの時は、「delete」メソッドを指定する。
です。
こんな形で表示されます!(完成)
まとめ
今回は、deviseについて理解しました。
上記で解説してきましたが、よりざっくりまとめると、
- gemの導入(Gemfileの記入、バンドルインストール)
- deviseの導入(rails g devise:install)
- モデルの作成(rails g devise user)
- テーブルの作成(rails db:migrate)
- ビューの作成(rails g devise:views)
- ヘルパーメソッドの使用(use_signed_in?)
について理解しました。
今まで、RailsのMVCとdeviseのMVCがこんがらがっていたので、頭の整理が出来てよかったです!(かなり、すっきり!)
ベースが理解できたので、これを元にカラムを追加したり、他のヘルパーメソッドをビューに取り入れてみたり、活用していきます。
理解が浅いところ(つみ残し)
- ヘルパーメソッド(フォーム)→解決!(deviseのことをちゃんと理解していなかったことが判明。)
- ハッシュ・シンボルの概念
- タグ・セレクタ・id
- ログアウトの時だけ、「httpメソッド」が「delete」されること。
感想
このdeviseがHTMLにおけるフォームと混ざり、railsのMVCと混ざり、よく理解できていなかったので、どこまでがRailsの役割で、どこからがdeviseなのか理解できてよかったです!
今日は筋トレした後に勉強しました。
いつもより集中できた気がします。
20200922_アウトプット
学んだこと(Rails チャットアップ作成・ruby復習)
RailsにおけるGemfileの管理(バージョンの更新)について
今日一番勉強になったことについて、結論から先に話すと、
- バージョン更新は、「エラーメッセージ」が出たタイミングで、ターミナルのエラーメッセージに従って更新を行う
- なので基本的には、アプリケーション作成のコマンドである「rails _6.0.0_ new ○○(app name) -d mysql」を実行した時の、デフォルトのGemfileでOK
- ターミナル上で「〇〇 -v」で、バージョン確認ができる
ということがメンターさんに聞いてわかりました!
実は、ずっと、
スマートフォンのアップデートと同じような感覚で、Railsやmysql2やrubyなどのバージョンが少しでも変わったときに、取り入れるのだろうか?
作成しているアプリケーションにベストなバージョンはどうやって調べているのか?
ということが調べてもわからなくて、モヤモヤしてました。
エラーが出てくるタイミングとしては、
- newでアプリケーション作成を行ったとき
- 自分で新しい機能を入れたくて、gem追加したとき
- 開発途中に、互換性がないことが発覚したとき(例えば、mysqlであれば、findメソッドで、データベースからデータを引っ張ってくる処理を作っている時にエラーが出るなど)
ということがわかり、すっきりしました。
その他に学んだこと
- GitHubの使い方の復習をしながら(こまめにコミットしながら)フロント実装を進めること
- rubyの復習で、クラス継承があるから、引っ張ってきた元のインスタンス変数を使用出来るのか!と理解。
- READMEの作成(DB設計)
理解が浅いところ(つみ残し)
- ヘルパーメソッド(フォーム)
- ハッシュ・シンボルの概念
- タグ・セレクタ・id
感じたこと
朝の時間を活用できないと、「休日10時間勉強目標」は午後キツイと思いました(笑)
しかし、作業時間と優先順位を決めないでやるよりは、理解度であったり、1日に勉強できる量であったり、カリキュラムの進み具合であったり、以前に比べてよくなったと思います。
今日は、はてなブログにデザインテーマを入れたり、グーグルアナリティクスを入れたり、キャンバというアプリケーションを使ってアイキャッチ画像を作ってみたり、改善してみました(笑)
一部CSSを自分で変更しようと思ったけれど、時間的にすぐには出来なかったので、悔しさがありました。
まだ実行出来ていませんが、勉強を始める前の自分であれば、検証ツールも見ることはなかっただろうと思うと、成長を感じられて嬉しかったです。
改善は面白かったので、時間を見つけて少しずつ、見やすくしていこうと思います。
自分の幸せについて
自分の幸せについて
プログラミング学習を初めて約一ヶ月半が経ちました。
その途中で、
- 他の人とのスキルを比べてしまう
- 転職を考えているが、異動時期を考慮して、職場に迷惑をかけたくないので年末までに次の就職先を決めなくちゃ
上記2つの理由から、焦りを感じて、不安になることがよくありました。
昨日ライフコーチと面談して、新たな気づきを得ることができました。
そこから次の行動に繋げるために、今の自分の考えを整理しようと思います。
ライフコーチから得た気づきについて
- 一つの基準に「自分の幸せ」を入れる(自分の幸せをコップ一杯の水に例えると、そこから溢れた水でしか、他の人を幸せに出来ない)
- 技術力(取り入れる力)→ 自分に自信を持つ→ 向上心 →他者への貢献力 の好循環サイクル (まずは技術力を高めて、自分に自信を持つ!)
- 縦軸が「重要」、横軸が「緊急」の表を思い浮かべてみて、1.重要かつ緊急、2.緊急、3.重要の順で取り組む (重要・緊急どちらでもないものはやらない!)
- 変化を楽しむ
- 自分より優れている人をみた時に「すごい」の一歩先、「どうやっているんだろう」「どうやったら自分もそうなれるだろう」まで、思考を巡らせる →そうすることで、他人と比較ではなく、「自分をどう高められるか」にフォーカスできる
- 自分のスキルよりも、楽しいこと・幸せと感じることに、軸をおいて就職した今の会社は楽しい。 →自分が楽しいとき、幸せと感じる時はどんな時だろう?
自分が幸せを感じる時はどんな時だろう?
まずは、身近なところから、書き出してみようと思います。
外的要因(モノ)
- とろけるような、美味しいお肉を食べたとき
- 種無し巨峰を食べているとき
- 冷やし中華を食べているとき
- コーヒーの香りがしたとき、美味しいコーヒーを味わっているとき
外的要因(旅行・映画)
- 新しい景色をみたとき(特にヨーロッパの旅行に行った時の景色は感動したなあ。ローマのパンテオンに入ったとき、フランスのモンサンミッシェルを見れたとき、スペインのサクラダファミリアの上に登ったりステンドグラスが綺麗だったり…また行きたいな)
- 泣けたり笑えたり面白い映画をみたとき(ショーシャンクの空に、きっとうまくいく、ラミゼラブル、永遠のゼロ、キャッチ・ミー・イフ・ユーキャン、フォレスト・ガンプ、ハドソン川の奇跡、ベストオブメン〜人間の最高〜、僕のワンダフルジャーニー…そういえば最近映画みてないな)
内的要因(状況)
- ぐっすり寝れたとき
- シングルタスクで集中しているとき(何かに没頭しているとき)
- 前に進んでいる感覚を持てているとき
- 主体的に取り組んでいるとき(目に見えないけれど、主体的にコミットした分、そのあとのやりがいや大きい喜びになってかえってくるなあと実感する)
外的・内的要因(人間関係)
- 家族が、自分の体調を心配してくれるとき、悩みに寄り添ってくれるとき、たわいもない話を聞いてくれるとき、自分の気持ちを正直に話すと尊重してくれるとき…どんな時でもそばにいて受け入れてくれる安心感がある
- よりよくするにはどうしたらいいかと常に考えているような人と仕事をしているとき(目的が明確で、目指す方向性も同じ。その目的を達成するために、常日頃努力してて、時には悩むこともあるけれど、この人となら乗り越えられるっていう希望があるとき)
- 時間は有限であることをお互いに意識しているとき(お互いに、相手の時間と自分の時間を使っているという感覚がある人と話している時は、楽しいし、心地が良いし、有意義なことも多いと感じる)
自分の「幸せ」を考えた上で、転職の時はここを大事にしようと思うこと
- 目的や理念が自分にあっていること。(目的を明確にした上で、主体的にコミットするのが好きなため。それがないと、反対に何のために頑張ればいいのかわからないため。)
- その目的を果たすためにどうしたらいいか、どうやったらよりよく出来るかと試行錯誤している人が多いところ。(今の職場に異動してきた時に、そういった方と一年間仕事をしたことがあって、ああしたらいいんじゃないか、こうしたらいいんじゃないか、と自分の気持ちと相手の気持ちを素直に言い合えて、行動に移すのが、凄く楽しかった)
- 自分がホッとできる時間があること。(自分の気持ちに余裕がないときは、上記のような自分が幸せと感じる瞬間がないと思ったため。没頭した後には(仕事が終わった後には)ゆっくり休む時間が欲しい。)
そのためにはどうしたらいいか
- 優秀なエンジニアがいる企業にいくために、自分のスキル(技術力)を高めること。
- 自分に自信を持つために、まずは作業量をこなすこと。一日一歩でもいいから前に進める。
- このブログを活用して「出来たこと」を伝えるなど、小さなことでもいいので自分の自信につながる言葉を発信する。
以上です。
「私にとって一番大事なことは何か」気づかせてくれる方がいて幸せだと思いました。
運が良いことに、ライフコーチの方が、話していて心地が良い方なのです。(テックキャンプは総じて良い方が多いです。)
うまく言葉で言い表せないのですが、自分の軸がしっかりしていて、熱い思いを内に秘めているというか、自分の幸せも大事にしつつ他者貢献の想いに溢れている方です。
いつも本当にありがとうございます。
今日も頑張るぞ!!