読者です 読者をやめる 読者になる 読者になる

What one likes, one will do well 〜好きこそ物の上手なれ〜

寄り道しながらも、最後は昔から好きな物理とプログラミングに戻ってくる。そんな男の思いをつづるブログです。

Qiitaに記事を投稿しました。Cloud9でTensorFlowのチュートリアルで畳み込みニューラルネットワーク(CNN)をやってみた~手書き画像の分類~

QiitaにCloud9でTensorFlowのチュートリアルを実装した記事を書きました。

 

qiita.com

 

 

下記の前回の記事の続きで、前回は初心者向けのMNIST。今回は専門者向けのMNISTです。私は専門者ではないですが。。。

合わせて下記の記事およびコードも見直しました。

 

takus4649.hatenablog.com

 

やってみてコードを実装するのが一番の理解の早道だと感じます。何でもそうですが、自分で工夫したり、苦労したりするのが一番理解が深まります。次はチュートリアルではなく自分のオリジナルを実装していきたいと思います。

 

twitterをはてなブログに投稿するgemを改善


以前にtwitterのつぶやきをブログに残していきたいと思って、gemを作成しました。

 

takus4649.hatenablog.com

 

最初は毎日ブログにつぶやきを投稿していたのですが、twitterの利用頻度が増えるとブログ記事がつぶやきで埋まってしまうので、1ヶ月に1回の投稿に変えました。その時gemを直していたのですが、急いで直したこともあり使い勝手がよくなかったです。

自分の使い方に合わせてgemを修正して、やっと使いやすくなりました。自分用ですが、改善した内容をまとめておきます。

ちなみに投稿はslack経由でrubotyに実行してもらっています。

使い勝手が悪かった点は以下の2点です。

1つ目は、

post_between 開始日 最終日

という形の命令が長く日付指定が面倒だったという点につきます。

postという形の命令にしたかったのですが、毎日の投稿用使っていたため長い命令になっていました。そこで今や使っていない毎日の投稿処理をなくし、postで前月の投稿するように変更しました。

実処理はruboty用のgemとは、別のgemとして作成していたため変更は楽でした。

2つ目は、ruboty-twitterToHatenaからEditTwitterとPostToHatenaの2つのgemを呼んでいました。でも2つに分ける必要ないと思い統合しました。2つのgemを使っていた時はrubotty-twitterToHatenaで制御する処理が必要になっていたのですが、統合することで1つのメソッドを呼ぶだけのシンプルな作りになりました。

PostToHatena1つに統合したのですが、それに合わせてリファクタリングも実施持しました。DRY原則を適用して重複の部分を大きく減らせました。

動いているものを変更して改善するのは重い腰を上げないといけないのですが、改善した後の爽快感は最高です。

こう感じる事ができるようになったのは、テストを書くようになった事、リファクタリングをするようになった事が大きいと思います。テストなしだとやりたいとは思いません。

みんなもテストを書いてリファクタリングしましょう。

一応コードを公開しておきます。

github.com

 

2017年2月のつぶやき

2017年1月のつぶやき

数学ガールのガロア理論を読みました。

はじめに

数学ガールガロア理論を読みました。読んで感じたことを書きとどめます。

2次方程式の解の公式

高校時代に導くのをやっていたので懐かしかったです。

対称式

「対称式は基本対称式で表せる」ということ知りませんでした。対称性の基本定理というそうです。

また対称性は不変性というのは物理の対称性とつながり、そういうことだったのかと納得がいきました。

拡大体

有理数体に開平(ルート)を添加して「解なし」から「解あり」は本書を通してずっと出てくる重要な考えで、複素数の例がわかりやすかったです。

巡回群

巡回群が1個の生成元からできるというのは知りませんでした。物理でも群が出てくると生成元が出てくるので、比べてみようと思いました。

原始n乗根

数学ガールフェルマーの最終定理では原始ピタゴラス数が出てきました。原始という言葉は面白いです。多項式に互いに素の考え方がでてたり、係数が有理数の場合の因数分解が原始n乗根を解に持つ円分方程式だったりと不思議な性質を見ました。

角の3等分

定規とコンパスだけですべての角を3等分できるかの問題は簡単そうですが、自分ではどう証明したらよいのかわからなかったです。作図可能数や3等分方程式や難しい話でしたが、作図の問題が方程式に繋がるのは面白かったです。

