webエンジニアの日常

RubyやPython, JSなど、IT関連の記事を書いています

これからプログラミングスクールに通う方へ

はじめに

最近では、〇〇Techや〇〇Academyのようなプログラミングスクールが数多く出現し、ITエンジニアへの転職ブームが起きつつあります。

スクールを比較したブログ記事もこれまでたくさん見てきましたし、実際に転職された方、スクールに通いながら自分でサービスを作った方もたくさん見てきました。

私も、まだ1年もたっていないですがプログラミングスクールの講師(1対1で授業を行う)として働いています。

スクールに通われる方の多くは、これまで全くHTML/CSSやプログラミング言語を触ったことのない方々です。私が受け持っている生徒さんも営業職や大学生などプログラミングとは無縁だった方が多数です。

しかし、入ったはいいものの、思ったよりスキルが身に付いている実感がわかなかったり、モチベーションが続かなかったりする方もちらほら、、、というかかなりの方がそうなってしまいます。

続きを読む

育児休業を最長の2年まで延長することにしました

f:id:s-uotani-zetakansu:20191121014153j:plain

仲良く机の下にもぐる兄弟

タイトルの通りですが、私は2018年の5月から育児休業を取得し、これまで1年半仕事をせずに育児・家事をしてきましたが、さらに半年間育児休業を延長することにしました。

 

少しずつ男性でも育児休業を取得される方が増えてきたみたいですが、大半は1か月未満の短期間の休業にとどまるようです。

 

そこで、この1年半を振り返りながら、男性が長期の育児休業を取った結果どうだったのか、育児をするうえで大切なことなど、思いつくままに書いていこうと思います。

 

 育児休業ってどういう制度?

昔の自分を含め多くの方、が勘違い・混同されているのが、育休と言った場合に二つの意味があるということです。

 

一つは単に育児のために仕事を休むという「権利」のこと、もう一つは国の育児休業給付金という「制度」のこと。

 

前者は就職して1年以上経つなどの条件を満たせば、育児のために仕事を休む権利が与えられること法律(労働基準法)が定めています。なので、基本的には会社はこの申し出を断ることができません。

よく、うちの(夫の)会社には育児休業の制度が無いと言っている方を耳にしますが、会社に制度があるなしは関係ありません。

 

後者は社会保険の中の給付制度に当たります。これは働いていた時の給与に応じた額が育児休業中に給付される制度です。

給与額の100%もらえるわけではないので、生活が保障されるわけではないですが、私たちは今のところこの給付金だけで生活しています。

また、住民税以外の健康保険料や社会保険料の納付は免除されるので、最初の半年間は実質給与額の7~8割くらいだと言われています。

 

 

大変だったこと

育児自体は妻と二人で、2歳と0歳(育休開始時点)の二人の子を見るので、そこまで大変ではありませんでした。

もちろん、妻は3時間毎の授乳があるので私がいても大変なことに変わりはありません。

 

どちらかと言えば、全く仕事から離れてしまうので、ブランクとなる期間があり、ちゃんと復帰できるのかという精神的な不安がずっとありました。特に私の仕事柄、どんどん新しいことを勉強しないといけないので、かなり精神的にきつかった時がありました。

 

それから、世間の目が冷たい。

特に、おばちゃんたちは基本的に男性は育児していない前提で話しかけてきます(「そこのパパ、そんな抱き方じゃだめよ。」みたいな)し、育休中ですと言っても通じる人はほとんどいません。年配の助産師さんや女医さんは基本的に夫は空気として扱うようです。

身内からは「ニートで大丈夫?」「給付金もらってんの?そんなことしていいの?」と心配されます。私もたまに心配になります。

 

あとは、ご飯が落ち着いて食べられない。子供を見ながら自分もご飯を食べるので、ご飯を食べた記憶が残らない。知らない間にハンバーグが消えていて、妻を疑ったこともあります。(これ、結構ママさんたちのあるあるじゃないですか?)

 

f:id:s-uotani-zetakansu:20191121014856j:plain

サイクリング帰りの足湯。お気に入りの一枚

良かったこと

 

逆によかったことは、ありきたりですが、子供の成長を見られること。

初めて立った、喋ったを妻からの報告じゃなくて、その場で見ることができる。

