カテゴリー : 2015年 2月

決めきれないという負債

意思決定がスムーズにできないと、工数としての時間やスピード面で圧倒的に不利になる。

意思決定をするのは「誰か?」、「権限が曖昧」というのが問題としてあげられる。

それにより、決めきれないという負債が溜まっていく。

これはスタートアップにとって致命的である。

[Atom] デフォルトで入っているパッケージ一覧

Atom エディタに最初から入っているパッケージ一覧は apm list コマンドで確認できます。

version 0.182.0 にはビルトインパッケージが 84 個もあるみたいです。

% atom -v
0.182.0
 
% apm list
Built-in Atom packages (84)
├── archive-view@0.50.0
├── atom-dark-syntax@0.26.0
├── atom-dark-ui@0.47.0
├── atom-light-syntax@0.26.0
├── atom-light-ui@0.41.0
├── autocomplete@0.44.0
├── autoflow@0.22.0
├── autosave@0.20.0
├── background-tips@0.23.0
├── base16-tomorrow-dark-theme@0.25.0
├── base16-tomorrow-light-theme@0.8.0
├── bookmarks@0.35.0
├── bracket-matcher@0.71.0
├── command-palette@0.34.0
├── deprecation-cop@0.37.0
├── dev-live-reload@0.41.0
├── encoding-selector@0.18.0
├── exception-reporting@0.24.0
├── find-and-replace@0.157.0
├── fuzzy-finder@0.67.0
├── git-diff@0.52.0
├── go-to-line@0.30.0
├── grammar-selector@0.45.0
├── image-view@0.49.0
├── incompatible-packages@0.22.0
├── keybinding-resolver@0.29.0
├── language-c@0.40.0
├── language-clojure@0.12.0
├── language-coffee-script@0.39.0
├── language-csharp@0.5.0
├── language-css@0.28.0
├── language-gfm@0.64.0
├── language-git@0.10.0
├── language-go@0.21.0
├── language-html@0.29.0
├── language-hyperlink@0.12.2
├── language-java@0.14.0
├── language-javascript@0.57.0
├── language-json@0.12.0
├── language-less@0.24.0
├── language-make@0.13.0
├── language-mustache@0.11.0
├── language-objective-c@0.15.0
├── language-perl@0.10.0
├── language-php@0.20.0
├── language-property-list@0.8.0
├── language-python@0.32.0
├── language-ruby@0.48.0
├── language-ruby-on-rails@0.19.0
├── language-sass@0.34.0
├── language-shellscript@0.12.0
├── language-source@0.9.0
├── language-sql@0.14.0
├── language-text@0.6.0
├── language-todo@0.16.0
├── language-toml@0.15.0
├── language-xml@0.28.0
├── language-yaml@0.22.0
├── link@0.30.0
├── markdown-preview@0.137.0
├── metrics@0.45.0
├── notifications@0.28.0
├── one-dark-syntax@0.3.0
├── one-dark-ui@0.5.0
├── one-light-syntax@0.4.0
├── one-light-ui@0.4.0
├── open-on-github@0.32.0
├── package-generator@0.38.0
├── release-notes@0.51.0
├── settings-view@0.183.0
├── snippets@0.75.0
├── solarized-dark-syntax@0.32.0
├── solarized-light-syntax@0.19.0
├── spell-check@0.54.0
├── status-bar@0.60.0
├── styleguide@0.44.0
├── symbols-view@0.83.0
├── tabs@0.67.0
├── timecop@0.30.0
├── tree-view@0.160.0
├── update-package-dependencies@0.8.0
├── welcome@0.24.0
├── whitespace@0.29.0
└── wrap-guide@0.31.0

少し前のバージョンでは Built-in Atom packages に含まれていなくてあとから追加されたパッケージもいくつかあります。

なので、デフォルトで搭載されているパッケージを apm stars でお気に入り管理しているものから削除するなど、定期的にメンテナンスしてあげると良さそうです。

ちなみに、Built-in Atom packages に含まれているパッケージを apm install すると警告メッセージが出るようになってました。

apm install archive-view
 
The archive-view package is bundled with Atom and should not be explicitly installed.
You can run `apm uninstall archive-view` to uninstall it and then the version bundled
with Atom will be used.
 
Installing archive-view to /Users/bakorer/.atom/packages ✓

特にデフォルトとは違うバージョンを利用したいという理由がなければ迷わず uninstall しましょう。

% apm uninstall archive-view

以上です。

[Mongoose] 特定の field が変更されたかは isDirectModified, isModified, modifiedPaths で確認できる

Mongoose では document の特定の field に変更があったかどうかを isDirectModified や isModified, modifiedPaths などの method で確認できます。

Ruby on Rails の ActiveRecord でいうところの changed? や 属性名_changed? と似たような機能が Mongoose でも提供されています。

では、1つずつ紹介していきましょう。

Document#isDirectModified(path)

isDirectModified メソッドは引数に指定した field 自身が変更されていれば true をそうでなければ false を返します。

doc.set('documents.0.title', 'changed');
 
// 'documents.0.title' 自体が変更されているので true を返す
doc.isDirectModified('documents.0.title') // true
 
// 'documents' の下の階層で変更されているが 'documents' 自体は変更されていないので false を返す
doc.isDirectModified('documents') // false

Document#isModified([path])

isModified メソッドは引数に指定した field に関係がある箇所が変更されていれば true をそうでなければ false を返します。

doc.set('documents.0.title', 'changed');
 
// 変更された field とそれを含む上の階層は true を返す
doc.isModified()                    // true
doc.isModified('documents')         // true
doc.isModified('documents.0.title') // true
 
// 変更されてない field を指定すると false を返す
doc.isModified('something')         // false
 
// 'documents' の下の階層で変更されているが 'documents' 自体は変更されていないので false を返す
doc.isDirectModified('documents')   // false

Document#modifiedPaths()

modifiedPaths メソッドは変更があった field 名を Array で返します。

doc.set('name', 'test name');
doc.set('documents.0.title', 'changed');
 
doc.modifiedPaths()
[ 'name',
  'documents.0.title' ]

これらの機能をうまく使ってロジックをすっきり書けるといいですね。

スクリーンショットの撮り方を解説している take-a-screenshot.org がカスタマーサポートに便利!

スクリーンショットの撮り方をデバイスごとに丁寧に解説している take-a-screenshot.org がカスタマーサポートに便利そうなのでご紹介します。

take-a-screenshot-org

対応デバイス一覧

  • Mac
  • Windows
  • iOS
  • Android
  • KDE
  • GNOME
  • Websites

スクリーンショットの撮り方すら分からないユーザのカスタマーサポート対応をスムーズにこなすために、とても重宝しているサービスです。

「チームメンバーとの信頼関係を築く:定期個人面談の薦め」を読んで 1on1 実践してみたらとてもよかった!

チームメンバーとの信頼関係を築く:定期個人面談の薦め – クックパッド開発者ブログを読んでみて、1on1 を実践してみたらよかったという事実を忘れないように書き残しておきます。

面談という名の雑談を30分ぐらいしました。意図的に30分ぐらいの時間を確保しないと、日々の業務に忙殺されてよくないなと面談を終えて改めて感じました。普段、話さないような話題もできたので、無理やり会話する場を作ってみて正解でした。

これからも、隔週ぐらいで 1on1 の面談を継続していきたいです。あとはチーム内のエンジニアだけの MTG の時間もとってなかったので、こちらは週1回ぐらいのペースで行うと捗りそうな気がしております。