カテゴリー : 2016年 6月

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] 半角スペースと   はどちらを使うべき?

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

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

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

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

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

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

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

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

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

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

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

iPhone おやすみモード

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

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

[Slack] bot から @channel のような mention 付き投稿の記法

Slack bot で @channel や @everyone のようなメンション付き投稿は、そのまま書いても正常に動作しないので独自記法を使わないといけません。

Slack

成功例: という記法を使う

Slack bot 経由では以下のような記法を使うと、

'<!channel> Hello! Project'

下記のようにちゃんと mention として認識されるようです。

Slack bot @mention success

失敗例: @channel とそのまま書く

普段 Slack アプリから投稿するのと同じ感覚で、

'@channel Hello! Project'

と書いても Slack bot 経由では下記のようにちゃんと mention として認識されないようです。

Slack bot @mention failure

Slack 公式情報

Slack Help Center の Bot messages にも記載されていました。

Bot messages

If you wish to trigger one of these notifications with a bot message, the message should contain <!channel> or <!everyone>.

「Slack bot 作ったけど mention 付き投稿できない…」と悩んでいた方の助けになれば幸いです。

[SEO] モバイルフレンドリーを向上させることはドメインオーソリティを上げることに影響があるらしい

サイトのモバイルフレンドリーを向上させることはドメインオーソリティを上げることに影響があるそうです。

「どれぐらいモバイルフレンドリーなのか?」は Google 公式ツール「モバイル フレンドリー テスト」 で確認できます。

例えば、当サイトはセッションの 93% が PC なので、未だモバイル対応をしてないのですが「モバイル フレンドリー テスト」で確認してみた結果が以下のスクリーンショットです。

モバイル フレンドリー テスト

当然の結果ですが「モバイル フレンドリーではありません」というアラートメッセージと共に、いろんなアドバイスが表示されています。

このアドバイスを全部クリアしてモバイルフレンドリーを向上させて、ドメインオーソリティを上げて SEO 効果を見込みたいです。

ひとまず、当サイトもモバイル対応に取り組みます。

[Mac] Excel (エクセル) が遅いときの解決方法

仕事でバイヤーさんの業務改善をしていて「最近、Excel の文字入力が遅くて困ってる」という相談を受けて、解決方法を調べて実践したのでその手順をご紹介します。

Mac Office2011 Excel

事前準備 – Excel アプリを終了する

まず最初にすべきことは「Excel を終了する」ことです。

これを忘れていると、環境設定ファイルやキャッシュファイルを削除しても Excel が遅い問題は解決されません。

僕は実際に Excel を終了する手順を忘れてしまっていて「Excel 遅いの治らない…」という状況に陥りました。

フォントファイルの重複修正

  1. アプリケーションから Font Book アプリを開く
  2. All Fonts で全てのフォントを選択する
    Font Book - All Fonts
  3. Font の重複を解消する
    Font Book - Look for Enabled Duplicates

環境設定 plist ファイルの削除

  1. Finder から Shift + ⌘ + G を押してダイアログボックスに ~/Library/Preferences/ を入力する
    Finder - ~/Library/Preferences/
  2. 以下の環境設定ファイルを削除する
    com.microsoft.Excel.plist
    • com.microsoft.Excel.plist
    • com.microsoft.office.plist

キャッシュの削除

  1. Finder から Shift + ⌘ + G を押してダイアログボックスに ~/Library/Caches/ を入力する
    Finder - ~/Library/Caches/
  2. Microsoft フォルダを削除する
    Caches - Microsoft

まとめ

Excel for Mac の動作が重いときに解決する手順は以上です。

環境設定ファイルやキャッシュファイルを削除しないと遅くてまともに使えないなんて Excel ダメすぎだろー。

Google Search Console で co.jp や .com によって検索結果の切換えはできますか? #SEO

  • Q) google.com と google.co.jp の検索結果は異なりますか?
  • A) はい、異なります。さらに、検索したユーザーの接続元のIPアドレスや言語設定によっても変わります。
  • Q) Google Search Console で co.jp や .com によっての検索結果の切換えはできますか?
  • A) 私が知る限りでは、できないようです。

「UZABASE Meetup#3 〜チームの生産性を向上させる〜」参加レポート #UzabaseMeetup

「UZABASE Meetup#3 〜チームの生産性を向上させる〜」という勉強会に参加してきたレポートです。

UZABASE Meetup#3

オープニングLT

チームの生産性を下げる要因が2つある。

1. 役割を明確にし過ぎること

  • 視野が狭くなる。
  • 個人プレーになり連携がしにくくなる。

2. 責任の所在を決めてしまうこと

失敗したときの責任を考えてしまうのに時間を割くのは本当に無駄ですよね。

UZABASE Meetup#3 責任の所在を求めてしまう

“役割の線引を曖昧にし、成すべきことを俯瞰して見るべき。”

  • Q) 曖昧にすると特定の人に仕事の負荷が偏ったり、誰もタスクを拾わなくなったりするけど何か工夫してるのか?
  • A) 毎日 10 分はチームで会話して「こういうことに困ってるんだよ」とかリアルなコミュニケーションをとると、いい感じにチームが回った。

生産性を高めてハッピーライフを

なぜ「生産性」を重視するか?

なぜ「生産性」を重視するか?

  • スピードは競争力の源泉
  • 仕事以外の時間も大切に

ホント、この2つですよね。

chatopsのおかけでエンジニアがルーティンワークから解放された話

エンジニアで工数でやってると肝心な開発が進まない

  • Q) Push 通知以外で非エンジニアに chatops を導入できてる事例は?
  • A)

三位一体GitHub駆動開発

ZenHub を使っているのか。以前、使っていたけどページの表示処理が遅すぎて使うの辞めたけど Trello と比べてどうなんだろう?

  • Q) 以前 ZenHub を使っていたんですが表示が遅くてイライラしませんか?
  • A) 遅いという認識はある。

まとめ

懇親会のピザ

ユーザベース、エンジニア的にいい雰囲気な会社という印象でした。