水族館や動物園など休日混むところは平日にいけちゃう。

 

育児に関して問題なく何でもできるようになる。これは今だけじゃなくて、将来、孫の面倒を見ることができるおじいちゃんになれるんじゃないかなと思っています。

 

あと、「ブランクになって不安」と前述しましたが、実はその心配は最初の半年ぐらいで、途中から1日の前半3時間と後半3時間で妻と私で時間を分ける(前半は妻一人で子供二人を見て、後半は私が子供二人を見る)ようにしてからお互い自分の時間ができて、むしろ働いていた時より勉強する時間は増えました。

 

なのでこの育休の間に新しいライブラリの使い方を覚えたり、仕事で使っていたスキルを忘れないように復習できたり、FP3級の資格を取ったりすることができました。

 

自分の時間確保するの大事!

 

また、10月に地元の奈良県へ引っ越したのですが、引っ越し準備も、引っ越し後の作業も時間に追われることなくスムーズに終えることができました。

 

f:id:s-uotani-zetakansu:20191121014623j:plain

引っ越しの時に捨てた手作りバムケロの小物入れ。さようなら

結局取って良かったの悪かったの?

いいことだらけで、取って良かったです。

 取らなければ絶対後悔していました。

 

世のパパさんに育休をおススメするかどうか

勧めたいですが、やっぱり難しいですよね。って思う。

育休を理由に降格や異動をさせてはいけないという法律がある以上、育休中の人のポジションをずっと空席にしておかないといけない。となると役職を持っている方は難しいと思います。

 

だからと言って入社3年目くらいの方が長期育休を取れるかと言うと、給付金額が少ないということもあり、やはり難しいと思います。

 

ですが、それ以上に、双子や二人目以降のお子さんをお母さん一人で見るのはかなり大変なので、難しいけど頑張って取ってください。

産後は実家でしばらく過ごすパターンもありますが、ママが孤立してしまう(育児を手伝ってくれる人が近くにいない)状況で産後直後のママが一人で子供を二人以上面倒見るのは無理ゲーです。仕事なんかしている場合ではないので、育休を取ってください。

 

最後に、妻からひと言

「ワンオペ育児にならずに心強かった。ご飯作らなくて楽だった。」

「(これから育休を取るパパさんへ)手伝うのではなく、協力しましょう。サブではなくメインで!」

最後に2、育児・育休をする上で大切だと思うもの

f:id:s-uotani-zetakansu:20191121014300j:plain

広い公園(平城宮跡)

・自分の時間

・(子供たちの)生活リズム

・広い公園の早期発見

・好きな野菜、食べてくれる野菜の調理法の早期発見

・「おっさんずラブ」のような夢中になれるドラマや映画

・やすとものどこいこ

・果物の皮むき器(<-下村工業さんのめっちゃ良かった。)

・周りの目を気にせず、「悪いことをしている」という意識を捨てること

面白すぎる人体の構造~胃から大腸まで~

うんちと黄疸は同じ色?!

「カラダを大切にしたくなる人体図鑑」という本の中で解説されている体の仕組みが面白かったので、 かいつまんでまとめてみました。

続きを読む

数学の入門書を選ぶ3つのコツ

微分方程式をしっかりと学んだことが無く、何か手ごろな入門書はないかと本屋さんに出向いたあなたは、きっと驚くはずだ。

微分方程式の入門書はとても多いからだ。さらに、ぱらぱらとめくってみたり、目次を見てみても、中身はほとんど同じだったりする。

これは例え話ではなく、本当に驚くほど同じような書籍が連立している。

線形代数ともなると、さらに多い。

そこで、この記事では、似たような専門書・入門書の中からあなたが欲しいと思う一冊を見つけ出すための3つのコツを紹介する。

これは勉強マニアの私が常に実践しているコツで、この方法を使い始めてからほとんど本の購入に失敗したことが無い。(多くの失敗を重ねてできたノウハウだともいえる)

もちろん、数学でなくても物理学の専門書・入門書を選ぶときでも使える。

【目次】

「はじめに」に注目

まず見てほしいのは、「はじめに」の部分だ。

書籍の目次や内容が同じようでも、「はじめに」の部分にはかなり個性が出る。

「はじめに」にはその書籍がどういった経緯で書かれたのか、対象読者は誰を想定しているのか、どこをゴールとしているのか。

