目標を立てるのが楽しくなる「ザ・コーチ」を読んで - ゆとりの読書感想文

こんにちは!

突然ですが、「夢」「目的」「ゴール」「目標」「ビジョン」がなんなのか、説明できますか?または、これらがあなたの人生において確立していますか?

今回は「ザ・コーチ 最高の自分に出会える「目標の達人ノート」」を読ませていただきました。 あれ、なんかタイトル嘘っぽい…??って気もしますが、めちゃくちゃためになった、感動した!

Amazon

【Rakuten】

ちょこっと読書感想文

目標を立てるのは難しいけど、それ以上の効果がある気がしてきた

私は仕事でもプライベートでも目標を立てるということがとても苦手です。年度始めは今年度の目標なんかをたてねばならぬ時期ですが、苦痛で苦痛で。目の前のことに全力で取り組めばいいだけじゃないのか、と思っている人間です。

ただ、実際、常に目の前のことに全力で取り組めているかというとそうではなく、この本を読んで改めて目標というか、夢やヴィジョンの大切さを痛感しました。

この本は読みやすい

この本は小説仕立てになっており、本を読むのが苦手な私でもすいすい読めるようになっています。1人の営業マンが公園で老紳士と出会うところから物語は動き出し、その会話の中で徐々に目標の達人となるヒントを得ていく、といったあらすじでしょうか。

この本を読んでいていいなと思ったところは、主人公の目線で自分に対しても投げかけがなされているように感じられるところだと思います。目標の達人となるべく、主人公は各章でステップアップ的に宿題を与えられていきます。同じように取り組んでいくことで主人公と一緒にステップアップしていけるつくりになっているようです。私はというと読み物として面白くどんどん読み進めてしまいましたが…笑 これから読むという方はぜひ主人公と一緒に課題に取り込んでみるのがいいと思います。

こんなキーワードが心に残った

私が特にためになったなーというキーワードたちです。

  • 夢、目的、ゴール、目標、ビジョンとその関係性
  • 目標に対するブレーキ
  • 会社の目標と社員の目標

詳細はネタバレになってしまいますので、気になった方はぜひ本書をお手にとってみてください!

結び

この本に出会って私も夢を考えてみました。

私の夢は「ゆとりのある生活を送る」ことです。夢を実現するには夢をイメージするところから。

シンプルなひとりブレインストーミングツール「S-BRST」をリリースしました。

こんにちは!

2019年3月30日に、「S-BRST」というWebサービスをリリースさせていただきました!👏

www.toriaezu-brasto.tk

今回は、「S-BRST」についてや作った背景などをご紹介させていただければと思います。このサービスに興味をもってもらえたり、これから個人開発に臨む方の参考になれば嬉しいです。

ひとまずなにそれ?

「S-BRST」はひとりブレインストーミングツールです。ブレインストーミングとは、あるテーマに対して頭の中にある全てを出し尽くすように文字に起こしまくる発想法の1つです。

「S-BRST」では、ブレストしたいことと制限時間を設定して、あとは思いつく限りの答えをタイピングorフリックしまくるという超シンプル設計です。あとは、ブレストした結果をテキストでクリップボードにコピーしたり、TwitterFacebookに投稿できる機能もあります。

ちょっとだけ発展的に、ブレストした結果をカテゴライズして考えをまとめやすくできる機能なんかも作りました。

なんで作ったの?

もともと何かWebサービスを作りたいなって思ったんですね。プログラミング技術を身につけたかった。でも何つくろうかと。

仕事でもアイデア出しするときや思考整理するときに紙とペンでブレインストーミングをすることが多かったので、とりあえずブレストしてみるかと思ったのですがその時あいにく紙もペンもなく、スマホとPCはある。メモ帳アプリでやってはみたもののなんか集中できない。

もしかするとおんなじように困っている人もいるかもしれない、ならひとり用のブレインストーミングツールを作ってみよう!ということで開発に踏み切ったのでした。

コンセプトとかあるの?

コンセプトは「Your answer is in you.」です!「答えはあなたの中にある」ですね。

ブレインストーミングは本来、複数人でアイデアを出し合う会議手法なのですが、私は個人的にひとりでやるブレインストーミングが好きです。ひとりでやっても考え方が一通りになってしまうから効果がないなんて言われることもありますが、やってみると意外にも色々な角度からのアイデアがでてくることもあり自分でも驚きます。多分、こうやってアウトプットされるまで自分でも認識していない考えが人間の中には存在するんだと思います。ひとりブレインストーミングは、そんな自分がまだ認識していない自分の中に眠っている自分の求めている答えを引き出す、優れた手法の1つだと思っています。

こだわりは?

