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

  • 新規SaaS事業における最大の課題 | POSTD

    新規SaaS事業における一番の課題はその成長です。お金を生み出す将来有望な仕組みを構築するというのは、それ自体、心を奪われる作業とも言えますが、その歩みは決して速いものではありません。何かしらの製品を立ち上げた人の誰しもが、 「他のサクセスストーリーと違うじゃないか」 というような、やり場のない気分になるのではないかと思います。 Nusii は成長しています。ただ、私の思いに反して、そのペースは遅々としたものです。では、これに対して何かできることはあるのでしょうか。 コンバージョンは良好 Michaelと私は定期的に数字を確認しますが、大体において、その結果にとても気分をよくしています。トライアルへのサインアップをする訪問者の割合は2.4%と、なかなかのものですし、トライアルから有料版に切り替える顧客は実に45%です。もちろん、私たちはSaaS分野では新参者なので、このデータはある程度範囲

    新規SaaS事業における最大の課題 | POSTD
    doublehorn93
    doublehorn93 2015/06/19
    新規SaaS事業における最大の課題
  • シンプルの心理学 ― 心地良いデザインのために | POSTD

    私たちの誰もが理解する”シンプル”という概念の正体を突き止めることは、難しそうに見えますが、実はそうでもありません。 私たちが製品やWebサイトをシンプルと感じるかどうかの背景には、”見れば分かる”ということだけではなく、単なる直観的な反応にとどまらない何かがあります。 Steve Jobs は次のように述べています。 シンプルであることは、複雑であることより難しい場合がある。物事をシンプルにするためには、思考を整理して懸命に考えなくてはならない。しかし、努力する価値はある。ひとたび達成すれば、山をも動かすことができるのだから。 シンプルにものを作ることにそんなに力があるのであれば、なぜ私たちはそうできないのでしょうか。 なぜシンプルであることは、こうも複雑なのでしょうか。 人生における多くの事柄と同じように、シンプルさには表面的に見えている以上の何かがあります。ここでは、私たちの脳が新し

    シンプルの心理学 ― 心地良いデザインのために | POSTD
    doublehorn93
    doublehorn93 2015/06/19
    シンプルの心理学 ― 心地良いデザインのために
  • 大規模Reactアプリケーションを構築するためのベストプラクティス | POSTD

    Sift Scienceで製作にReactを使い始めてからほぼ1年になりました。その間、Backbone+Reactという フランケンシュタインのような 複合アプリケーションを、Reactコンポーネントからなる、かなり大きな1つの階層に育て上げました。この記事では、UI不和を最小限にしながら、コードベースをスケーリングするために役立った技法とベストプラクティスを紹介します。また、一般的なコンポーネントのデザインパターンについて、いくつか説明します。 この記事が皆さんの時間の節約と精神衛生の維持に役立ち、UIが複雑になってもReactコードベースの保全性を維持する(破綻するのではなく)ための新しいツールを提供できれば幸いです。 componentDidUpdateで、もっとできる React質は、DOMの更新というタスクを命令的なものから宣言的なものに変えるということです。他のタイプの命

    大規模Reactアプリケーションを構築するためのベストプラクティス | POSTD
    doublehorn93
    doublehorn93 2015/06/18
    大規模Reactアプリケーションを構築するためのベストプラクティス
  • アジャイルの破綻―原因、そして新たな提案 | POSTD

    2001年、17人のメンバーによって アジャイル宣言 が発表されました。私はその立案者そして著者の1人であることに誇りを感じます。この出来事は、何かをする上でより良い方法を導き出すことへの期待、そしてソフトウェアを開発することで世界をより良くするといった、私自身の活力の源となり、極めて重要なターニング・ポイントとなりました。 あれから14年が経ち、私たちは行き先を見失っています。”アジャイル”という言葉はスローガン化してしまいました。来の意味をなさなくなっただけならまだいいですが、最悪に考えれば排外的な存在になってしまったとすら言えます。2~3のソフトウェア開発のプラクティスを、不十分に生半可に試みるといった”軟弱なアジャイル”を行う人が数多く存在します。来の目的を忘れて努力を重ねるといった、口先だけのアジャイルの 狂信者 がたくさんいるのです。 更にひどいのは、アジャイル開発手法その

    アジャイルの破綻―原因、そして新たな提案 | POSTD
    doublehorn93
    doublehorn93 2015/06/15
    アジャイルの破綻―原因、そして新たな提案
  • なぜLispなのか?― “データ” と “コード” | POSTD

    たくさんの人から 私が昨日Hacker Newsに書いたコメント についてもっと詳しく説明してほしいというメッセージをいただきました。例えば以下のような質問です。 Lispは単なる表記法の1つにすぎないと私は考えますが、間違っているでしょうか? Lispのコードをデータ構造にマッチさせるのがなぜそんなに重要なことなのか理解できません。(おそらく、そのマッチさせるという行為がなぜLispを使うのかという答えになるのだとは思いますが。)私はマクロの大事な何かを見落としているでしょうか?  何か私が気付いていないことがあるでしょうか? この質問に答えるには少し長くなりそうだったので、ブログに投稿することにしました。以下が私の答えです。 手短に言えば、Lispは 単なる 表記法の1つではなく、プログラミングとは 何か という考え方を根的に覆すものなのです。プログラミングに関する主流な考え方は、「

    なぜLispなのか?― “データ” と “コード” | POSTD
    doublehorn93
    doublehorn93 2015/06/12
    なぜLispなのか?― “データ” と “コード”
  • コードレビューのベストプラクティス | POSTD

    Wiredrive では、私たちはかなりの数のコードレビューを行います。しかし、ここで働き始める前には私はコードレビューなどしたことがありませんでした。今回は、私がコードレビューをする時に何に注目するようにしているかや、私の考え出したベストなコードレビューのやり方をお話したいと思います。 コードレビューとは、簡単に言うと2人以上の開発者で問題を引き起こしそうなコードの修正について話し合うことです。コードレビューをすることのメリットについては多くの記事で語られており、知識を共有できること、コードのクオリティが上がること、開発者が成長できることなどが挙げられています。しかし、レビューを行う上で、どのように進めていくかという具体的なことについてはあまり多く語られてないように私は思いました。 レビューで何に注目するか アーキテクチャ/デザイン 単一責任原則 : 1つのクラスは変更する理由が2つ以上

    コードレビューのベストプラクティス | POSTD
    doublehorn93
    doublehorn93 2015/06/12
    コードレビューのベストプラクティス
  • セカンドシステム症候群にまつわる3つの話―Perl 6, Python 3, PHP 6 | POSTD

    この10年間で、3つのメジャーなプログラミング言語が、それぞれPerl 6、Python 3、PHP 6へと大幅なバージョンアップに乗り出しました。ところが、Unicodeのサポート問題などの表面的な類似点があるにも関わらず、根的に異なった展開を見せています。 今年Perl 6.0.0が公式にリリースされるのに伴い、いま一度振り返って、リリース後の展開について考えてみるのに、今はちょうどいいタイミングでしょう。 これを書いていることが自分でも信じられないのですが、PHPから学ぶべきことがあるかどうか見ていきましょう。Zend TechnologiesのCEOであるAndi Gutmans氏は2008年2月の インタビュー でこう答えています。 我々はPHP 6に対し長いサイクルでのロールアウトを予想している。Perlプロジェクトに対しては、プロジェクトのコントリビューターがいまだPerl

    セカンドシステム症候群にまつわる3つの話―Perl 6, Python 3, PHP 6 | POSTD
    doublehorn93
    doublehorn93 2015/06/10
    セカンドシステム症候群にまつわる3つの話―Perl 6, Python 3, PHP 6
  • Haskellで生産性を高める-Pythonからの移行 | POSTD

    (注記:11/30、いただいた翻訳フィードバックを元に記事を修正いたしました。) 最近、Haskellでも生産性の高い作業ができるほどに、この言語を使いこなせるようになりました。定期的にPythonを使いもしますが、今ではWebプロトタイプ作成のほとんどをHaskellで行っています。それで、時間が経ってしまう前に、この言語の学習経験を通じて考えたことなどをまとめたいなと思っています。 データファースト これはどちらかというと動的言語から静的言語への移行に関しての考えなのですが、Haskellのデータ構造は、ほとんどの場合、データ宣言と型シグネチャで提示されるのに対し、Pythonの場合、おおむねコードによって暗黙に定義されます。 Pythonの関数について私が初めて抱いた考えは、「コードに何が書かれているか?」でしたが、Haskellでは、「データはどう見えるか? この関数は___を受け

    Haskellで生産性を高める-Pythonからの移行 | POSTD
    doublehorn93
    doublehorn93 2015/06/08
    Haskellで生産性を高める-Pythonからの移行
  • ソフトウェア開発で得た教訓22箇条 | POSTD

    1. 小規模なものから徐々に拡張していく。 私は日頃、新たなシステムを作るにせよ既存のシステムに機能を追加するにせよ、必要な機能すら殆ど持たないようなとてもシンプルなバージョンを作るところから始めるようにしています。そこから当初予定していた機能まで、段階的にソリューションを拡張していきます。私は初めから細部にわたって計画をできたことはありませんが、代わりに開発を進めていく中で新しく見つけた情報をソリューションに役立たせます。 私はJohn Gallの、この言葉が好きです。 “複雑なシステムというのは、往々にしてシンプルなシステムから発展したものだ。” 2. 同時に複数のものを変えない。 開発中にテストが失敗したとき、あるいは機能がうまく動作しなかったとき、1つだけ変更すれば、問題発見が格段に容易になるでしょう。言い換えるなら、短いイテレーションを行いなさいということです。1つずつ変更を行い

    ソフトウェア開発で得た教訓22箇条 | POSTD
    doublehorn93
    doublehorn93 2015/06/02
    ソフトウェア開発で得た教訓22箇条
  • jQueryは有害なのか | POSTD

    ずっと「~は有害なのか」という記事を書いてみたかったんです ^(1) 。 まず題に入る前に、1つ言わせてください。 jQueryはWeb業界の発展に大いに役立った と私は考えています。jQueryがあることで、開発者はこれまで想像もできなかったことをできるようになりましたし、そういった機能をブラウザの製作者がネイティブに実装するきっかけにもなりました(もしjQueryが開発されていなければ、今でもdocument.querySelectorAllは存在していなかったでしょう)。jQueryは、今ある便利なツールを使うことができなかったり、IE8やそれ以下の過去の遺産をサポートしなければならない際に今でも必要になってきます。 しかし、そのようなケースはもはや稀なものとなりました。Web開発者の大半は、マーケットシェアの縮小した古いブラウザをサポートする必要はありません。更に、忘れてはならな

    jQueryは有害なのか | POSTD
    doublehorn93
    doublehorn93 2015/06/01
    jQueryは有害なのか
  • 技術系スタートアップ企業の共同設立から学んだこと | POSTD

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

    技術系スタートアップ企業の共同設立から学んだこと | POSTD
    doublehorn93
    doublehorn93 2015/05/29
    技術系スタートアップ企業の共同設立から学んだこと
  • テスト駆動開発とは何か、それを気に入っているのは何故か、あなたも使うべきなのは何故か | POSTD

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

    テスト駆動開発とは何か、それを気に入っているのは何故か、あなたも使うべきなのは何故か | POSTD
    doublehorn93
    doublehorn93 2015/05/27
    テスト駆動開発とは何か、それを気に入っているのは何故か、あなたも使うべきなのは何故か
  • モダンミニマリズムという選択―フラットデザインはデザイナーを堕落させたか? | POSTD

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

    モダンミニマリズムという選択―フラットデザインはデザイナーを堕落させたか? | POSTD
    doublehorn93
    doublehorn93 2015/05/25
    モダンミニマリズムという選択―フラットデザインはデザイナーを堕落させたか?
  • Goはオブジェクト指向言語だろうか? | POSTD

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

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

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

    grepでログ解析をするなんてひどい話だ | POSTD
    doublehorn93
    doublehorn93 2015/05/20
    grepでログ解析をするなんてひどい話だ
  • コードの可読性、ハッカビリティ、抽象化 | 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
    doublehorn93
    doublehorn93 2015/05/19
    コードの可読性、ハッカビリティ、抽象化
  • パフォーマンス分析の方法論23選 | POSTD

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

    パフォーマンス分析の方法論23選 | POSTD
    doublehorn93
    doublehorn93 2015/05/19
    パフォーマンス分析の方法論23選
  • ジョエル・スポルスキによる『Trello, Inc.について』 | POSTD

    もしもし。聞こえてますか? 今となってはこの“ブログ”なるものを運営する方法を、自分が覚えているのかさえ自信がありません。最後に投稿してから1年も経つんですから。僕はブログから 引退した んですよ。覚えてます? ちょっと変な話を聞いてください。僕がブログを投稿するためには、リモートデスクトップ接続を経由して、サーバラックに収納されている骨董品級のWindows 7マシンにつなぐしかないんです。このマシン上では異様にごちゃごちゃした古いバージョンのCityDeskが稼働しています。僕が何とかハックした揚げ句、このマシン上でしか動かなくなってしまったものです。お恥ずかしい限りです。 ところで Trello についての楽しい話もご紹介しましょう。もう皆さんもきっとご存じの通り、 Trello はFog Creekで開発した、すごいビジュアルプロジェクト管理システムです。 解説しましょう。言い伝え

    ジョエル・スポルスキによる『Trello, Inc.について』 | POSTD
  • Go 実践4日間 | POSTD

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

    Go 実践4日間 | POSTD
    doublehorn93
    doublehorn93 2015/05/15
    Go 実践4日間
  • MapReduceは楽しい:巨大なデータセットのサンプリング | POSTD

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

    MapReduceは楽しい:巨大なデータセットのサンプリング | POSTD
    doublehorn93
    doublehorn93 2015/05/13
    MapReduceは楽しい:巨大なデータセットのサンプリング