【読書】LIFE SHIFT 100年時代の人生戦略
まさかの、現在の小学生が100歳まで生きる確率は2人に1人!!
さらに驚くのは、100歳まで生きる場合、日本の今の仕組みだと80歳まで働かないと金銭面で老後暮らしていけないということ。鬼。。(笑)
2年前??くらいに読んだLIFE SHIFT 100年時代の人生戦略を再度読み直してみました⭐︎
『LIFE SHIFT 100年時代の人生戦略』著者:リンダ・グラットン/アンドリュー・スコット 2016年出版
再度読み直して家族と過ごす時間や親の介護、仕事のスキルなど今後のキャリアについて考えさせられました。
要約&感想
昔は【教育】➡【仕事】➡【引退】の3ステップの人生でしたが、今後は【マルチステージ】と言って仕事の途中で余暇を数年取る人がいたり、新たに学び直したりする人がいたりと色々な人生の選択肢が増える。昔のように一つの会社に属して定年を迎えることなんて滅多になくなるんだろうなーと感じた。
科学の進歩で長生きする分、問題も山積み。。仕事引退後の資金問題にとどまらず、スキル、健康、人間関係といった「見えない資産」をどう育んでいくかが重要とのこと。
フリーランス、ギグ・エコノミー、ノマド生活など働き方もどんどん多様化している中、今後どんな働き方がはじまるのか個人的には楽しみ!! でも、結果重視の社会に日本も転換していくことは確かなはず。
結果を出すのにはもちろん努力が必要。大学まで学んできた20年ちょっとの勉学では、今後もっと変化のスピードが早い何十年の中で働くのは厳しい。だから一生学んでいく人生を送れる人が生涯生き生きと過ごせるのではないか?と思います。
変化の多い時代で不安になりがちですが、一生に一度の人生。後悔したくないのでとりあえず何事も行動して実践する!これをモットーに時間を大切にして人生楽しみます⭐︎
【プログラミング学習で心が折れそうになったときに聞くスピーチ】
「フィヨルドブートキャンプを卒業してプログラマーに、僕はなる」
いきなりすみません。。。
まずは前置きです。
前置き
こちらは、フィヨルドブートキャンプ Part 2 Advent Calendar 2020
の3日目の記事です。昨日はuniversatoさんによるlsコマンドで表示されるファイルのモード(drwxr-xr-x) 〜RubyのFile::Stat#modeとは〜でした。
概要
今年の8月からフィヨルドブートキャンプでプログラミング学習しているYusukeです。
今回、私がプログラミング学習中に心が折れそうになったときに聞くスピーチをご紹介したいと思います(非テック系)。
プログラミング学習を本格的に始めて今日で115日目、知らないことだらけの学習内容の途中、何度も心が折れそうになったりもしましたが、、、いや、実際は折れていたのかも(笑)
そんなときに必ず聞くスピーチがあります!
スピーチ紹介
紹介したいスピーチはオリエンタルラジオの中田敦彦さん(以下、あっちゃん)が近畿大学の入学式でしたスピーチです。
そうです!!書き出しはこの動画テーマからまるパクリしました(笑)
最近、近畿大学のスピーチでは堀江貴文さんやキングコングの西野さん、ピースの又吉さんなど、著名人の方々がスピーチすることで話題になっています。
「オリラジ中田 伝説のスピーチ「三代目J SOUL BROTHERSに、僕はなる」~PERFECT HUMAN誕生秘話~近畿大学工学部(広島キャンパス) 令和元年度入学
」
文書で読みたい方はこちら
「Kindai Picks」
構成
あっちゃんのスピーチは大きく2部構成になっています。
・前半:夢を叶えるために必要な3つの要素
・後半:若い人に会って感動した話
今回は前半部分についてフォーカスして書いていきます。
あっちゃんは、夢を叶えるためについてを「I'm a perfect human」の制作秘話に例えて話しています。
「I'm a perfect human」の前に5曲ボツになっているなんて知らなかったですよね??
スピーチで伝えていた夢を叶えるために必要な要素は下記の3つ。
1. 自分のやりたいことや目標を人に言うこと
2. 人に助けてもらうこと
3. 諦めないこと
この3つは、とてもシンプルですが、実行するにはめっちゃ勇気がいると思うんです。
1つ目「自分のやりたいことや目標を人に言うこと」
現在、私の夢(目標)は「来年4月までにフィヨルドブートキャンプを卒業して転職する」です。 ですが、30代未経験だし、学生時代の友人には学生時代ずっとスポーツしかしてこなかったお前が?無理でしょ?みたいに思われるし(被害妄想)、親からも専門職なんて無理だろうと言われたり。。。
卒業して転職できるのか考えたり、周りの意見を聞くと負の方へ猛ダッシュで走り出します〜〜
また、プラクティスで躓くと自分はやっぱりプログラマーには向いてないのかな〜?とか思っちゃいます…
でもあっちゃんは、歌も踊りもできないのに「三代目J SOUL BROTHERSに僕はなる」(夢を叶えることは正気の沙汰ではないのだ)と言っていて救われます。
確かに、もし歌も踊りもできない人から「センターで歌って踊りたい!」って言われたら普通は無理だろう!ってなりますよね。
そしてあっちゃんのすごいところは常に仮説を立てて、トライ&エラーを繰り返していることです。普通なら恥ずかしくて夢や目標なんて言わず、失敗したらひたすら落ち込みます。
だから、私は恥ずかしいけど冷蔵庫に夢(目標)を書いて行動してます!!!まずはトライ!
これ結構効果があって、妻から「11月までに終わらせようとしていた学習項目終わりそう?」と聞かれ、焦って自分のケツを叩いて学習したりしてります。
2つ目「人に助けてもらうこと」
フィヨルドブートキャンプでは幸いなことに質問できる環境が多数あります。アプリ上のQ&Aはもちろん、毎日開催している座談会、slaksの「wakaranチャンネル」などで気軽に質問できます。そしてありがたいことに回答もメンターや生徒の方々からすぐに頂けて本当に毎回感謝です!!!
ただ質問するのにも勇気がいる。。。
質問の仕方はこれであっているのかな?こんなこともわからないのか?と思われたらどうしよう、、などなど。これ書いていると自分の勇気のなさに落ち込んできます(笑)
でも質問しないで時間を捨てるより、ヒントを得て前に進む方が遥かに効率的と割り切って、人から何と思われようと、失敗しようと聞くようにしています。
3つ目「諦めないこと」
心が折れそうなとき、特に学習内容が難しいときや学習したのに得たものが何もない日は、本当に日報書きたくないし、諦めてしまいたいと思うことも多々あります。ですが、そんなときは家族を思い浮かべたり冷蔵庫の夢(目標)を見るようにします。
これまでは体育会の根性論でやってきましたが(確かに根性も必要とは思いますが)、何が原因なのか探って原因を見つけたり。探ってわからなければ素直に質問してヒントをもらうことが大事だと思います。
教訓
このスピーチを聞くと、毎回気付かされます。
質問するのに変なプライドが邪魔してたり、アウトプットするのに失敗を恐がっている自分がいたりと…
そして夢を恥ずかしがらずに言うこと。
なので、今回このブログの冒頭で私の夢を宣言してみました!
次回はテック系のブログを書きます。
拙い文章でしたが、最後までご覧いただきありがとうございました!
【読書】神・時間術を読んで学んだこと
時間が足りないんじゃない!
脳の集中力の仕組みを知らないだけだー!!
『神・時間術』著者:樺沢紫苑 2017年出版
要約
- 時間という概念に集中力をプラスして書かれている本。集中力の仕組みを理解することで、1時間かかる仕事を30分で終わらせることができる。
時間が足りない→残業→睡眠時間削る。。。ではなく、集中力を高めて一気に仕事を終わらせて休息時間をたっぷりとるというライフスタイルの提案をしている。
1日のうち集中力が高い時間帯を上手に使うことが大切とのこと。
勉強になった点
- 朝起きてから2-3時間がゴールデンタイム
- 朝6-7時が最も集中力が高い!
- アメリカ人は17時頃になると帰る。終わらないときは早く来て仕事をする。
- 2016年の統計によると、日本の労働生産性は、OECD加盟34ヶ国中弟22位
- 主要先進国7ヶ国中1994年から22年連続で最下位
- 15分、45分、90分→集中力の単位
- 寝る2時間前にやってはいけないこと
→食事、激しい運動、熱いお風呂、光るものをみる(ブルーライトなど) - 寝る前15分は記憶のゴールデンタイム
- 30秒決断術
→30秒も30分悩んでも結論は一緒 - 未決仕事はデッドラインをいつの何時かを決める
まとめ
- 考えた通りのスケジュールを実行するのは難しいけれど、脳のゴールデンタイムを学んで、それをフル活用すれば、仕事・勉強・趣味を満喫できる!!!って魅力的⭐︎
簡単なことではないけれど、実践あるのみ!まずは朝の時間を大切にしたい☀︎
そして何か作業をするときに、作業時間を決めるだけではなく追い込まれる状況をどう作るか?または作業時間内に終わったらご褒美を決めたりするなどの工夫も大事だな〜と個人的には思ったりする。。
【Ruby】変数名やメソッド名の命名は大事!
今回は、課題で注意された変数名やメソッド名の命名についてアウトプットしていきます!
英語は苦手であまり難しい単語使えないな💦と思っていたのですが、しっかり単語の意味を調べて命名しなければ!と反省しました。
変数名やメソッド名の命名はなぜ大事なのか?
Rubyはスクリプト言語という種類の言語で書きやすい。その分、英文に近い感覚なのでメソッド名や変数名の意味が通じないとコードを読む人が意味を理解できなくなってしまう。今までの課題は自分だけで書くコードだったけれどチームで開発したりしていくと見る人全ての人が一眼でコードの意味がわかるようにメソッド名や変数名を命名しておくことが重要。
だから変数名やメソッド名の命名には時間をかけて相手がわかる(想像しやすい)コードにしないといけない。
スクリプト言語とは?
可読性が高く、直感的に開発できる。開発時に気軽に実行して動作確認をすることができる。
スクリプト言語以外にはどんな種類があるのか?
インタプリタ言語
実行時にコードを一行ずつ機械語に翻訳する形式で、この処理をするプログラミング言語全般を指す。事前コンパイルが不要なので動作確認が素早くできる。
コンパイラ言語
実行するときに、一括ですべてのコードを機械語または中間言語に翻訳する言語。複雑だが、大規模なアプリを高速で動かすことができる。少しの動作確認もコンパイルしないといけない。
誰が見ても、わかりやすく可読性の高いコードを書けるよう日々精進していきます💪
【Rubyでlsコマンド作成!(リファクタリング編)】
現在、プログラミングを学んでいるフィヨルドブートキャンプでlsコマンドを作成するという課題が出たので学んだ内容をアウトプットしていきます。※lsコマンドをどこまで再現するかの条件あり(a,r,lのオプションは実装)
今回、メンターのかたにリファクタリングしていただきコードを修正いただいたので、アウトプットしていきます。
1. オプションごとにif
文で条件分岐をしていると組み合わせ爆発が起きてしまう。
→パターンを見つけて、必要な箇所だけ条件分岐する。
それぞれのオプションで条件を分岐して分けている。今後オプションが増えると大変なことに…
def file_list(options) LIST1 = Dir.glob('*').sort LIST2 = Dir.glob('*', File::FNM_DOTMATCH).sort if options[:a] && options[:r] Dir.glob('*', File::FNM_DOTMATCH).sort.reverse LIST2.reverse elsif options[:a] Dir.glob('*', File::FNM_DOTMATCH).sort LIST2 elsif options[:r] Dir.glob('*').sort.reverse elsif options[:l] || options.empty? Dir.glob('*').sort LIST1.reverse else LIST1 end end
最初に隠しファイルを取ってくるオプションaとそれ以外で条件分岐。 その後、取得したファイルをreverseするかで条件分岐。
def list_file_paths(options) file_names = if options[:a] Dir.glob('*', File::FNM_DOTMATCH) else Dir.glob('*') end if options[:r] file_names.sort.reverse else file_names.sort end end
2. マジックナンバーは定数に入れる。
→誰が見ても何の数字かわかるようにする。
3. 空の配列を用意して、他のループ処理した結果を空の配列に詰め込んでいく場合、map
メソッドに置き換えられる。
空の配列を作成するVer.
(例) numbers = [1, 2, 3, 4, 5] new_numbers = [] numbers.each { |n| new_numbers << n * 10 } new_numbers #=> [10, 20, 30, 40, 50]
map
メソッドVer.
(例) numbers = [1, 2, 3, 4, 5] new_numbers = numbers.map { |n| n * 10 } new_numbers #=> [10, 20, 30, 40, 50]
4. 同じメソッドを何度も呼び出さない。
→処理に時間がかかってしまうため
5. 要素が合わない[[1, 2, 3], [4, 5, 6], [7, 8]]
の配列を [[1, 4, 7], [2, 5, 8], [3, 6, nil]]
という配列にしたいときは、zip
メソッドに複数の引数を入れて作成できる。
(例) a, b, c = [[1, 2, 3], [4, 5, 6], [7, 8]] a.zip(b, c) #=> [[1, 4, 7], [2, 5, 8], [3, 6, nil]]
lsコマンドだと配列(ファイル)の個数はいくつやってくるかわからない。。。
(例) # lsコマンドの配列はこの状態に近い file_array = [[1, 2, 3], [4, 5, 6], [7, 8]]
この場合は最初の要素と残りの要素で分ける。
(例) first, *rest = file_array first #=> [1, 2, 3] rest #=> [[4, 5, 6], [7, 8]]
rest
をsuplat
展開させて引数に入れると、
(例) first.zip(*rest) #=> [[1, 4, 7], [2, 5, 8], [3, 6, nil]]
のように書くことができる。
修正、反省点が多々あってこれまでの課題で一番勉強になった課題でした😄
日々パワーアップしたい💪
【Rubyでlsコマンド作成!(ロジック編)】
現在、プログラミングを学んでいるフィヨルドブートキャンプでlsコマンドを作成するという課題が出たので学んだ内容をアウトプットしていきます。※lsコマンドをどこまで再現するかの条件あり(a,r,lのオプションは実装)
lsコマンドとは?
まずlsコマンドとは、簡単に説明するとファイルを一覧表示する他、オプションを使ってファイルの詳細情報を表示できたりするコマンド。
lsコマンドを作成する上でのロジック
自分の場合、ロジックは下記の通り
・まず、if
文でオプションa
のときに取得するファイルデータとそれ以外のオプションのファイルデータを条件分岐
・その後、オプションr
とそれ以外のオプションのファイルデータを条件分岐
file_names = if options[:a] Dir.glob('*', File::FNM_DOTMATCH) else Dir.glob('*') end if options[:r] file_names.sort.reverse else file_names.sort end
・ここからl
オプションを実装。表示する各項目をメソッドに入れて、最後に項目をまとめてprint
・次にl
オプション以外のオプションを実装。l
オプション以外は表示条件がほぼ同じ。
・最後にopt.on
で各オプションを設定して、l
オプションまたはそれ以外のオプションで条件分岐させた。
options = {} OptionParser.new do |opt| opt.on('-r') { |r| options[:r] = r } opt.on('-a') { |a| options[:a] = a } opt.on('-l') { |l| options[:l] = l } opt.parse!(ARGV) end options[:l] ? output_with_l_options(options) : output_without_l_options(options)
課題提出後、完成した他の生徒さんのコードを読ませていただいたが、それぞれロジックが違って面白かった😄
同じlsコマンドでも作者が違うと作成する過程が違うなんてRuby面白い!!!
【Blog Start!!!】
悔いのない人生を。
昨日33歳を迎え、気持ちを新たにBlog更新していきます!
2020年も残りわずか・・・。
今年は7月末に娘が産まれ、家族が3人になり環境が大きく変わりました。
仕事は8月から育児休暇中で、現在は育児をしながらフィヨルドブートキャンプでプログラミングを学習しています。
プログラミングを学ぼうと思ったきっかけは、 アナログな現在の職場をもっとITで円滑にしたい!そしてみんなに気持ち良く働いてもらいながら生産性を高めたい!という気持ちからです。「ない」のなら作ってしまえ!!!と思い新たに挑戦しています。
たった一度の人生なので悔いのないよう、また産まれた娘が自分の姿を見て、いくつになっても夢や目標を持ってもらえるよう現在もプログラミング学習継続中です。娘はまだ産まれたばかりですが、、(笑)
プログラミングで学んだ知識や他にも読書、生活のことなどをBlogでアウトプットしていけたらと思います。 よろしくお願いします!