シンプルであることです。 「S-BRST」の"S"の文字にはいくつかの意味を持たせていますが、その1つが"Simple"です。ユーザーがブレインストーミングだけに集中できるように画面の項目や導線は極力シンプルに作っていますし、これからもそれに気をつけながら機能を拡充していきたいと思っています。

最後に

もし、少しでも興味を持たれた方は、ぜひ一度「S-BRST」をお試しになってみてください! 屈託のないご意見もお待ちしております。

また、今後も月一くらいでS-BRSTのサービス状況や取り組みを紹介していきたいなと思っています。個人開発を始めようとしてある方の良きか悪きか参考になれば嬉しいです。

「0秒リーダーシップ」を読んで - ゆとりの読書感想文

こんにちは!

社会人になり幾星霜、気付けば若手とも呼ばれなくなってきたので、ステップアップのためにもリーダーシップを学んでみようということで、ピョートル・フェリークス・グジバシさんの「0秒リーダーシップ」を読ませていただきました。

0秒リーダーシップ:「これからの世界」で圧倒的な成果を上げる仕事術

0秒リーダーシップ:「これからの世界」で圧倒的な成果を上げる仕事術

今回はこちらの読書感想文をば。

さくっと感想文!

「リーダーシップ」は「リーダー」だけが必要なのではなく「誰もが」発揮すべきスキルであり発揮できるスキル、という考え方がステキでした。いやたしかにそう。 この本では、色々な世代・立場の人が発揮するリーダーシップが紹介されていました。新人が発揮したリーダーシップから社長が発揮するリーダーシップまで。結構具体例。著者のピョートルさんの例や、その経歴の中からピックアップされた例もあり、Googleの例も多く紹介されていて、納得感だったり臨場感だったりはいい刺激につながりました。 きっとこの本を読む人は誰でも明日から実践できるリーダーシップ(のトレーニング)が見つかるんじゃないかな、と思います。

こんな人にオススメしたい!

  • リーダーとして周りを引っ張っていく立場の人
  • これから周りを引っ張っていく人間になりたい人
  • 少しでも自分の所属するコミュニティをよくしたい人

特に3つ目の気持ち大事。

特に心に残った3つの文章

日常のどんな瞬間でも 、ちょっとしたことで 「こうしたほうがいいんじゃない?」という提案を繰り返していれば 、リーダーシップのトレ ーニングになります。

私の中ではこれが核心。まさにこれなんだろうな。 リーダーシップっていうのは、個人やチームをいい方向に引っ張っていく力なんだと思います。例えば「周りが邪魔に感じちゃうから歩きスマホやめた方がいいよ」とか「健康のために軽く運動した方がいいんじゃない」とか、些細なことでもその人そのチームをよくするための言葉をアウトプットできる力はリーダーシップなんだろうし、そういうことをする人は役職関係なく「リーダー(導く人)」なんでしょう。

他人から学び 、経験から学び 、振り返りから学ぶ 。誰からでも 、どんなことからでも学びを得る 。

自分が一番変わっていかないとやっぱり示しがつかないというか、口だけの人にはついて行きたくないですよね。いい方向であるにせよ悪い方向であるにせよ、変わること、変わろうとすることがリーダーシップを発揮する条件の1つです。 変わるにはインプットが必要です。この文章は、インプットのソースはどこにでもあるということを記してます。それをインプットだと捉えることが大事ということですね。全てが学びの対象と捉えることで、「変化」のチャンスが無限に広がることをこの文章から感じました。

リ ーダ ーシップは「空気を読んで 、空気を壊す」という一連のアクションです 。

この文章は、私が普段意識していることと一緒だった、という点で心に残りました。 イケイケの空気のときに敢えて逆説的な発言をしてみる、とか、重い空気のときに敢えておどけてみせる、とか。 単に天邪鬼な側面もあるのですが、そこから何か違うものが産まれるんじゃないかな。

結び

「リーダーシップ」とは「変化を導く行動力」と見つけたり〜。

「devise」+「omniauth-facebook」on Rails 5.2.2でFacebookアカウントログインを実現してみた

f:id:at-946:20190216091121j:plain

Introduction

こんにちは。ブログを開いてくださりありがとうございます。

今回はこちらの記事のFacebook ver.です。

「devise」+「omniauth-google-oauth2」on Rails 5.2.2でGoogleアカウントログインを実現してみた - @Blog

前の記事と重複するところもありますが、あしからず。

開発環境の前提はこちらです。

Rails on Docker環境を最速で整える(ちょっとリリースを見据えて) - @Blog

1. 必要なgemをインストールする

今回はdeviseomniauth-facebookの2つのgemを利用します。

deviseはユーザー登録で超有名なgemですね。メールアドレス&パスワードでの認証などもできますが、今回はOmniauthだけに利用します。 github.com

omniauth-facebookFacebook認証を簡単にrailsアプリで利用できるようにするgemです。 github.com