3次方程式の解の公式

公式の導出が載っていて自分で導出したいと感じました。

ラグランジュ・リゾルべントという重要そうな式が出てきたけど、実際に手を動かしてみないとわからなさそうです。

拡大次数

拡大体の次数を計算して、添加するごとに2倍されていくのが不思議でした。次数というと大きさのイメージですが、平方根を1つ添加して2倍されるのは面白いです。

剰余類

線形代数の教科書です見たことありましたが、意味や必要性を感じていませんでした。

ケイリーグラフの計算を自分でやってみようとしたらできず。実際に手を動かすことの重要さを感じました。具体的な例で計算の仕方が解説してあったので理解できました。

剰余群は群の群でわけがわかりなくなりそうでしたが、具体的な計算で納得がいきました。

ガロア理論

やはりガロア理論は難しかったですが、2次方程式の解などで具体例があったのがよかったです。まだ自分で考えられていませんが、「例示は理解の試金石」が身にしみました。

おわりに

数学ガールガロア理論は、線形代数群論など興味がある内容が盛り沢山で楽しめました。

「例示は理解の試金石」を一番感じた1冊でした。

数学ガールシリーズは読んだので、次は数学ガールの秘密ノートを読みたいと思います。

 

 

数学ガール/ガロア理論 (数学ガールシリーズ 5)

数学ガール/ガロア理論 (数学ガールシリーズ 5)

 

 

ママに夜の自由な時間を。パパが子どもを寝かしつける方法。

はじめに

今年のはじめに「一人で子どもを寝かしつける」という目標を立てました。

これまでは一番下の子がおっぱいを飲んでいるからかパパが「寝よう」と誘ってもママと寝ると言って聞かなかったので、寝かしつけはママに任せて諦めていました。

しかしパパが寝かしつけが出来ると、ママに夜の自由な時間が出来るので一大決心して目標を立てました。

諦めて何もしなければ出来るようにならないので、自分で寝かしつけをしようと決心するのが一番大切だと思います。

寝かしつけたい子は2歳児です。お兄ちゃんが2人います。

寝かしつける方法

一番大切なのはおおらかな気持ちと根気よく説得すること。

イライラして話したり、無理やり布団に連れて行くことは厳禁です。仮に一度上手くいったとしても子どもに嫌な気持ちが残ってしまって次は上手くいかないでしょう。

また私の場合は、ママがその場にいると「ママと寝る」となってしまうので、ママはお風呂を最後にしてもらって、ゆっくり長風呂してもらいます。寝かしつけのタイミングでママがいないので、「ママお風呂だから今日はパパと寝よう」と誘っていました。

最初は「寝ない〜」と言っているのですが、根気よく誘っているうちに「寝る!」と気持ちが変わり一緒に寝てくれます。

子どもがすすんで寝たいという気持ちにさせるのが大切なので、無理やりは厳禁です。根気よく説得が大切です。

誘うときのコツ

子どもに話しかけたり、話を聞いたりして、いい気分にさせるのがコツです。子どもは話することが好きですから、おもちゃで遊んでればそのおもちゃについて聞いてみたり、テレビ見ていればテレビについて聞いてみたりすると喜んで話してくれます。

そしていい気分にさせた所で、「そろそろ寝る?」と聞くと「うん!」と言ったりします。これも一度では上手くいきません。何度も「寝ない〜」と答えるのですが、そこで腐らずに根気よく何度も誘うことです。何度も誘うことで、「えっ、今のタイミング?」と思うくらいに急に子どもの気持ちが変わります。

寝室に行ってから

大切なのはリビングに誰もいないこと。誰がリビングにいれば「自分も遊ぶ」となり、せっかく寝室に入ってもリビングに戻って行ってしまいます。

うちの場合は、ママはお風呂、お兄ちゃんたちは一緒に寝室に行く形です。

後は一緒に寝るだけです。寝ると言って布団に入ってもすぐには寝ません。おもちゃで遊んだり、話ししたり、なかなか寝ないのですが、部屋を暗くしてパパはしっかりお布団に入ります。

それでもイライラせず、「寝るよ」と声掛けしながら、抱っこしてあげたり、話したりしながら、横になるように導きます。

横になってくれたらしめたものです。後は子どもと共にパパが寝ればオッケー。寝かしつけた後に起きて何かしようとせずに、そのまま寝てしまうのがコツです。