などいわば書籍の自己紹介が書かれている。

その中でも特に注目してほしいのが、対象となる分野の「要約」についてだ。

例えば、微分方程式に関する書籍であれば、微分方程式に関する歴史や現状、エッセンスなどがまとめられていることが多い。

もしこの要約が書かれていなければ、そっとその本を棚に戻すといいだろう。

いくつかの本の「はじめに」に書かれている分野の要約を見ていくと、キラリと光る文章が載っているときがある。

私が見てきた中でいうと、「応用のための関数解析」という関数解析の入門書がそれだ。

新版 応用のための関数解析―その考え方と技法 (SGC BOOKS)

新版 応用のための関数解析―その考え方と技法 (SGC BOOKS)

この書籍の「はじめに」に書かれている分野の要約は、その文章だけでも千円くらいの価値がある素晴らしいものだった。

分野の要約が良いと何がうれしいのかというと、全体を俯瞰したうえで勉強を始められる点にある。

全体を俯瞰した視点を持つと、細かい議論に入っていっても自分がどこにいるのか見失うことはない。これは定理と証明で議論が進められていく数学では特に重要なことだ。

書籍を選ぶときはまず、分野の要約を見て、これから学ぶものの全体像がイメージできるような文章が載っているものを選ぶといいだろう。

ちなみに「はじめに」は書籍の最初だけでなく、各章にも書かれている。その章が何をゴールにしているのかイメージできるというのもとても重要だ。

あなたが得たい知識は「練習問題」にある

さて、あなたが本を買うのは知識やスキルを得たいからであろう。

微分方程式を学びたいという動機で本を買うにしても、人によっては常微分方程式が解けるようになりたいのか、漸近理論が知りたいのか、シミュレーションのために知りたいのかによって選ぶ本が異なってくる。

では、その書籍からどんな知識やスキルを得ることができるのかはどこを見ればいいだろうか。

正解は、「練習問題」に書かれている。

各章の最後にある練習問題は、各章で学んだことだけで(たまに別の知識も必要になることがある)解けるように設定されている。

裏を返せば、その章で取得できることが書かれている。

その章を学べばあなたは練習問題を解く力を得るのだ。

そこで、もし常微分方程式が解けるようになりたいのなら常微分方程式を解く練習問題が載っている入門書を選べばよい。

シミュレーションに応用したいのならコンピュータで解けと書かれている入門書を選ぶといいだろう。

最終的に熱方程式を学びたいのなら最後に熱方程式を解く問題があればいいし、常微分方程式だけでいいなら、最後に偏微分方程式を解く問題が載っている書籍は少し範囲が広すぎる。

私は練習問題を解くことが嫌いだったので、練習問題の内容なんて気にもしなかったし、載っていても解かなかった。

そのことに今となってはすごく後悔しているので、これから数学を学んでいく人はぜひ練習問題をしっかりとこなしてもらいたい。

最初の1割を理解できるか

最後のコツは、本全体の最初の1割がすらすらと読めるかどうかというものだ。

以前、興味だけで「リーマンゼータ函数と保型波動」という書籍を買ったことがあるが、一行目から理解できなかった。

リーマンゼータ函数と保型波動 (共立講座 21世紀の数学 21)

リーマンゼータ函数と保型波動 (共立講座 21世紀の数学 21)

何とか調べながら読み進めようとしたが以降も難しく、結局売ってしまった。

本を買う理由は自分が知らないことを知るためなのだが、全く知らないことだらけだと読むことができない。

そこで、せめて最初の1割または第1章ぐらいはすらすらと読め、おおよそ知っている内容を復習するぐらいの方が全体のバランスはちょうどいい。

1割を超えすぎてしまうと知っていることが長く続き、面白くなくなって、読むのをやめてしまう。

個人差はあると思うが、私の経験からだいたい1割ぐらい既知の内容であるものがちょうどいい

最後に

最近では数学科の学生だけでなく、線形代数や統計学を学ぶ社会人も増えてきた。

数学の専門書は他の経済書や育児本などに比べると平均して千円ほど高い。

書籍一冊にしろ安い買い物ではないし、読むのにも時間がかかるので、ぜひ慎重に選んでから買っていただくことを願いう。

すごいH本のToDoリストのコードを修正する

