tasuwo's blog

考えていることとか,実践していることとか,技術的なこととか

React の学習をしている

Reactビギナーズガイド ―コンポーネントベースのフロントエンド開発入門

Reactビギナーズガイド ―コンポーネントベースのフロントエンド開発入門

React ビギナーズガイドを読んでいる. React のビギナー向けであって,Web 開発のビギナー向けではない(それはそう). JavaScript に関して以前読んだ2冊よりも重く,進みが遅い. 仕様に関して曖昧な部分があったので,リファレンスを見に行こうと思ったら React.createClass() に関する記述が公式になく,どうやら v15.5 で deprecated になったらしい.

React Without ES6 - React

そのほかにも propTypes がコアから分離されたり,色々変更があったようだ. 自分は ES6 に関する知識はほぼなかったが,せっかくなので ES6 っぽい書き方をしようと class 句でコンポーネントを定義して進めていた. しかし,Mixin がサポートされていないのは参った.

React Without ES6 - React Mixins

どうやら色々と問題があるらしい.後で読む.

とりあえず,3章まで読み終えた.コードが入れ子になりまくってつらかった. 次回から JSX なのでこの苦しみから解放されると思う. 全8章なのでまだ半分もいってない.本当はこの週末で読み切ってしまいたかった.明日からの朝の時間を利用して読むことにする. ポモドーロタイマーを見ると,10 * 25 = 250 min = 4 hour 程度読んでいたらしい. ES6 関連の仕様の調査でだいぶ時間を取られてしまった気がする.順調に行けばあと6時間くらいで読めるかな?

オブジェクト指向 JavaScript の原則 を読んだ

オブジェクト指向JavaScriptの原則

オブジェクト指向JavaScriptの原則

読了した.途中プロトタイプ周りで混乱したが,そこを抜ければ最後まではわりとすぐによめた. 書評としては,前回の記事でも言及した通り JavaScriptオブジェクト指向するにはどうするか,ということが中心に書かれている.プライベート変数をどう作るか?継承をどうするか?等. 最後の方,Mix-in を説明するためにイベントハンドリングのためのオブジェクトが登場するが,そういったパターンへの理解がないと少しきつかったかもしれないと感じた. サンプルコードも豊富だったし細かく Tips も提示されていたし,良書だったと思います.

Function コンストラクタ関数が Function 型を継承しているというのは,最初少し混乱したけど,考えてみればそれはそうかという感じだった. 読み終えた後色々ブログ等を見ていたら, prototype プロパティと [[Prototype]] 内部プロパティがわかりづらいという意見があり安心した. JavaScript 初心者はやはりプロトタイプでつまづくとおもう. それと,プライベート変数をどう作るか?みたいな話はブログ等でも結構議論があったようだった.

即時実行関数スコープ内のローカル変数にアクセス可能なクロージャを定義しておくことで,そのクロージャ以外からローカル変数にアクセスできなくする,というのは,なるほどという気持ちと同時に少し奇妙さを感じた. たぶん,変数を無理やり private にしてる感があるので直感的に受け入れにくいのではと思う.

最近読んだ技術書の中では仕様書含め割と楽しく読めた.ECMA-262 は文体も平易だしレイアウトも悪くないし読みやすいと思います. プログラミング言語自体の勉強をもっとしてみたくなった.学生時代にそういった方向の研究をやるという選択肢もあったかもしれない. ここ数日はコードを書くより本を読む方が楽しい.もっと本を読んでいこう.

雑記

  • 早起き: 04:30
  • 筋トレ: 継続中

少し環境が変わったので,明日から数日間は早起きはしづらくなる.筋トレは継続中だけどそういった事情もあり少しかるめになってしまった. 継続することをやめてしまうとその後の継続が難しいので,途切れないようにしていきたいですね.

JavaScript を学習している

今日の記録

  • 筋トレ: 継続中
  • 早起き: 6時起床

雑記

昨晩なかなか寝付けなかったため当初の予定時刻(5時)に起床できなかった. 筋トレは一応続いているけれど,明日からは環境が少し変わるためできるか怪しい. 継続が重要だと考えている取り組みなので,せめて腕立ての 2~3 セットくらいはしたい.

昨日以下の本を読み終えた.

開眼!  JavaScript ―言語仕様から学ぶJavaScriptの本質

開眼! JavaScript ―言語仕様から学ぶJavaScriptの本質

電子書籍なので厚みはわからないが,200ページ程度なので二、三日で読むことができた.JavaScript は以前から利用していたが,都度ググりながら手探りでコードを書いていた状況だった.Web 系企業に入社したならばしっかり学んでおいてとりあえず損はないだろうと考え勉強している.上記の本についてはJavaScript の言語としての特徴が,浅すぎず深すぎずまとめられていたと思う.しかし,まだまるで JavaScript 初心者なので,あまり偉そうに言えることはない.

言語としての特徴がわかっても,それを生かしてどのようにコードを書いていけば良いかがわからなかったので,以下の本を購入し,今日は読んでいた.

オブジェクト指向JavaScriptの原則

オブジェクト指向JavaScriptの原則

