「たいていのことは20時間で習得できる」所感

  • 習得したいスキルをこまかいパーツに分解し、習得者の意見を聞いてエッセンスを掴みつつ、重要な項目のみを抽出する
  • 目標とするパフォーマンスレベルを意識し、速度を意識してスキルの習得に取り掛かる
  • わからない、理解の追いつかないことが出てきても、量をこなすことでわかることも出てくるため、とりあえず量をこなすことも大事
  • スキル習得の効率をあげるアイテムには惜しまず投資する

上記のようなノウハウを徹底すれば、たいていのことを20時間で習得できるとうたう名書。
プログラムのくだりは、すでに基本的な素養があった部分が大きいと思うが、
個人的にそれとなく行なっていたことを言葉にしてくれているので、新しいスキルを習得するときの心構えを見直すことができるよい本だった。
ずっと本棚にしまってあって、読むのに3年かかってしまった。。

Google Maps API サービス変更「Google Maps Platform」(移行期間:2018年 6/11 – 7/16)

この期間中に旧サービスの「Google Maps APIs Standard Plan / Premium Plan」にてAPIキーを使用していない場合、7/17以降には、エラー画面となりGoogle Mapsが表示されなくなる。
※ただし、iframeによる埋め込みについてはAPIキーがなくても利用可能(一般公開されているページに限る)

APIキーは2016年6/22より必須となったが、6/22以前からGoogle Masp APIを利用しているドメインの場合は、コンソールでの警告にとどまっていた。
今回のサービス変更によって2018年の6/11からはAPIキーの使用が強制となり、
移行期間後の7/17以降にはエラー画面となる。

また旧サービスの「Google Maps APIs Standard Plan / Premium Plan」を使用していたとしても、利用規約や価格が変更されているため注意が必要(リクエスト数の大幅な減少など)。

  • Google Maps Platform:月間28,000リクエスト(1日平均933リクエスト)
  • Google Maps APIs Standard Plan:1日25,000リクエスト

利用料の確認・無料枠を超えないように制限をかける方法:
https://www.marie-web.design/blog/google-maps-platform/

参考:
https://internet.watch.impress.co.jp/docs/special/1124760.html
https://ring-and-link.co.jp/dream2000/user/notice/web/2479
https://qiita.com/umeume66/items/823c8188d895f89e42be

JavaScriptクォーテーションの個人的な見解

JavaScriptのクォーテーションはPHPなどと同じく「”(ダブルクォーテーション)」と「’(シングルクォーテーション)」があるが、JavaScriptに両者の違いはない(変数展開を行わない)。

そのため、人によって記述がバラバラになりがちだが、個人的には「’(シングルクォーテーション)」を使うべきだと感じている。

なぜなら、JavaScriptはHTMLの中でも利用されるため、HTMLで一般的に利用される「”(ダブルクォーテーション)」中に記述してもエスケープせずにそのまま使えるからである。

だから、JavaScriptでは「’(シングルクォーテーション)」を使ったほうが望ましいと思われる。

コミットメッセージのルール

下記が原則的なルールとなる。

  • 1行目に全体的な説明(50字以内)
  • 2行目は空白
  • 3行目以降に変更内容の詳細

1行目には次のような記述フォーマットが使われることが多い。

  • 「Fix: 〜」:バグ修正
  • 「Add: 〜」:機能・ファイルの追加
  • 「Change: 〜」仕様変更
  • 「Remove: 〜」機能・ファイルの削除

fsとfs-extraモジュールの違い

Node.jsのfsモジュールは、ファイルシステムに関するモジュールである。
fs.writeFile()fs.writeFileSync()は存在しないディレクトリのデータに書き込むことができないので、fs-extraモジュールを使って、fsExtra.outputFile()fsExtra.outputFileSync()で利用することがほとんどになる。

またNode.jsの原則だが、fs.writeFileSync()fsExtra.outputFileSync()は同期処理となるので利用すべきではなく、非同期のfs.writeFile()fsExtra.createWriteStream()fsExtra.outputFile()を利用するべきである。