すごいHaskell楽しく学ぼうという本でHaskellを勉強しているのですが、ToDoリストをもっと楽しむという章に書いてあるコードをそのまま写経して実行してもエラーが出る(コンパイルエラーなので実行もできない)ので、正しいコードを載せておきます。

import System.Environment
import System.Directory
import System.IO
import Data.List
import Control.Exception

dispatch :: String -> [String] -> IO()
dispatch "add" = add
dispatch "view" = view
dispatch "remove" = remove

main = do
  (command:argList) <- getArgs
  dispatch command argList

add :: [String] -> IO()
add [fileName, todoItem] = appendFile fileName (todoItem ++ "\n")

view :: [String] -> IO()
view [fileName] = do
  contents <- readFile fileName
  let todoTasks = lines contents
      numberedTasks = zipWith (\n line -> show n ++ " - " ++ line) [0..] todoTasks
  putStr $ unlines numberedTasks


remove :: [String] -> IO()
remove [fileName, numberString] = do
  contents <- readFile fileName
  let todoTasks = lines contents
      number = read numberString
      newTodoItems = unlines $ delete (todoTasks !! number) todoTasks
  bracketOnError (openTempFile "." "temp")
    (\(tempName, tempHandle) -> do
      hClose tempHandle
      removeFile tempName
    )
    (\(tempName, tempHandle) -> do
      hPutStr tempHandle newTodoItems
      hClose tempHandle
      removeFile fileName
      renameFile tempName fileName
    )
続きを読む

なぜ線形代数ではn次元を学ぶのか

はじめに

理系大学生や機械学習を学ぶ社会人にとって線形代数は必須教科です。

大学に入るとまず習うのが線形代数だし、ディープラーニングの教科書をのぞいてみると線形代数を知っていることが前提に書かれています。

線形代数は簡単に言えば、高校で習ったベクトルの「その先」なのですが、急に次元がn次元に拡張されたことに驚かれるかもしれません。

私たちの住む世界は3次元なのに、なぜn次元なんて必要なんだろう。

そんな疑問を抱いたことはないでしょうか。このページではそんな疑問にお答えします。

続きを読む

【p5.js】transformを正しく理解するためのベクトル・行列講座

Qiita Processing Advent Calendar 2018 12月12日に投稿した記事です

はじめに

scaleやtranlateは書く順番によって結果が異なるって知ってましたか?

本記事は、transform系関数(scale,translate,rotate)を行列で表現し、深く理解することで正しく使えるようになるための講座です。

どのようなときに結果が異なるのか・一致するのか、なぜそのようなことが起こるのか、ベクトルと行列を使ってその謎に迫っていきます。

内容は数学ですが、ベクトルや行列に関する前提知識は必要ありません。ベクトルとは何かから始めていきます。

なぜ行列なのか

Processing(p5js)では線分の開始・終了位置や、円の中心、四角形の四隅など、あらゆる点がx-y座標で表現されています。

座標上の点というのは、言い換えれば原点を始点としたベクトルが指し示す点です。

あるいは、ボールが壁にバウンドするようなアニメーションを考えるときでも、ボールの速度はベクトルで表現されます。

そう、Processingはベクトルで支配されているといっても過言ではないのです。

そんなベクトルを簡単に操作できるツールが行列なのです。

実際、ProcessingにはapplyMatrixという行列を座標全体に作用させる関数が存在します。

そして、scaleやtranslate,rotateなどのtransform系関数はすべてapplyMatrix関数一つで代用が可能なのです。

本記事には華々しいProcessing作品やコードは出てきませんが、Processingの理解はぐっと深まるはずです!

最初は少し退屈かもしれませんが、最後までお付き合いください。

【目次】

  • はじめに
  • なぜ行列なのか
  • ベクトルとは
  • ベクトルの演算
    • 定数倍
    • 三角形の内部を表現する
    • 内積
  • 行列
    • 行列とは
    • 行列の作用
    • translateもscaleもapplyMatrixで書ける
    • 行列の連続作用
  • 行列の合成
    • 行列同士の掛け算
    • 同じ種類の行列であれば可換になる
  • 回転
    • rotate関数
    • その場で回転させたいんだ!
  • まとめ
  • 最後に
  • おまけ
続きを読む