タグ

ブックマーク / postd.cc (280)

  • 技術系スタートアップ企業の共同設立から学んだこと | POSTD

    まだほんの小娘(正確には25歳)で、プロダクトマネージャではなくコード戦士だったころ、私は、陳腐で古くさいシリコンバレー・スタントを演じました。3人の仲間と共同で技術系スタートアップ企業を設立したのです。 みんな若者でした。その中の年長者(私は当に、彼をとんでもなく年寄りだと思っていました)は、なんと31歳でした。 あの設立は、なんとも厳しい学びの経験でした(それでも、大抵の基準によれば、まずまず成功したベンチャーで、4年で大企業に買収されました)。 この”面白い”経験をしてからは、私は、技術系スタートアップ企業の共同設立から学んだことのリストを記録しています。それを、ここに公開します。 正しい共同設立者の選び方について 共同設立者が「自分はたぶん、”技術的偉業”を成し遂げる方法を知っている、世界で5人のうちの1人だ」というようなことを言ったら、すぐに逃げましょう。もしかしたら彼は正しく

    技術系スタートアップ企業の共同設立から学んだこと | POSTD
  • 知っておくべきモバイルA/Bテストの用語集42 | POSTD

    OptimizelyはA/Bテストや多変量テストを提供する、パワフルで使いやすい世界規模のWeb最適化プラットフォームです。技術的な知識がなくてもウェブサイトを動的に書き換えて様々なパターンをテストすることができ、すぐに結果を集め目標達成に向けて進むことができます。スターバックスやeBayなど8,000を超える企業がOptimizelyを導入し、19万を超えるテストが作成され、この数は急速に伸び続けています。 相変わらず携帯端末は世界を席巻しており、モバイルアプリケーション上で稼働するA/Bテストの数も増加しています。A/Bテスト自体は目新しいものではありませんが、モバイルアプリのA/Bテストに関する用語についてはあまり馴染みが無い人も多いかもしれません。モバイルのA/Bテストを成功させるため、まず正しい用語を知ることから始めましょう。知っておくべきCRO用語14の続編として、モバイルの用

  • テスト駆動開発とは何か、それを気に入っているのは何故か、あなたも使うべきなのは何故か | POSTD

    ペースが速い現代のソフトウェア開発環境では、テスト駆動開発(TDD)という言葉をよく聞きます。その利点だけでなく欠点についてもソフトウェア開発コミュニティでよく議論されています。TDDについて、”自己嫌悪に陥って屈辱を味わっている者に対する非現実的で効果のない道徳教育のようなものだ”と言う人もいれば [1] 、”リファクタリングを使って迅速な設計を支援するただのツールだ”と言う人もいます [2] 。 「ダメなプログラマは全てに答えを持つが、優れたテスタは全てに疑問を持つ」 Gil Zilberfeld しかし、TDDは新たな手法というわけではありません。広く知られている最も古い文献は1957年に出版されたD.D. McCracken著の『Digital Computer Programming: The First General Introduction in Book Form, St

    テスト駆動開発とは何か、それを気に入っているのは何故か、あなたも使うべきなのは何故か | POSTD
  • プログラマ能力指標表 | POSTD

    2015年05月27日: 表が見にくいというご意見を頂いたため、原文著者に連絡のうえ体裁を修正しました。 上位のレベルには下位のレベルの知識も蓄積されているということに注意してください。つまり、レベル n であれば n より低いレベルの知識も全てあります。 コンピュータサイエンス データ構造

    プログラマ能力指標表 | POSTD
  • モダンミニマリズムという選択―フラットデザインはデザイナーを堕落させたか? | POSTD

    フラットデザインはWebデザイナーの役割を奪った?私はそうは思いません。 私は最近、 『デザイナーの堕落』 という興味深い記事を読みました。その中には、著者であるEli Schiffの意見が明確に書かれています。もしこちらの記事を読んだことがなく、デジタルデザイン界のこれまでの動向に興味があるという場合は、ぜひ一読することをお勧めします。 しかし私は彼の意見に真っ向から反対です iOS7やマテリアルデザインの登場によって、フラットデザインが増え、“モダンミニマリスト”というデザインムーブメントが生まれました。そのような変化が、デジタル界で働くビジュアルデザイナーの仕事をいかにして味気なく、そして価値の低いものにしたのかという点について、Eliは主に説明しています。 学生時代に建築学を学んだ私は、モダンミニマリスト(フラット)デザインの普及において、同様の例をたくさん見てきました。モダンミニ

    モダンミニマリズムという選択―フラットデザインはデザイナーを堕落させたか? | POSTD
  • ビヘイビア駆動開発 ― ウォーターフォールモデルからのステップ | POSTD

    ビヘイビア駆動開発(BDD:Behavior-Driven Development、振る舞い駆動開発ともいう)を実務に沿って簡単に紹介し、ソフトウェア開発プロセスに対してこの手法がどれほど有益かを説明します。 はじめに BDDで重視しているのは、フィードバックループを最小限に短縮することです。BDDはソフトウェア開発手法の進化の中で、理論的に一歩前進したものといえます。稿ではBDDの概念と、その原型のモデルを説明します。 ソフトウェア開発者や、エンジニア部門のマネージャー職に就いている人ならば恐らく、以下の図のようなウォーターフォールモデルはよくご存じでしょう。 注釈: Waterfall model:ウォーターフォールモデル System Requirements:システム要件定義 Software Requirements:ソフトウェア要件定義 Analysis:要求分析 Progr

    ビヘイビア駆動開発 ― ウォーターフォールモデルからのステップ | POSTD
  • Goはオブジェクト指向言語だろうか? | POSTD

    “オブジェクト指向”の意味を当に理解するには、この概念の始まりを振り返ることが必要です。最初のオブジェクト指向言語はSimulaという言語で、1960年代に登場しました。オブジェクト、クラス、継承とサブクラス、仮想メソッド、コルーチンやその他多くの概念を導入した言語です。おそらく最も重要なのは、データとロジックが完全に独立したものであるとする、当時では全く新しい考え方をもたらしたことでしょう。 Simula自体には馴染みがない方も多いかもしれませんが、Simulaからインスピレーションを得たとされるJavaC++、C#、Smalltalkといった言語は皆さんよくご存知でしょう。さらにそこからインスピレーションを得たものとしてObjective-CやPythonRubyJavaScriptScalaPHPPerlなど様々な言語があり、Simulaは現在使用されているポピュラーな

    Goはオブジェクト指向言語だろうか? | POSTD
  • grepでログ解析をするなんてひどい話だ | POSTD

    今でも、 systemdのjournal におけるバイナリのストレージフォーマットに関して、不満を漏らす人が多くいることに私は驚きを隠せません。私は長年、システム管理者として働いてきており、1年以上も syslog-ng の オープンソースエディションのメンテナ として活動してきました。だからこそ、テキストではないストレージフォーマットに対して、なぜ多くの人が批判的なのか、私は理解に苦しんでいます。更に、反論を唱える人までいることが信じられません。もしかしたら、私は別世界の人間なのかもしれません。ですが、より良い選択肢があるのに、テキストのストレージを使う理由はほとんどありません。ロギングをする必要性、そしてなぜ、テキストのログストレージに対してそこまで用心深いのかについて、私は何度も尋ねられました。ここに、私が導き出した答えを紹介したいと思います。 これは、journalについて弁明する

    grepでログ解析をするなんてひどい話だ | POSTD
  • コードの可読性、ハッカビリティ、抽象化 | POSTD

    def deploy(ip): copy('code/', ip + ':~/code', recursive=True) write_template('conf/config.py', ip + ':~/config.py') write_template('conf/crontab', ip + ':~/.crontab') write_template('conf/crontab', ip + ':/etc/apache2/httpd.conf') run_as_root('service cron restart') run_as_root('service apache restart') post('https://pingdom.com/api/2.0/checks', { 'name':ip, 'host':ip, 'type':'ping' }) タスクを実行するものと

    コードの可読性、ハッカビリティ、抽象化 | POSTD
  • パフォーマンス分析の方法論23選 | POSTD

    パフォーマンス分析のメソドロジーとは、システムやアプリケーションのパフォーマンスを分析する際に準拠できる手法です。メソドロジーを手がかりとして作業に着手できますし、根原因やその他の要因の発見に役立ちます。異なる種類の問題を解決するのには、それぞれに適したメソドロジーがあります。目的を達成するまでに何度か方法を変えて試してみるといいかもしれません。 メソドロジーを使わない分析は手探りの探索になり、ある問題に対する手がかりが見つかるまで(もしあればですが)ずっと場当たり的にメトリクスを分析することになってしまいます。 このサイトでは以下のメソドロジーについて詳しい資料を公開しています。 USE(Utilization Saturation and Errors)メソッド :リソースのボトルネックを見つける TSA(Thread State Analysis:スレッドステート分析)メソッド :

    パフォーマンス分析の方法論23選 | POSTD
  • Go 実践4日間 | POSTD

    私の仕事の一つに、簡単なバイナリファイルフォーマットのリバースエンジニアリングがあります。”簡単な”というのは、通常は他の人たちが実際の作業全てを行うからです。私はただ、1つか2つの特別なフラグの意味を理解し、できるだけ多くの発見をして自分のブログに公開するだけです。 バイナリファイルの心臓部をのぞくときは、バイナリエディタを利用しています。ただ、 私の気に入っているSynalyze It! でさえ、使うのは手間がかかります。ファイルフォーマットを解明しようとする時、それぞれのバイトの持つ意味を私自身の仮定に基づいてマークアップしたいのですが、今のところ、そのようなことができるバイナリエディタはありません。現状では、バイナリファイルのバイナリ情報を紙に印刷して、去年のテクノロジー関連のカンファレンスでもらったボールペンでマークアップするのが私のワークフローです。 木々を守り、カンファレンス

    Go 実践4日間 | POSTD
  • Androidの10ms問題:Androidオーディオパスレイテンシ解説 | POSTD

    ゲームやシンセサイザー、DAW(デジタルオーディオワークステーション)、インタラクティブなオーディオアプリ、バーチャル楽器アプリ、そして今注目のバーチャルリアリティアプリなど、低レイテンシのオーディオ機能に強く依存する多数のモバイルアプリは、全てAppleのプラットフォーム、App StoreとiOSデバイスで成功し、App StoreとiOS開発者に巨額の利益をもたらしています。こういったアプリはAndroidには ほぼ存在しません。 Androidの10ms問題 (ほとんど理解されておらず、多大な影響をもたらしうる非常に困難な技術的課題)のために、前述のような 利益を生み出すアプリがまともなパフォーマンスを発揮できない どころか、現時点ではAndroid上に公開すらされないのです。 スタートアップと開発者は、iOSでは成功しているアプリ( 10 ms以下のオーディオレイテンシを必要とす

    Androidの10ms問題:Androidオーディオパスレイテンシ解説 | POSTD
  • MapReduceは楽しい:巨大なデータセットのサンプリング | POSTD

    この記事はBloomReachの主席エンジニア、Chou-han Yangによるものです。 MapReduceの最大の利点は、非常に高い演算性能と巨大なストレージを瞬時に手に入れられることです。これは、子供が前から大好きだった遊びに、新しいおもちゃを加えられないか、と考えるようなものだと私は思います。長い間楽しんできた遊びに対して、新しい遊び方を思いついたとしたら、とても興奮しますよね。 このことから私は、シングルプロセスのプログラムを書く時によくやることを改めて思い出します。つまり、MapReduceフレームワークに合わせるにはプロセス全体を徹底的に調査しなければならないということです。特にHadoopは、スムーズに実行するために慎重な調整が必要となるからです。 この記事では、簡単な例を見てみましょう。サイズが不明の非常に大きなデータセットからn個の要素をサンプリングします。非MapRe

    MapReduceは楽しい:巨大なデータセットのサンプリング | POSTD
  • Node.jsフロー制御 Part 2 – FiberとGenerator | POSTD

    この記事は、 以前投稿したJavaScript/node.jsでの非同期フローに関する記事 の続編です。 今回は以下について取り上げます。 Fiber(fibrous.js) Generator(ES6) Generator + co + mz ここでも私の書いた、Expressフレームワークを使った以下のルート処理(お粗末ですが)を例に見てみましょう。 ファイルから読み込む いくつかのプロセスを実行する(ステップの数は3つ) プロセスとは、単に拡張データをコールバックする任意の非同期処理を指します ファイルに結果を書き出す リクエストに対して成功またはエラーのメッセージを返す アプローチ1 – fiberを使う var fs = require('fs'); var express = require('express'); var fibrous = require('fibrous'

    Node.jsフロー制御 Part 2 – FiberとGenerator | POSTD
  • Less is more:プログラミング言語設計の進歩史 | POSTD

    多くの言語は冗長性を有していますが、これらの機能を省いていくことも言語設計の進歩につながります。 巷には数多くのプログラミング言語があり、新しい言語も継続的に紹介されています。でも新しいものが古いものより優れているかというと、そうとは言えません。なぜなら、何が“優れているか”を判断する明確な尺度は存在しないからです。 それでも過去からの流れを見ていくと、優れた言語を作る1つの方向性は、言語にある冗長性を特定し、それらを持たない新たな言語をデザインすることにあるように思えます。 「完璧とは、それ以上足せない時ではなく、それ以上引けない時に達成される」 – Antoine de Saint Exupéry この投稿では、現在までに知られている言語の冗長的機能を見ていくと共に、恐らく冗長性を有しているだろうと思われる機能についても触れていきます。 自ら墓穴を掘るあらゆる可能性 初めてコンピュータ

    Less is more:プログラミング言語設計の進歩史 | POSTD
  • モバイルナビゲーションを考察する – ハンバーガーメニューに代わるもの | POSTD

    「Webサイトやアプリのナビゲーションに ハンバーガーメニュー を使うべきかどうか」というテーマに関して、UI/UXデザイナーの間で交わされる、すばらしい議論や記事を目にする機会があります。 もし、ハンバーガーメニューの始まりや歴史が気になる場合は こちらの記事 をご覧いただくといいでしょう。 しかし、今回はハンバーガーメニューについて語る気はありません。この記事ではハンバーガーメニューの代わりとなり得る他のナビゲーションを模索し、その説明をしたいと考えています。 なぜこの記事でハンバーガーメニューを扱わないのでしょうか? それは、ハンバーガーメニューは簡単で便利なソリューションであると同時に、以下に列記するような数多くの欠点を併せ持っていると、私が個人的に確信しているからです。 * 効率性の低下(インタラクションが遅くなる) * 視認性の低下(メニューが隠れる) * 不要アイテムの増加

    モバイルナビゲーションを考察する – ハンバーガーメニューに代わるもの | POSTD
  • PHPエクステンションをRustで作る | POSTD

    アップデート :この記事の第一稿を投稿してから数時間後、PHPのベンチマークが機能していないことに気付きました。ですから万全を期すため、PHPRustの双方のバージョンを更新しました。変更箇所は、GitHub(最後にリンクあり)にまとめて載せてあります。 昨年10月、私は Etsy の とある同僚 と、どうやったらPHPRubyPythonといったインタプリタ型言語で今よりずっと簡単にエクステンションが書けるかについて議論しました。うまく書けない原因の1つとして、エクステンションは概してCで書かれますが、Cに長けているのでなければ自信を持ってコードを書くのは難しい、といったことなどを話しました。 あれ以来、私はずっとRustでエクステンションを書く方法を模索し、ここ数日は実際にあれこれ試してみました。そして今朝、ついにうまくいったのです。 Cに埋め込んだRustPHPで実行 私の基

    PHPエクステンションをRustで作る | POSTD
  • 開発経験ゼロのイラストレーターがゲーム制作 – Alto’s Adventure制作記 | POSTD

    数週間前やっと、大興奮の長い旅にピリオドを打つことができました。 2年間かけて私の全精神と愛情を注いで制作したAlto’s Adventureがついにリリースされました。 簡単な道のりではありませんでしたので、その制作過程で私が感じたことをうまく言葉にできるか分かりませんが、 まずはこのゲームをダウンロードして遊んでくれている全ての方に感謝の意を表したいと思います。 このゲームで遊んでくれている方がいるというだけでもう私の努力は報われています。 今回のゲームの制作に関して経験してきたことや、直面した問題などをシリーズで投稿していきたいとずっと考えていました。 何が皆さんの興味を引き、どこまで詳細にお話するかなどは難しい課題ですが、まず簡単なゲームの紹介から始めたいと思います。 Alto’s Adventureは、移りゆくアルペンの美しい景色を背景に、スノーボードの果てしない冒険ができるゲー

    開発経験ゼロのイラストレーターがゲーム制作 – Alto’s Adventure制作記 | POSTD
  • FacebookのFluxアーキテクチャの始め方 Part 2 | POSTD

    前編はこちら: 【翻訳】FacebookのFluxアーキテクチャの始め方(前編) 血液(イベント)を流す 次は、イベントがアプリの周りに流れるようにします。そうすれば、UserList上の様々なユーザをクリックしてチャットを切り替えることができます。 最初のアクション アクションはどこからでも生じる可能性があります。私たちは、アクションは何かに影響を与えるということと、自分たちがディスパッチャを通してアクションをストアに流し込む必要があるということさえ分かっていればいいのです。ユーザがあるユーザをクリックしたらアクションを作成し、イベントを送り出します。 public/src/js内にactionsと呼ばれるフォルダがあります。messages.jsというファイルを作成しましょう。 var Dispatcher = require('../dispatchers/app'); var me

    FacebookのFluxアーキテクチャの始め方 Part 2 | POSTD
  • Go言語でモンキーパッチ | POSTD

    モンキーパッチを、RubyPythonのような動的言語のみを扱うものと思っている人は多いようですが、それは違います。コンピューターは単独では何もできないマシンで、私たちが指示を与えることで動くものなのです。それでは、Go言語の関数がどのように機能して、実行時にどのように変更することができるのかを見ていきましょう。この記事では、インテルのアセンブリの構文が多く出てきますので、アセンブリ言語を読めない方は リファレンス を使いながら読み進めてください。 もしモンキーパッチがどのように機能しているかには興味がなく、単に使えるようになればいいと思っている方はライブラリがあるので こちら をご覧ください。 注意:サンプルはgo build -gcflags=-lで作成し、インライン展開を無効にしています。この記事の内容は、アーキテクチャが64bitsで、Mac OSXLinuxバリアントなどのU

    Go言語でモンキーパッチ | POSTD