Node.jsのCLIツール開発時のリンクの貼り方・外し方

自分でNode.jsのCLIツールを使うときは、npmを使って明示的にリンクを貼る。

package.jsonに下記のようなbinの記述があるかどうかを確認。

{
  "bin": {
    "iconfont-gen": "./bin/iconfont-gen"
  }
}

その後、下記のコマンドを実行し、リンクを貼る。

$ npm link

外すときは、下記のようにunlinkを実行する。

$ npm unlink -g iconfont-gen

テンプレートリテラル

ES6から利用できるようになったテンプレートリテラルは、単純にバッククォートで囲むだけ。

いままで制御文字を入れて改行していたところを、そのままの改行で表現できる(いままで通り制御文字を使っても大丈夫)。

let test1 = "Hello \n World!";
let test2 = `Hello
World!`;
conosle.log(test1 === test2); // true

また「${〜}」の記法を使うことで、変数や計算式を入れることも可能。

let hoge = 'World';
let test = `Hello ${hoge}!`;
console.log(test); // Hello World!

JavaScriptの型の復習

JavaScriptのプリミティブ型は下記の5つのみ。
それ以外の配列や関数などは全てobjectとなる。

  • boolean
  • number
  • string
  • undefined
  • null

よく同一視されるundefinedとnullの違いとしては、

  • undefinedは未定義の状態、つまり何も設定されていない状態
  • nullは何もない状態

であり、undefinedは変数宣言を行って値を入れていない状態でセットされるが、nullは意図的に設定しなければ、その値を示さない。
またES5以前の環境ではundefinedはグローバルオブジェクトで値を書き換えることができたため、void 0などの記法を用いて確実にundefinedを指すようにすることが多かったが、モダンブラウザでは単純な同値比較でOK。
typeof演算子を使った場合には、他のプリミティブ型と同じく、undefinedはundefinedを指すが、nullはobjectを指す(ちなみにobjectの中で関数のみfunctionを指す)。

入門書でtypeof演算子と一緒に紹介されるinstanceof演算子は、オブジェクトのプロトタイプチェーンを辿って、指定されたコンストラクタがあるかどうかを調べるもので、つまり全てのオブジェクトはObjectとの比較がtrueになる。
またそのオブジェクトのコンストラクタの名前を取得するには、コンストラクタで生成された全てのオブジェクトが持つ、object.constractorプロパティを参照すればいい。

nodebrewでNode.jsのバージョン管理

HomebrewのNode.jsをアンインストール

$ brew uninstall node

nodebrewをHomebrewでインストール

$ brew install nodebrew

nodebrewの初期設定

インストールしたときにメッセージが表示されるので、それに合わせて設定

$ /usr/local/opt/nodebrew/bin/nodebrew setup

「Export a path to nodebrew:」で示されたパスを「~/.bashrc」に追記

export PATH=$HOME/.nodebrew/current/bin:$PATH
# あるいは
export PATH=/usr/local/var/nodebrew/current/bin:$PATH

「~/.bashrc」の読み込み

$ source ~/.bashrc

パスが通っているかを確認

$ nodebrew -v

Node.jsの最新版をバイナリでインストール(バイナリじゃないと時間がかかる)

$ nodebrew install-binary latest (安定板の場合はstable)

インストールできるバージョンは下記のコマンドで確認

$ nodebrew ls-remote

現在インストールされているものを確認

$ nodebrew ls

インストールされたものでどのバージョンを使うかを指定

$ nodebrew use v10.0.0

Node.jsのバージョン確認

$ node -v

※下記のようにエラー発生した場合

-bash: node: command not found

「~/.bashrc」はパスは書き込まれている場合には読み込まれていない。
そのため自動で読み込まれる「.bash_profile」の方に、「~/.bashrc」を自動で読み込ませる下記の設定を記述。

if [ -f ~/.bashrc ] ; then
. ~/.bashrc
fi