まずはこの2つのgemをインストールします。2つのgemをGemfileに追記してbundle installするためにコンテナをビルドします。

/Gemfile

gem 'devise'
gem 'omniauth-facebook'
$ docker-compose -f docker-compose.dev.yml build

2. deviseでユーザーを管理する

まずdeviseのユーザー管理の準備をします。deviseサイトのReadmeに沿ってUserモデルを作っていきましょう。

$ docker-compose -f docker-compose.dev.yml run web rails g devise:install
$ docker-compose -f docker-compose.dev.yml run web rails g devise User

この時点でマイグレーションファイルができます。 デフォルトで作られたマイグレーションファイルだとメールアドレスでユーザーを管理するようになっており、omniauthでのユーザー管理の記述がない状態なので、マイグレーションファイルを書き換えます。最終的には以下のような状態になっていればOKです。

/db/migrate/YYYYMMDDhhmmss_devise_create_users.rb

class DeviseCreateUsers < ActiveRecord::Migration[5.2]
  def change
    create_table :users do |t|
      ## Trackable
      t.integer  :sign_in_count, default: 0, null: false
      t.datetime :current_sign_in_at
      t.datetime :last_sign_in_at
      t.inet     :current_sign_in_ip
      t.inet     :last_sign_in_ip

      ## OmniAuth
      t.string  :uid,       null: false
      t.string  :provider,  null: false
      t.string  :email,     null: false
      t.string  :name

      t.timestamps null: false
    end

    add_index :users, :uid
  end
end

Trackableは最新のログイン日時などを管理する機能です。Omniauthのところに記載しているものがFacebookアカウントから取得したい情報です。 uidFacebookアカウントに一意に設定されている値でFacebook認証後のレスポンスデータから取得ができます。 providerは他のOmniauth(TwitterGoogleなど)を利用するときにuidが万が一被ったとしてもユーザーを一意に識別するために管理しておきます。 emailnameはオプションですが、レスポンスデータから取得が可能なので今回お試ししてみます。 他に取得できる情報はこちらにまとまっています。

GitHub - mkdynamic/omniauth-facebook: Facebook OAuth2 Strategy for OmniAuth

ユーザーをDBから検索する場合はuidを検索することになりそうなので、検索性能をあげるためにインデックスを張っておきます。

ここまで準備ができたらDBをmigrateします。

$ docker-compose -f docker-compose.dev.yml run web rails db:migrate

3. facebook for developersの登録をする

まず、facebook for developersでappを登録します。 登録自体はこちらの記事を参考にさせていただきました。ありがとうございます!

requlog.com

appの登録が完了したら、メニューの中に「プロダクト」というカテゴリがあるので、そこから「Facebookログイン」を追加します。

「開発中ステータス」の場合はこれで設定完了! 「開発中ステータス」の場合は、http://localhostからのアクセスは登録不要で動作してくれるようになっているのです。 「設定 > ベーシック」からapp idapp secretを取得できたらRailsアプリの方に登録します。

やり方は色々あると思いますが、Rails 5.2.2ではcredentialsという変数を暗号化して保持する機能があるのでそれを利用します。 credentialsを編集するためにはediterがインストールされている必要があるので、まずはコンテナにvimをインストールするためにDockerfileに追記をしてコンテナを再ビルドします。

/Dockerfile

RUN apt-get install -y vim
$ docker-compose -f docker-compose.dev.yml build

ビルドが完了したら以下のコマンドを入力してcredentialsを編集モードで立ち上げてクライアントIDクライアントシークレットを変数として登録します。

$ docker-compose -f docker-compose.dev.yml run -e EDITOR="vim" web rails credentials:edit
facebook_oauth:
  app_id: XXXXXXXXXX
  app_secret: XXXXXXXXXX

devise側で設定値を読み込むように設定します。

/config/initializer/devise.rb

Devise.setup do |config|
  config.omniauth :facebook,
    Rails.application.credentials.facebook_oauth[:app_id],
    Rails.application.credentials.facebook_oauth[:app_secret]
end

4. Userモデルにdeviseモジュールを適用する

2でTrackableとOmniauthを利用すると言いましたが、Userモデル側にもそれらを使うことを宣言しなくてはいけません。 デフォルトでdatabase_authenticatableregisterableなどのdeviseモジュールが適用されるように書かれていると思いますが、以下の内容に書き換えます。

/app/models/user.rb

class User < ApplicationRecord
  devise  :trackable,
          :omniauthable, omniauth_providers: [:facebook]
end

これでTrackableと、/config/initializer/devise.rbで定義したfacebookを用いたOmniAuthがUserモデルに適用されました。

5. コールバック処理を用意する

ここでは、Facebook認証がOKだったときにGoogleからのレスポンスを受領してその後の動作を決めるコールバック処理を作っていきます。 まずdeviseのcontrollerを編集するために、以下のコマンドを実行します。

