サイト更新終了のお知らせ

2年弱前 | 100 points

読者のみなさまへ

Wazanova News の運営を行ってきた米国法人 Wazanova, Inc. を清算することにともない、当サイトの更新を終了いたします。1 年半にわたりご応援いただき、まことにありがとうございました。

特に、Gittip (Gratipay) を通じて継続的にご寄付いただいた方々に御礼申し上げます。2015年 3月上旬より寄付の受付を終了し、お預かりしたお金は全額 Gittip サイトの運営者に寄付するよう設定してあります。

既存コンテンツは当面の間、従来の URL でも閲覧できます。Jshiike からのご挨拶にもある通り、一部を個人ブログサイトにも移行しており更新も予定されていますので、こちらについてもご愛顧いただければ幸いです。

今後もメンバそれぞれ、IT / ソフトウェアエンジニアの世界に貢献していければと考えております。引き続きどうぞよろしくお願いします。...

卒業します(Jshiike)

2年弱前 | 100 points

Wazanova Newsの読者の皆様へ、

この度、Wazanova Newsを卒業することになりました。1年半に渡り応援していただきまして、誠にありがとうございました。

特に、Gittipを通じて継続的に寄付いただいた皆様にお礼申し上げます。3月頭に寄付の受付を終了するとともに、応援していただいた趣旨に鑑み、お預かりしたお金は全額Gittipのサイトの運営側に寄付するかたちに切り替えました。これを通じて、エンジニアコミュニティのために活動する誰かのお役に立てればと思います。

Wazanova News上で執筆を続けていたコンテンツは、人気のものを中心に400本ほどをピックアップし、個人のブログサイト( http://jay7blog.tumblr.com/ )に移行しました。テクノロジーが世の中をどのように変えていけるのかという観点で、今後も時間の許す範囲で書いていこうと考えています。

...

Stack Overflowのアルゴリズム: ユーザ属性編

2年弱前

Stack Oveflowではサイトの各機能の精度をあげるために、「webエンジニア」「Javaテクノロジー」など、ユーザごとの属性ラベルを付与しています。ユーザは、そのデータをダウンロード、もしくはクエリされないように無効化することも可能です。この仕組みを構築したProvidenceプロジェクトを、同社のエンジニアであるKevin MontroseとJason Punyonが紹介しています。

1) 機械学習における最適なモデルの模索

まず把握したかったポイントは、

  • エンジニアのタイプにはどのようなものがあるか?
  • エンジニアは一つのタイプに特化しているものなのか?
  • タイプごとにサイトの利用形態は変わるのか?

Stack Oveflow Careersにある大量だが曖昧な表現の履歴書と求人データを眺めて、

  • フルスタックwebエンジニア
  • フロントエンドwebエンジニア
  • バックエンドwebエンジニア
  • ...

Stack Overflowのアルゴリズム: Top Questions編

2年弱前

サイトが成長していくとすると、ユーザに表示すべきリストのアルゴリズムもそれに伴い調整しないと違和感がでてきます。事例として、Stack Overflowにアクセスすると表示されるTop Questionsリストの時系列での変化をまとめてみました。


1) 当初のアルゴリズム

最新のactivity date(activityの定義は、新しい質問、回答もしくは修正)順にソート

2) 2010年11月

問題点

質問数の急増により回答のペースが追いつかず、50%の質問が未回答の状態になり、Top Questionsリストも未回答が占める状態になる。

実験

calculateWeightファンクションでソートのアルゴリズムの各パラメータをユーザがフロント側で設定/保存できる機能を実験的に提供 [1] し、本件に関心の強いユーザからのフィードバックを募集。(...

何をしたかより何ができそうか

2年弱前 | 1 point

今や飛ぶ鳥を落とす勢いのSlackのCEOであるStewart ButterfieldがSarah Lacyのインタビューに答えて、40代のエンジニアを積極的に採用して、夕方6時半にはオフィスが閑散としていると語ってます。記事のとおり、父親母親になった世代の働く環境を重視し、サステナブルな企業をつくりあげることを目指しいている面もあるかもしれません。しかし実際には、20代に極端に偏っているベイエリアのスタートアップの熾烈なエンジニア採用競争に対して、優秀な人材確保のためにリモートワークを戦略的に選択する企業のように、能力の高いベテランを活用する工夫をして、相対的に人材競争力のアップを狙っているのかなと思いました。

ベテランの採用を躊躇する理由は、物事を決めつけたり、フィードバックに耳を傾けなくなったり、新しいことに挑戦しなくなったり、要は、変わりゆく環境に適応できなそうで、...

React CanvasによるモバイルブラウザのUI改善とそれが起きる必然

2年弱前 | 2 points

ものごとが進化すると、利用するユーザの満足度はあがるので、それを用意する作業量はツールの改善に従って最終的には減っていくのか?

スマホが登場して、アプリ上でのスワイプなどの直感的にできる操作や表現の幅が広がり、またディスプレイも改善。では、プロダクトをつくる側がそれに慣れてくると、作業量が減るのか?いや、現実は逆。同じことを実現する作業量は減っても、トータルでは減らない。ブラウザとアプリにまたがって、双方のメリットを取り込もうと、もっとレベルの高いUIを目指した競争が続いています。

David BellonaがTwitter Universityでの講演で紹介してくれているジェボンズの法則にまつわる話を聞くと、同じような矛盾については、昔も今も変わらないものだと理解できます。

最初に触れているのは、現代のエピソード。Googleの元CEOのEric Schmidtが、「我々は、...

マネージャのいない組織に進化する現実と幻想

2年弱前 | 3 points

マネージャのいない組織へのチャレンジについては、一昨年から話題になっていますが、ここにきてかなり論点が絞られてきていると思います。

1) 非同期 & 可視化が進む

  • GitHubなどのツールに親しむエンジニアが、進捗が可視化され、非同期で仕事を進めることに先に慣れてきたが、SlackのようなコミュニケーションツールやTrelloなどのタスク管理ツールの浸透で、非エンジニアにもじわじわその理解が進んでいく。

