緯度経度と日本住所の対応データは国土交通省の「位置参照情報ダウンロードサービス」から無料で入手できる

「緯度経度と市区町村の紐付いたデータを探してほしい」という仕事の依頼をされて、調べた内容をメモ。

既に同じようなことをしてる先人の方々がいたので、以下の記事を参考にしました。

国土交通省の「位置参照情報ダウンロードサービス」からダウンロードできます。

位置参照情報ダウンロードサービス

以上です。

AnsibleでさくらのVPSのセットアップをするために2週間無料のお試し期間で登録した話

今までサーバの環境構築は手動でやっていたのですが、そろそろ構成ツールを使って自動化できるようになりたいなと思う今日このごろです。

思うだけではダメで、行動しなければ!ということで、さくらのVPSの2週間無料のお試し期間へ登録しました。

さくらのVPSへ登録

まず、さくらのVPSにクレジットカード支払いで登録します。

無料お試し期間のみ使うことが決まっていれば、月払いを選択すると解約忘れのリスクを回避できそうです。

以下のバナーから登録してもらえると、僕にキックバックが入るので嬉しいです。



さくらのVPSからの仮登録メールを確認

申し込みすると以下のような仮登録メールが届きます。

rootユーザのパスワードやIPアドレスなど重要な情報が記載されているので、大切に保存しておきましょう。

[件名]
[さくらのVPS] 仮登録完了のお知らせ

[本文]
―――――――――――――――――――――――――――――――――――
このメッセージはさくらインターネットのサービス登録システムより自動
送信されています。
お心当たりのない場合は、他の方がメールアドレスを間違えて登録された
可能性がございます。
その際には、誠にお手数ですが本メールへの返信にてご連絡ください。
―――――――――――――――――――――――――――――――――――

◯◯ 様 (wno12345)

さくらインターネット株式会社

仮登録完了のお知らせ

この度は、さくらインターネットのサービスをお申込みいただき誠にありが
とうございます。

お申込みいただきましたサービスの仮登録が完了し、ご試用いただく準備が
整いましたので、以下の通りお知らせいたします。

======================================================================
┏┓
┗■ お申込み・ご利用情報
└────────────────────────……………‥‥‥・

▼契約者/契約サービスの情報

会員ID :wno12345
ご契約者名:◯◯ 様
電子メール:codenote@example.com

サービス名 :さくらのVPS(v4) SSD 1G TK02
サービスコード :xxxx
お申込み日 :2016年07月24日
お試し期間 :2016年08月07日 まで

▼サーバ情報

[サーバ基本情報]
IPアドレス:160.16.55.xxx

[管理用ユーザ]
ユーザ名 :root (for Windows Server の場合は Administrator )
初期パスワード:xxxx

[VPSコントロールパネル ログイン情報]
URL :https://secure.sakura.ad.jp/vps/
IPアドレス:160.16.55.xxx
パスワード:xxxx

※ご提供時の初期状態ではサーバは停止状態になっていますので、利用を開始
する際は「VPSコントロールパネル」にログインしサーバを起動して下さい。

======================================================================
┏┓
┗■ VPSサービスのご利用にあたって
└────────────────────────……………‥‥‥・

▼【重要】セキュリティ対策について

 さくらのVPSは、お客様にroot権限(管理者権限)をお渡しているサービス
です。特にセキュリティの設定を実施しない場合、お客様のVPSが第三者に
乗っ取られるなどの被害にあうことがありますので、必ず対策を行ってく
ださい。
 弊社サポートサイトにてサーバの初期設定マニュアルをご用意しておりま
 すので、ご参照ください。(for Windows Serverを除く)

▽ 初期設定ガイド
https://help.sakura.ad.jp/app/answers/detail/a_id/2429

▼お試し期間中の機能制限について

お試し期間中は、機能制限がありますのでご利用上の注意をご確認ください。

▽ さくらのVPS
http://vps.sakura.ad.jp/flow/

▽ さくらのVPS for Windows Server
http://solution.sakura.ad.jp/windows_vps/flow.html

▼ for Windows Server の初回起動時について

さくらのVPS for Windows Server では、サーバの初回起動時にOSのインス
トールが行われます。インストールには5~10分程度のお時間がかかります。

※OfficeやSQL Serverのオプションをお申込みいただいた場合は15~30分
程度のお時間がかかります。

▼マニュアル

ご不明な点がありましたら、「オンラインマニュアル」や「よくある質問」
をご覧ください。

▽ オンラインマニュアル
https://help.sakura.ad.jp/app/vps/

▽ よくある質問
https://help.sakura.ad.jp/app/faq/