起きようと思うと「早く寝て」とイライラしたり、「寝たかな?」と思って起きると子どもも一緒に起きたりと失敗のもとです。

寝かしつけする時は今日は睡眠デーと割り切って、しっかりと寝てしまいましょう。寝落ちバンザイです。翌日体調がよくて寝かしつけにハマってしまうと思います(笑)

上手くいかない時

寝かしつけは関門が二つあって、まずは寝室に連れて行く時、もう一つは布団に入ってからです。

上手くいかない時もあると思いますが、気張りすぎないことです。今日できなくても明日上手くいくかもしれないので、諦めず続ける事がコツです。

私の場合は、寝室に連れて行く前にママがお風呂から上がってきたらゲームオーバーです。

寝室に上手く連れて行けても、ママがお風呂から上がってリビングで何かしている事に子どもが気付いてリビングに戻った時も同じです。

その時は諦めてママに寝かしつけてもらいます。

ここまでは頑張ると基準があると頑張れますので、自分なりの基準を作るのがおすすめです。

寝かしつけと子どもの年齢

今回は2歳の子の寝かしつけ体験からでした。我が強くなってきたものの、話を理解して自分の意思で行動できるようになってきたところです。

そのため話をして説得して、自分の意思で寝るという選択肢を取れるため今回のようなやり方が上手くいったと思います。

子どもの性格、成長に応じてやり方は変わってきますが、参考になればと思います。

お兄ちゃんの経験も踏まえてですが寝かしつけと年齢はざっとこんな感じでしょうか。

0歳は抱っこしていれば寝る。着地失敗など時間かかったりしますが、抱っこすればオッケーなので簡単です。お腹空いている時はミルクをあげるとかもあります。

1歳が一番の暗黒期だと思います。我が出てきて話も分からず説得もできません。私はこの時期は寝かしつけを諦めていました。いい方法を知っていたら教えて欲しいです。

2歳が暗黒期を抜けて寝かしつけが出来るようになる頃。今回のブログ記事の通りです。

3歳以降は話を出来るのでいかに説得するかにつきると思います。ただし大きくになるにつれて言う事を聞きやすくなる反面、自分の意見が強くなってきます。

「ママと寝ると言ったらママと寝る」となってしまう場合があるので、最初の話し方が大切だったり、一度無理やりをすると次が難しくなったりします。

おわりに

2歳児の寝かしつけが上手くいったので記事を書きました。みなさんの参考になれば幸いです。

子どもは個人差が大きいので一概に2歳になればみんな出来るとは限りません。性格や成長によって3,4歳になっても難しい場合もあるでしょうし、1歳でもできる場合もあるでしょう。子どもの性格や成長を見ながら、その子にあった方法を試行錯誤する事が大切です。

今回、私は3日連続寝かしつけに成功したのでこの記事を書きました。でも一緒に寝る事になるお兄ちゃんが「ママと寝たい」と言い出しました。3日連続は頑張り過ぎたかもしれません。

ママとパパ交互に寝かしつけがバランスよくいいかもしれません。

RailsTutorialで、Ruby on Railsを学びました。

はじめに

Ruby on Railsを勉強するときに有名なRailsTutorialに挑戦しました。

日本語のページもあるようですが、英語の勉強をかねて、英語のまま実施したので、なかなかハードでした。

しかしRuby on Railsのすごさを知るとともに、Tutorialで色んな事を学べてとても楽しかったです。最後までやると簡単なtwitterのサイトを作成できます。Tutorialでここまでやれるのが驚きです。

どのような形で実施し、どんなことを学んだかをまとめます。

実施したエディション

3rd editionで、Rails4.2を使ったTutorialを実施しました。やっている途中にRails5がリリースされ内容が変わったので、3rd editionを最後までやりました。

エディションが違っても内容はほぼ変わらないと思いますが、当然Railsのバージョンの違いを吸収しており、Tutorialの内容も改善しているようです。

基礎知識

Tutorialの中で色んな知識が必要となりますが、詳しく説明してあるので、仕事でプログラミングや環境構築をしたことがある人なら問題なく学べると思います。初心者では知識量が多く難しいかもしれませんが、Tutorialには必要な知識が詰まっていますので、Tutorialの内容を理解できれば、プログラミングを仕事にできると思います。

私は仕事でプログラミングをしているので、知識はある程度あったと思います。以下の基礎知識がありました。