2) マネージャの役割が変わる

  • 上記1) が進むことで、進捗を報告させて情報を集約、また逆に、全社 / 業界の情報をフィルタリングして伝えるという、情報操作ハブとしてのマネージャの役割はかなり減る。情報の透明性があがることで、情報を握っていることがマネージャのパワーの源泉である時代が終わる。
  • プロジェクトの進捗 / 開発のクオリティ / 売上 / 評価とフィードバック /...

気遣いのあるデザインの裏にある努力

2年弱前 | 2 points

フレームワークやツールが進化することで、そこそこのスキルがあれば比較的短い期間でもそれなりのプロダクトをつくれるようになるという恩恵を世の中全体が享受できますが、一方で才能のある人たちは、その便利になった道具を利用して、更に先に進みます。そしてUIの競争は際限なく続きます。

一つの目のパターンは、意外なところまで気遣いをしているので、それを発見したときにポジティブな喜び、驚きを感じるところ。

Slackを使っていると、

  • 登録済のパスワードの入力を求められる画面で、スマホキーボードでのパスワード入力を面倒に思う人、もしくはパスワードが長い人に配慮して、「パスワードを入力する替わりに、リンクをメールに送って、クリックするだけにしますか?」という選択肢が示される。
  • 衝動的に複数人にメッセージを送ろうとしたときに、時差があるところにいるメンバが含まれていたら、「このメッセージを受け取る人が...

よく考慮したコーディングとパフォーマンスの関係

2年弱前 | 1 point

Benjamin Supnik曰く、高いパフォーマンスをだせるソフトウェアは、高いパフォーマンスを目指したデザインプロセスが大切。「本当にひどい状態になったら、プロファイラで調べて直すから。」といっても色々積み重なると簡単には直せなくなると指摘しています。そして、ゲーム開発において遅いコードを生み出すパターンを挙げてくれてます。

1. 無駄なことをする

  • テーブルを再描画する際、ユーザが見える部分だけでなく、テーブル全体のデータを取得していないか?
  • 同じ値が計算されて何度も使われるケースで、都度計算し直していないか?
  • 必要とするのが現状のステートであるのに、描画の度にOpenGLのステートを更新していないか?
  • エディタプログラムを使ってドキュメントで大量のアイテムを編集するケースで、アイテムごとにUIを更新していないか?最後にまとめて更新すればよい。
  • 非効率なアルゴリズムの選択。
  • ...

React Nativeがスマホアプリのフロント開発を変えるのか

2年弱前 | 1 point

Reactは当初、「Huge step backwards(これではメンテできなくて、かえって大きく後退してしまっている。)」「Rethink established best practices(皆が積み上げてきたベストプラクティスを変えようとしている。)」と揶揄されたりもしましたが、最近は他のJavaScriptフレームワークにもその思想の一部が反映されるようになって、メインストリームに近づきつつあるようです。

さて今回Facebookが、React Nativeを発表 & オープンソースとして公開するとして話題になっていますが、Tom Occhinoは React.js Conf 2015のキーノートスピーチで、「一度書けば、どのプラットフォームでもうまく動作する。」ではなく、「一度覚えれば、どのプラットフォーム向けにも書けるようになる。」ものであることを強調しています。...

Goでのゲーム開発

2年弱前

Minecraft的なものをGo言語で試してみた経験をまとめたブログのエントリー。専用のツール / ライブラリ / エンジンなどはまだ充実はしてない中で、Goがゲームづくりにどこまで使えそうかと考えるうえでの参考になればと思います。

採用のポイントとしては、

  • アウトプットスピードがCと同じでなくても、近づきつつある。
  • Cとのインターフェースが簡単。
  • メモリレイアウトの操作のしやすさ。
  • ガベッジコレクションにおいて、メモリモデルを利用してガベージを安易に増やさない工夫ができる。
  • 概ね安全に書ける。
  • コンパイルが早い。
  • オーバーヘッドがほぼかからないGLのバインディング。
  • ビットバンギングにも向いている。
  • 優れた並行処理primitive & network。

注意点としては、

  • 気の利いたデバッガーがまだない。サーバ側の開発では、...

Prometheus: Go言語で書かれたモニタリングシステム

2年弱前

Prometheusは、SoundCloudが中心となって開発を進めているオープンソースのプロジェクト。Dockerの社内でもメインのモニタリングシステムとして利用されているようです。

各社のブログのエントリーから、その特徴をまとめると。

  • 多元データモデルとそれを活かす柔軟なクエリ言語
    • 全てのデータにタイムスタンプのある、OpenTSDBに準じたデータモデル。
    • http_response_500_totalhttp_response_403_totalなどHTTPレスポンスのステータスごとに用意しなくても、ラベルで分類できる。api_http_requests_total{method="GET", endpoint="/api/tracks", status="200"}
    • コンテナの分析の例として、「...