======================================================================
┏┓
┗■ サービスの本契約・キャンセルについて
└────────────────────────……………‥‥‥・

▼本契約について

お試し期間終了後、自動的に本契約へ切り替わります。

お試し期間終了を待たずに本登録をお急ぎの場合は、下記マニュアルを
ご参照いただき、お手続きください。

▽本登録の方法
https://help.sakura.ad.jp/app/answers/detail/a_id/2037

▼キャンセルについて

申込キャンセルは、下記マニュアルをご参照いただき、お手続きください。

▽お申込みのキャンセル
https://help.sakura.ad.jp/app/answers/detail/a_id/2024

=======================================================================

ご不明な点やご質問等ございましたら、本メール返信にてお問い合わせ
ください。

今後ともさくらインターネットをよろしくお願いいたします。

─── さくらインターネット株式会社 カスタマーセンター ───────

 ■Twitterサポート
  https://twitter.com/sakura_ope

■サポートサイト
https://help.sakura.ad.jp/

■FAQ(よくある質問)から調べる
https://help.sakura.ad.jp/app/faq

■電話・メールによるお問い合わせ
https://help.sakura.ad.jp/app/answers/detail/a_id/2005
電話受付時間 :平日 10:00 – 18:00(土日祝、当社指定休日は休み)
メール受付時間:10:00 – 18:00(土日祝営業、当社指定休日は休み)

───────────────────────────────────

VPSコントロールパネルからログインしてサーバを起動する

ほとんどのサーバ環境構築は Ansible で設定したいので さくらのVPS サーバの初期設定ガイド|さくらインターネット公式サポートサイト に記載されている「STEP1 サーバを起動しましょう」の項目のみ手作業でおこないます。

まず、メールに記載されているURL https://secure.sakura.ad.jp/vps/ からVPSコントロールパネルにログインします。

さくらのVPS VPSコントロールパネル サーバ一覧

次に、対象のサーバのチェックボックスを ✔ して [起動] ボタンをクリックします。

最後に、サーバが起動したら root ユーザで ssh 接続できるか確認します。

起動後しばらく経っても ssh できない場合は以下の記事の通りコンソールを確認して気長に待ちましょう。

以上で Ansible でサーバをセットアップするための事前準備が整いました。

Ansible を使ったサーバセットアップについては別の記事で書きたいと思います。

さくらのVPSで初回起動時にコンソールに Updating RPMS on system と出力されたら気長に待とう

さくらのVPSで契約したサーバを初回起動して ssh すると Connection refused エラーで接続できませんでした。

エラーメッセージ: Connection refused

$ ssh root@160.16.55.xxx
ssh: connect to host 160.16.55.xxx port 22: Connection refused

仕方ないので、さくらのVPS専用の「VPSコントロールパネル」からサーバに接続して、コンソールを確認してみると Updating RPMS on system が出力されているところで処理が止まっていました。

Updating RPMS on system - CentOS

調べてみたところ、初回起動時にインストールされている RPM を全て更新する仕様らしく、そのため時間が掛かっているようでした。

20分ぐらい待ってコンソールを確認すると次の処理に進んでいて、しばらくすると無事に login プロンプトが表示されていました。

初回起動時だけなので困るのは最初だけですが、定期的に RPM が最新の状態の CentOS がデフォルトでインストールされると嬉しいですね。

iconv で変換できない不正な文字を除外するには -c オプションを使えばいい

Linux 上でデータベースから出力した CSV ファイルの文字コードを UTF-8 から Shift JIS に変換しようとしたら、変換できない文字が含まれていたみたいで illegal input sequence at position というエラーが発生して処理途中で終了してしまいました。

$ iconv -f utf-8 -t sjis -o output-sjis.csv input.csv
iconv: illegal input sequence at position 652782

-c オプションをつけると処理が途中で止まることなく、不正な文字を出力から除外して最後まで処理してくれます。

$ iconv -c -f utf-8 -t sjis -o output-sjis.csv input.csv

ヘルプにちゃんと記載されてました。

$ iconv --help
Usage: iconv [OPTION...] [FILE...]
Convert encoding of given files from one encoding to another.
 
 Input/Output format specification:
  -f, --from-code=NAME       encoding of original text
  -t, --to-code=NAME         encoding for output
 
 Information:
  -l, --list                 list all known coded character sets
 
 Output control:
  -c                         omit invalid characters from output
  -o, --output=FILE          output file
  -s, --silent               suppress warnings
      --verbose              print progress information
 
  -?, --help                 Give this help list
      --usage                Give a short usage message
  -V, --version              Print program version
 
Mandatory or optional arguments to long options are also mandatory or optional
for any corresponding short options.
 