こちらはまだ途中だが,JavaScriptオブジェクト指向したい場合にどうするか,といった視点で書かれており,クラスベースの言語から移ってきた自分としてはとてもわかりやすく,ためになる.開眼と違って ES5 をターゲットにしており(開眼は ES3),さらに ES5 で追加された機能を積極的に利用しているのもよかった.また,開眼の方よりも JavaScript の仕様に多少踏み込んで説明している部分が多い.例えば,内部プロパティに関する記述は開眼の方にはなかった.

こちらも分量としてはそうでもないので今日中に読み切ってしまいたかったのだが,途中プロトタイプについて混乱してしまい,用語の定義等を確認したくなり ECMA-262 を読みにいくなどした.特に,以下の箇所について理解が曖昧だった.

  • constructor.prototype と [[Prototype]] 内部プロパティ
  • built-in オブジェクトの [[Prototype]] 内部プロパティ
  • Prototype Object の constructor の参照先

大体わかっていなかったことは解決した.仕様を読んでなるほどと感じたことは以下のような感じ.

  • built-in オブジェクトのコンストラクタは全て関数であり,その [[Prototype]] 内部プロパティは Function Property Object を参照している (考えてみれば当たり前)
  • Function オブジェクトのインスタンス = JavaScript における関数には, その全てに prototype プロパティが付加されている.これは,あらゆる関数はコンストラクタになりうるためである
  • すべてのオブジェクトに追加される内部プロパティと,特定のオブジェクトに追加される内部プロパティがある.[[Prototype]] は前者,[[Construct]] は後者

途中, constructor.prototype と [[Prototype]] 内部プロパティが同じ対象を指し示すのかと勘違いしてしまい混乱した.また,以下についてはまだ理解が曖昧なので,明日の朝にでももう一度学習し直す.

  • built-in オブジェクト の Prototype Object の constructor プロパティには,初期値として同じ型の built-in オブジェクトのコンストラクタ関数が格納される?

そもそも,constructor プロパティはインスタンスの生成元のコンストラクタ関数を指すという様々な場所説明がされており,それは正しいと思うのだけど,じゃぁ built-in オブジェクトの Property Object の constructor は何を指しているんだろう?と思った.結論から言うと,例えば Array Prototype Object の constructor は Array Constructor を指しているっぽいけど,これで良いのかな?また,すべての built-in オブジェクトのコンストラクタ関数は関数型を継承している(と,いう理解であっているのかも曖昧なところ)ということは,Function コンストラクタ関数オブジェクトは Function 型を継承しているということになる.まぁ,コンストラクタ関数なので関数型を継承しているのは当たり前なのだけど,何か不思議な感じがする.しかし,Function オブジェクトの [[Prototype]] 内部プロパティが,Function Prototype Object を指しているのは間違いないはず.

これらはしっかり理解できたら Qiita にでもまとめるかもしれない.しかし,正直プロトタイプ周りはたぶん割と皆つまづくところで,説明がされつくしてる部分のようにも思える.一方,投稿したら JavaScript のつよい方々から色々とばしてもらえるかもしれない.悩みどころだ.

JavaScript 関連の本としては,オライリー本の中だとサイ本が人気のようだが,今はあまりこればかりに時間をかけるつもりはないので,今の本を読み終えたらとりあえず何か適当に JavaScript で作ってみようと思う.

社会人になりました

社会人になり1週間がすぎたので,試していることについて,少し書いておく.

 

筋トレ

某人物に太ったねと言われたので.筋トレには全く詳しくないのだけど,youtube を見たり [ 筋トレ メニュー ] で検索したりしながらとりあえずメニューを決めた.まだ始めたばかりだが,せめて 3 ヶ月くらいは続けたいという気持ち.ジムは高いのでやめた.

 

早起き

ここ一週間,朝 5 時頃に起床 & 出社している.就寝時間は 22 時くらいなので,睡眠時間は 7 時間くらい.慣れてないのもあり,日中眠いことが多少あったが,まだはじめたばかりなので色々試しながら調整していきたい.

正直,入社した会社は出社時間が異様に遅いので早起きの必要はないのだが,

  • 満員電車は避けたい
  • 遅めに行くか早めに行くかなら早めが良い
  • 出社時間を遅くすると出社までなにもしなさそう
  • 早起きは気持ちが良い

ということで,やっていきます.

自宅から勤務地までは電車で 40 分くらいなので,6時発の電車に乗っても 7 時前についてしまう.7 時前だとあまり店も開いておらず暇がつぶせないため,少しずつ遅めの電車も試していこうと思う.7 時以降はスタバで座席代 (ドリップコーヒー short) を支払い出勤時間まで趣味のコードを書くなどしている.

これを書いているのは土曜日で,様々な事情により本日の起床は 8 時頃だったが,今後は土日も早起きを続けていきたい.

 

その他

他の細かいところでは,コードを書く際や学習する際にポモドーロテクニックを使うようにした.使っているアプリは これ.午前中は macOS の クソアプリ を作り,午後は JavaScript の本 を読んだ.

また,マインドフルネスを実践したいのだが,ほしいと思った本Kindle になかったのでがっくりきた.明日余裕があれば書店を覗きに行く.

 

この他にも,積み本の消化等色々やりたいことはあるけれど,余裕が出てきたらすこしづつ色々なことをこなしていきたい.このブログの目的は特にないが,週一くらいで気楽に続けていけたら良いと考えている.