データベース

データベースは仕事で普通に使っています。

Linuxコマンド

仕事でCUIでコマンド打ってLinuxを操作することは普通にやっています。

プログラミング

JavaC++などのプログラミング言語は仕事で使っていて、RubyもTutorialを実施する前に、ドットインストールで基本は学びました。またCodeIqなどでRubyで解答して、実際に使ってみた状態でした。

MVC

基本的な考え方は知っていましたが、実際に適用したことはなかったので、本で学んだレベルでした。RESTについては、Tutorialで初めて学びました。

TDD(テスト駆動開発)

テスト駆動開発入門の本を読んで写経したことがありました。(ケントベックのテスト駆動開発入門を読みました。

逆に知らなかった知識としては、Rails、Heroku、Gitです。Tutorialで初めて触りました。

前提知識があればその部分は読み飛ばせるので、効率的に学べると思います。

実施した期間

リポジトリを確認すると3章以降は、6月から始めています。12月末までかかったので、6ヶ月かかった計算になります。途中休みしていた期間もあるので実質4カ月ほどでしょうか。

1章と2章はその前にやっているのですが、それほど時間はかからなかったと思います。

1日の学習時間としては、仕事の昼休みに毎日45分程度週4日ほど行っていました。4ヶ月週4回45分でざっくり計算すると50時間程度になります。

毎日朝から晩まで集中してやれば、1週間かからず終われそうです。

実施方法

Tutorialのやり方としてはいわゆる写経をしました。各章の最後のexercisesはせずに、本編のみ進めていきました。

英語でやっていたので、最初は通勤電車の中で内容を読みました。その後昼休みを使って、もう一度読みながら手を動かして写経しました。

全体像を最初に理解したので、読んでいる箇所のコードに集中することができました。やはり一度手を動かすことが一番大切だと思います。

私は飛ばしましたが、exercisesはやった方が本当の理解につながると思います。

Tutorialの内容

Tutorialの内容を簡単にまとめておきます。

1章

Railsの環境構築を行い、静的なページを表示させることができます。

クラウド統合開発環境のCloud9を使って、Rails環境を構築して、HelloWorldの表示、Gitの使い方、Herokuへのデプロイと盛りだくさんです。

しかしそれぞれクラウドで提供されているサービスを利用するので、登録して簡単に使え始めます。

特にCloud9は環境構築が楽で、どこでも同じ環境を使えるので、普通に使うようになりました。GitやHerokuも利用するようになりました。

2章

Railsで最初に驚かされたScaffoldの使い方とMVCの基礎知識を学べます。

コマンド一つでデータを登録・更新・削除できるWebアプリが作成できるのが、すごいです。

3章

動的なページを作成できます。同時にテストとテスト駆動開発を学べます。

Tutorialの中でテストもしっかりと書いており、テストの重要性を感じる事ができます。

4章

Rubyの基礎を学べます。他でRubyを勉強していれば簡単に読み進められます。

ただRubyの特徴的な使い方なども紹介しており、学ぶことは多いので1度目を通す方がよいと思います。

5章

CSSやBootstrapでWebのデザインを学べます。Bootstrapは簡単にかっこいいページを作ることができて驚きました。

6章

Railsでのデータベースの扱いやデータのチェック、パスワードの扱いなどを学べます。

Railsを使えばデータベースを簡単に使える事が分かります。また数行のコードでデータのチェックやパスワードを扱えるようになるのがわかり、Railsのすごさを知りました。

7章、8章、9章

Sign up、Log in、Log out、ユーザデータの表示・更新・削除などの機能を追加します。

機能追加の話と同時に、セキュリティやテスト駆動開発をコードともに学べます。

10章

アカウントのアクティベーションやパスワードリセットの機能を追加します。

メールを使ってのアクティベーションやパスワードリセットの機能を追加しており、本物のサービスに近いものを作成できます。

11章、12章

twitterのツイートやフォローの機能を追加します。

おわりに

Rails Tutorialは完成度が高く、網羅的に学べるようになっています。最後に出来上がる簡易twitterもここまで作れるのかとびっくりします。

一度写経しただけでは、自分のものになっていませんが、これをきっかけにRailsでWebアプリを作りたいと思います。

ボリュームがすごいですが、最後までやりきれば多くの知識がつくと思いますので、ぜひ挑戦してみてください。