For bug reporting instructions, please see:
<http://www.gnu.org/software/libc/bugs.html>.

CSV ファイルを Excel で開くために Shift JIS に変換するなんて作業からは、そろそろ卒業したい気分です。

[Google スプレッドシート] 数字を Plain Text に変換するには TEXT(A1,”@”) 関数を使うといいらしい

Googleスプレッドシートで、vlookup の検索キーの部分を Plain text にしているのにエラーが出て無駄に時間を使ってしまうことがありました。

エラーメッセージ
Error
Did not find value in VLOOKUP evaluation.

原因は Plain text になっているように見えて、実はなってなかったという罠でした・・・。再度 Plain text で format したら正常に vlookup できました。

同僚にこの話をしたら、

TEXT(A1,"@")

で、プレーンテキストになりますよ。

ということを教えてもらいました。

以下、TEXT 関数を使って vlookup してみたサンプルです。

Google スプレッドシートの活用スキルがまだまだ足りない。

MongoDB shell で moment.js や underscore.js などの便利ライブラリを使えるように拡張する mesh.js が神

MongoDB shell で JavaScript の有名なライブラリを使えるように拡張する mesh.js が便利だったのでご紹介します。

MongoDB

mesh.js のインストール

まず mesh.js をダウンロードします。

curl -O https://raw.githubusercontent.com/skratchdot/mesh/master/mesh.js

次に MongoDB shell で mesh.js ファイルを読み込んで shell から使えるようにします。読み込み方は2パターンあります。

.mongorc.js に load メソッドで読み込むパターン

.mongorc.js ファイルに下記のように

load('/path/to/mesh.js');

MongoDB shell 起動時に読み込むパターン

MongoDB shell 起動時に mesh.js ファイルを指定して読み込むことができます。

mongo --shell /path/to/mesh.js

個人的には .mongorc.js に書く方が無意識に使えるので便利です。

[事例] moment.js が使えて日付演算がめっちゃ楽

例えば、EC サイトで商品ページ productpages が公開日 published_at から1ヶ月毎の日付を確認したい場合は以下のように使えます。

> var productPage = db.productpages.findOne( ObjectId( "568f2d5f2e2195f01f663e3d" ) )
 
> productPage.published_at
ISODate("2016-01-08T04:08:59.822Z")
 
> var m = moment( productPage.published_at );
> m.toDate()
ISODate("2016-01-08T04:08:59.822Z")
 
> m.clone().add( 30, 'days' ).toDate()
ISODate("2016-02-07T04:08:59.822Z")
> m.clone().add( 60, 'days' ).toDate()
ISODate("2016-03-08T04:08:59.822Z")
> m.clone().add( 90, 'days' ).toDate()
ISODate("2016-04-07T04:08:59.822Z")

他にも時刻情報を Google スプレッドシートで扱いたい場合は moment.js の format メソッドを使って整形できるのは最高です。

> m.format('YYYY-MM-DD HH:mm:ss')
2016-01-08 04:08:59

まとめ

MongoDB shell で日付の演算をしたくなったら迷わずに mesh.js をインストールすると moment.js が使えて幸せになれそうです。

本人に「メンター制度をやる必要がある」という認識がないと良い結果にはならないのでは?

職場でメンターを引き受けるか考える過程で、メンター制度について調べたこと、考えたことを書き残しておきます。

まずは「メンター」という言葉についてです。

メンターとは、仕事上(または人生)の指導者、助言者の意味。メンター制度とは、企業において、新入社員などの精神的なサポートをするために、専任者をもうける制度のことで、日本におけるOJT制度が元になっている。メンターは、キャリア形成をはじめ生活上のさまざまな悩み相談を受けながら、育成にあたる。

次に、ネットで検索していくつかメンターについて書いてある記事を読んでみました。

メンターってなによ

メンターというのは、特定の分野において経験を持つ人が「世話焼き兄貴・姉貴」として、キャリアや仕事の進め方、トレーニング、コーチングなどをしていく人のことです。その対象のことをメンティと言います。
そのため、目的は対象となる人の迷いを取り除き、成長させ一人前にしていくことです。また、メンターを経験することでより大きな人数での指導的立場やサポートをしていくことの足がかりとしても大変有用です。

ここで重要なポイントは「メンティを成長させたいか?」という点だと考えてます。

対象のメンティの成長に関心がない場合は、メンター業務に対してモチベーションが上がることもないので、お互いのために引き受けるべきではないと思ってます。

ここでメンターに関して皆さんが具体的に出来ることをお話したいと思います。