$ docker-compose -f docker-compose.dev.yml run web rails g devise:controllers users

これによって、/app/controllers/users/ディレクトリが生成されたはずです。 この中にomniauth_callbacks_controller.rbというものがありますが、コールバックの処理はここに記載していきます。

/app/controllers/users/omniauth_callbacks_controller.rb

class Users::OmniauthCallbacksController < Devise::OmniauthCallbacksController

  def facebook
    token = request.env['omniauth.auth']
    @user = User.find_by(uid: token.uid, provider: token.provider)
    if @user.blank?
      @user = User.create(
        uid:      token.uid,
        provider: token.provider,
        email:    token.info.email,
        name:     token.info.name
      )
    else
      @user.update(email: token.info.email) if @user.email != token.info.email
      @user.update(name: token.info.name) if @user.name != token.info.name
    end
    
    sign_in_and_redirect @user, event: :authentication
  end

end

Facebook認証が完了すると、request.env['omniauth.auth']からFacebookからのユーザー情報を取得できるようになります。 facebook関数の2行目でそのユーザー情報からuidproviderを取得して登録済みのユーザーかDB検索をしています。

もし未登録の場合、User.createで新しくユーザー登録をしてsign_in_and_redirectでログイン処理を実行します。

登録済みの場合は、emailまたはnameが更新されている場合は更新し、ログイン処理を実行するようにしてみました。 これでログインの都度、ユーザー情報を最新化することができます。

最後にFacebook認証への遷移とコールバックのルーティングの設定を追加します。

/app/config/routes.rb

Rails.application.routes.draw do
  devise_for :users, controllers: { omniauth_callbacks: 'users/omniauth_callbacks' }

  devise_scope :user do
    delete 'sign_out',  to: 'devise/sessions#destroy',  as: :sign_out
  end
end

6. ログインボタンを置く

あとはログインボタンを配置するだけ。

<% if current_user.blank? %>
  <%= link_to "Sign in with Facebook", user_facebook_omniauth_authorize_path %>
<% else %>
  <%= link_to "Sign out", sign_out_path, method: :delete %>
<% end %>

deviseのおかげでcurrent_userにログイン中のユーザーがセットされるようになるので、if current_user.blank?で未ログインの時のみログインボタンが、ログイン中はサインアウトリンクが表示されるようにしてみました。

Conclusion

Facebookアカウントログインをいれることができました! メールアドレス&パスワードだと、送達確認とかパスワード変更とか意外とちゃんと運用しようとすると面倒ですよね。 その点、OmniAuth系は使い勝手が良さそう!参考にしてもらえたら嬉しいです。

「devise」+「omniauth-google-oauth2」on RailsのGoogleアカウント認証を「RSpec」+「Capybara」でテストしてみた

f:id:at-946:20190210131713j:plain

Introduction

こんにちは。 ブログを開いてくださりありがとうございます。

今回はこちらの続きです。 at-946.hatenablog.com

上の記事ではGoogleアカウントのOmniAuth機能を使ってログイン機能を実装しました。 今回はその部分のテスト自動化をしちゃおうっていうブログです。フレームワークは大好きな「RSpec」+「Capybara」で。

テスト自動化の環境構築は at-946.hatenablog.com で取り上げてます。

では早速手順をメモっていきます!

続きを読む

「devise」+「omniauth-google-oauth2」on Rails 5.2.2でGoogleアカウントログインを実現してみた

f:id:at-946:20190210133144j:plain

Introduction

こんにちは。ブログを開いてくださりありがとうございます。

Rails5.2.2でGoogle認証によるログインを実現してみよう!ってことでそのメモです。 やることは意外と多いですがつまづくポイントはあんまりなかったみたいなので、気軽に試せました。 前提は以下の記事の環境が構築されていることです! at-946.hatenablog.com

続きを読む

エレベーターピッチを使って手軽に自分のアイデアの価値を認識する

f:id:at-946:20190211104458j:plain

Introduction

こんにちは。 ブログを開いてくださりありがとうございます。

大きなプロジェクトでも個人の開発でも、「これ、なんのためにやってるんだっけ?」となってしまうこと、ありませんか? そういったものの背景には

  • そもそも価値を見いだせていなかった
  • やってるうちに価値がわからなくなっていった

などがあるんだと思っています。 これらはアイデア段階でしっかりと価値を定義しておくことで回避できると思います。

ぼくは個人開発する場合、コーディングを始める前にエレベーターピッチ(Elevator Pitch)を作ることで短時間でアイデアの価値を定義しています。 これによって、開発中に「あれ?」と手を止めることが格段に少なくなりましたので、今回は私流のエレベーターピッチの進め方をまとめます。

続きを読む