ルール第1は、33%の法則です。皆さんの周りの人の33%は皆さんよりもレベルが低いです。皆さんは彼らのメンターになることができます。彼らを助けることで、皆さんは良いことをした、と気分が良くなります。皆さんよりも低いレベルの人がいると安心しますよね。
そして他の33%の人々は皆さんと同じレベルの人です。この人達は皆さんの友となり、仲間となる人達です。そして最後の33%は多くの人がその存在を忘れている人々です。彼らは10年、20年、皆さんの先を行っています。彼らは一緒にいると皆さんをすこし居心地悪く落ち着かない気持ちにしますが、これが皆さんには必要なのです。

覚えておいてください。よくある間違いは、自分より少しだけ優れた人をメンターに選ぶことです。自分も物事をよくわかっていないのに、同じ程度にしか物事をわかっていない人を選んではなりません。これを10Xルールと呼んでいますが、メンターには自分の10倍優れた人を選ぶべきです。100万ドル企業を築きたいのであれば、1000万ドル企業を築いた人にメンターとなってもらう。ものすごく成功した人にアプローチすることを恐れないで。彼らは直接会ってみると素晴らしい人ばかりです。

”メンターには自分の10倍優れた人を選ぶべき”なので、そうでない場合はメンティにとって効果は小さいと思うんですよね。

自分がメンティの立場だったら「少しレベルの高い人についてもらっても、何も変わる気がしない」と思いますね。

まとめ

メンターもメンティーの立場にもなったことがないのですが、どちらの立場でも本人に「メンター制度をやる必要がある」という認識がないと良い結果にはならないのではないでしょうか。

[Shell Script] 昨日, 今日, 明日の日付をフォーマットして取得する

シェルスクリプトで「昨日」「今日」「明日」の日付を Google スプレッドシートや MongoDB Query で使いやすいようにフォーマットして取得する方法をご紹介します。

前提

「今日」の日付は 2016/06/22 とします。

昨日, 今日, 明日の日付を取得する

# 昨日の日付
% date -d '1 days ago'
Tue Jun 21 13:40:41 UTC 2016
# 今日の日付
% date
Wed Jun 22 13:40:42 UTC 2016
# 明日の日付
% date -d '1 days'
Thu Jun 23 13:40:43 UTC 2016

昨日, 今日, 明日の日付を取得する (フォーマット版)

Google スプレッドシートや MongoDB Query で扱いやすいようにハイフン区切りでそれぞれ日付をだしてみました。

# 昨日の日付
% date '+%Y-%m-%d' -d '1 days ago'
2016-06-21
# 今日の日付
% date '+%Y-%m-%d'
2016-06-22
# 明日の日付
% date '+%Y-%m-%d' -d '1 days'
2016-06-23

以上です。

参考情報

[SEO] 半角スペースと &nbsp; はどちらを使うべき?

Q)
半角スペースと &nbsp; で SEO 的にはどちらを使うのが好ましいですか?

HTML を minify した際に末尾の半角スペースが削られて文字やレイアウトが詰まってしまうことがあり、半角スペースに &nbsp; を利用することがあるのですが、これが含まれている単語でも SEO 的に問題なく認識されるのか気になっています。

A)
ほとんど差はないです。
完璧を追求するなら、半角スペースの方が望ましいです。
そのほうが、HTML ファイルのサイズを小さくできるのというのが理由です。

IT企業とはいえ緊急時の連絡手段はやっぱり電話

外資系の IT 企業で EC を主力事業としてやっているので日本とアメリカに倉庫があるんですが、たまにシステムトラブルが日本時間の深夜に発生しても寝ていて対応できないことがあるんですよね。

特に僕は寝るときに iPhone を「おやすみモード」に設定しているので、通知に気づけないのが主な理由です。

通知に気づけないと対応もできないので、”社内で一部のエンジニアの電話番号を共有してほしい” という要望があがってきました。

色んなコミュニケーションアプリがリリースされている昨今ですが、緊急時のコミュニケーション手段はまだ電話みたいです。

iPhone 「おやすみモード」の設定方法

iPhone の「おやすみモード」を設定しているときは、デフォルトアプリの「着信通知」と「メッセージ通知」のみ通知を受け取る設定ができるみたいです。

着信通知の設定についてですが、社内の他のメンバーの電話番号を登録していないのでそういう方は、[着信を許可 (Allow Calls From)] の項目を [すべての人 (Everyone)] に変更するのがおすすめです。(下記、画像参考)

iPhone おやすみモード

メッセージ通知の設定はまだ使えてないのですが、Slack の特定の通知を SMS で受信するとか上手く使いこなせるといいのかもしれませんね。

Apple が iPhone に「おやすみモード」のときにでも、特定のアプリだけから通知が届くような設定機能を追加してくれると嬉しいんですけどね。