タグ

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

  • ReactでTDD(テスト駆動開発)を始めよう : 環境構築からテスト作成、機能実装までの詳解ガイド | POSTD

    最小限の設定のTDD手法を使い、「何をテストすべきか?」から、よくある落とし穴の避け方まで、Reactコンポーネントをテストする方法を学びましょう。 導入 まず、 React を触ったことがあり、更にはいくつかのテストも書いた経験があるとしましょう。それでも、コンポーネントをどうテストするのが最善なのか、よく分からないかもしれません。どこから始めるのでしょう。具体的には何をテストすればよいのでしょうか。 いくつかのReactコンポーネントは簡潔過ぎて、そもそもテストが必要なのかすらはっきりしません。 AngularからReactに乗り換えた 人なら、テストには愛憎のような思いがあるかもしれません。 確かに Angular にはテストを支援するツールがたくさんありますが、同時にテストを書くのが難しくなる可能性があります。冗長ながら省略できない定型コードが多々ある上、 $digest の呼び出

    ReactでTDD(テスト駆動開発)を始めよう : 環境構築からテスト作成、機能実装までの詳解ガイド | POSTD
  • MITライセンスを1行1行読んでいく | POSTD

    全てのプログラマが理解すべき171語の文章 MITライセンス は、最も有名なオープンソースソフトウェアのライセンスです。この記事では、その内容を一行一行読んでいきます。 ライセンスを読む オープンソースソフトウェアを利用しているものの、これまでライセンス全文(原文:171語)を読む機会がなかった方は、大した量ではないので、今すぐ読んでください。あなたにとってライセンスが身近なものでないなら尚更です。理解できない箇所などがあれば、その部分は心に留めておき、明確にするようにしてください。これから背景や解説とともに、全文を分割して順番に紹介していきますが、大事なことは全容を頭に入れておくことです。 MITライセンス(MIT) Copyright (c) <年> <著作権保持者> ソフトウェアおよび関連文書ファイル(以下「ソフトウェア」)のコピーを入手する全ての人に対し、それらに関する無償のライ

    MITライセンスを1行1行読んでいく | POSTD
  • CSSになり損ねた言語たち | POSTD

    TeXMicrosoft Word、あるいはその他の汎用的なテキスト処理環境では簡単に実現できるような見た目に自分の文書を似せようと頑張る(文字どおり)無数の人たちに対して、 “悪いけど、うまくいかないよ” と繰り返し言い続けるのは、実際のところ、この1年間、私にとっては継続的な楽しみだった。- Marc Andreessen 1994年 Tim Berners-LeeによってHTMLが発表された1991年には、ページのスタイルを設定する方法はありませんでした。HTMLタグがどのように処理されるかはブラウザ次第で、多くの場合、ユーザの恣意的な入力が大きく影響しました。そうした事情から、ページがどのようなスタイルで処理されるかを”提案”するような標準的な方法を求める声が上がるようになりました。 しかし、CSSが導入されるのは5年先で、完全に実用化されるには10年の歳月を待たねばなりません。

    CSSになり損ねた言語たち | POSTD
  • 大学院生のためのLLVM | POSTD

    (注:2017/07/06、いただいたフィードバックを元に翻訳を修正いたしました。) この記事は、 LLVM コンパイラ基盤を使ってリサーチをする人のための入門書です。これを読めば、コンパイラに全く興味のない大学院生も、楽しみながらLLVMを使って優れた功績をあげられるようになるでしょう。 LLVMとは何か? LLVMは非常に優れていて、ハックしやすく、C言語やC++のような”ネイティブ”言語向けの、時代の先端を行くコンパイラです。 LLVMの素晴らしさに関しては他にも様々な話を聞くのではないでしょうか(JITコンパイラとしても使えるとか、C言語系列以外の様々な言語を強化できるとか、 App Storeからの新しい配信形態 であるとか、などなど)。もちろん全部当のことですが、今回の記事の目的としては、上述の定義が重要です。 LLVMが他のコンパイラと差別化される理由には、いくつかの大きな

    VoQn
    VoQn 2016/02/19
    LLVM の pass について突っ込んだハウツー紹介は見たことなかった。役に立つ
  • 2016年、C言語はどう書くべきか (前編) | POSTD

    (訳注:2016/3/2、いただいた翻訳フィードバックをもとに記事を修正いたしました。) (訳注:著者のMattより、「文中で明言はしていないが、この記事の内容はx86-64 Unix/Linux/POSIXでアプリケーションをプログラミングする場合にフォーカスしている。他のプログラミング領域では、対象とするシステムに応じた(例: 8-bitの組み込みシステム、10年前のコンパイラ、多くの異なるCPUアーキテクチャで動く必要のあるアプリケーション、Win/Linuxでのビルド互換性など)特有のアドバイスが必要」との補足を頂いております。) 以下の文章は2015年の始めに書いたドラフトで、今まで公開していませんでした。私のドラフト用フォルダの中で誰の目も引かなかったため、大部分が書いた時のままです。公開するにあたり、単純に2015年を2016年に変更しました。 必要な修正、改善、苦情があり

    2016年、C言語はどう書くべきか (前編) | POSTD
    VoQn
    VoQn 2016/02/19
    その辺で入手できる技術書と全然違うこと書いてあって驚き。知らんこと多かったわ(まぁもう中々書く機会もないんけど)
  • JavaScriptのコメントは不要か? | POSTD

    コード中にコメントを書くべきでしょうか? 是が非でも避けるべきでしょうか? それとも控えめに書けばいいでしょうか? 開発者たちはそれぞれ、ソフトウェアを開発する際にどのように、そしてどんな時にコメントを書くかについて、独自の考え方を持っています。この記事では私の意見を述べますが、これが誰にも当てはまるというわけではありません。 なお、関数型プログラミングまたはオブジェクト指向プログラミングの原則に則ってJavaScriptで書かれたソフトウェアに絞った上で、私の意見を述べることにします。 コメントと保守性 この記事では、保守性のあるコードを書く場合について考えます。つまり、以下のようなコードです。 簡単に理解できる 簡単に拡張できる 簡単にデバッグできる 簡単にテストできる 保守性のあるコードには、大量のコメントが必要でしょうか? 明確に書かれたコードであるならば、大量のコメントは不要だと

    JavaScriptのコメントは不要か? | POSTD
    VoQn
    VoQn 2015/10/07
    ヘッダコメントは要るし、内部のちょっとした部分にもコメントは結局要る派(特にXP指向してるならmasterマージまではザクザク入れろと思う)
  • 開発者の仕事が遅いわけではない!納期が遅れるホントの原因 | POSTD

    “なぜ納期を守れなかったのだろうか?” 我々マネージャが、納期に遅れることを自分のチームのせいにするのは簡単です。しかし、納期に遅れる原因は当に開発者の仕事が遅いせいでしょうか? Sprintly は、開発者のサイクルタイムに関する膨大なデータを保有しています。当社は、タスクのサイズごと(S、M、L、XL)、また種類ごと(ストーリー、テスト、バグ)に、完了までにどれくらいの期間がかかるかを追跡しています。 当社が調査した動向について 1点目:開発者は非常に平均的です。ユーザ全体で見たサイクルタイムはほぼ同じであることを当社のチケットデータが示しています。システム内の全チケットの75%は、開始後およそ175時間で完了しています。 ^(1) 2点目:変動があるのは、ほとんどがチケットが開始される前(SomedayからBacklogまで)の段階です。これは、関係者が仕様を理解して作業の優先順位

    開発者の仕事が遅いわけではない!納期が遅れるホントの原因 | POSTD
    VoQn
    VoQn 2015/01/15
    「能力」といえば「能力」なんだけど、技術職の専門職能じゃなくて、管理運営(意思決定/歩留まり回避/円滑化)の方面での能力の欠如の方がよっぽど致命的なんだよなぁ…
  • ひどいダッシュボードの法則 | POSTD

    白状しますが、私にはひどいダッシュボードを構築してきた責任があります。個人的に、この記事に書いた間違いのほとんどを犯してしまいました。ユーザに謝罪するとともに、同じ過ちを繰り返さないことを誓います。これらの過ちが悪い見として、プロジェクトマネージャやデザイナ、エンジニアがひどいダッシュボードを構築したり確認したりする無駄な時間を少し減らすのに役立つことを願います。 法則1:ほとんどのソフトウェアのダッシュボードはひどい ひどいと言うのは このGoogle画像検索 のようなひどさ(まだ吐いていませんよね?)のことではありません。退屈で、設計が不十分で、有用性も一切ないという意味です。 信じられませんか? では、今すぐ優れたダッシュボードのソフトウェア名を3つ挙げてみてください。 見つかりましたか? ええ、そうだと思いました。しかし、ダッシュボードはどこにでもあります。あなたが使っているSa

    ひどいダッシュボードの法則 | POSTD
  • USトップ大学でも関数型プログラミングが余り教えられていない現実 | POSTD

    数カ月前、私たちは一部の言語が他の言語に比べて受け入れられやすい理由を調べた SocioPLT リサーチプログラムについて 投稿 しました。その 調査 の一環として、2000年から2010年の期間内にSourceForgeのプロジェクトで使用された言語を調べて頻度別にランク分けしたのですが、この結果で興味深かったのは、上位20の言語の中に関数型言語が1つもなかったということです。 教育機関のプログラミング言語研究者は関数型言語を好む傾向にあるため、この事実を残念なことと思うでしょう。しかしながら、このような事態に陥った原因の一部は、私たち学術研究者自身にあるのかもしれません。関数型言語が“現実の世界”で受け入れられるためには、大学などの機関がそれを教えなければならないからです。この投稿を通じて、そうした教育プログラムを持つ大学がほとんどないことが分かるでしょう。プログラミングの教育課程にお

    USトップ大学でも関数型プログラミングが余り教えられていない現実 | POSTD
    VoQn
    VoQn 2014/10/29
    プログラミングの型理論だったり、計算機科学の理論の演習に関数指向プログラミング向いてるっていうか、じゃないと教えるの大変に思うんだけど。なんでだろ
  • GitLab flowから学ぶワークフローの実践 | POSTD

    Gitによるバージョン管理では、従来のSVNなどよりずっと簡単にブランチングやマージができます。さまざまなブランチ戦略やワークフローが可能であり、以前のシステムに比べるとほとんど全てが改善されたと言えるでしょう。しかしGitを利用する多くの組織はワークフローの問題に直面します。明確な定義がなく複雑で、Issue Tracking Systemと統合されていないからです。そこで、明確に定義された最良の実践的方法としてのGitLab flowを提案したいと思います。issue trackingには feature driven development と feature branches を組み合わせます。 他のバージョン管理システムからGitに移行する際によく耳にすることは、効果的なワークフローの開発が難しいということです。この記事ではGitワークフローとIssue Tracking Sys

    GitLab flowから学ぶワークフローの実践 | POSTD
    VoQn
    VoQn 2014/10/23
    Git-flow は確かに冗長だったし、とはいえ GitHub-flow は乱暴に思っていた
  • Rubyにはウンザリ!動的型付け、副作用、およびオブジェクト指向プログラミング全般からの考察 | POSTD

    この記事を書き上げるには、相当長い時間がかかりました。来は今年の年明け、 Rubyの死 やデイヴィッド・ハイネマイヤー・ハンソンの TDDは死んだ がアップされて騒ぎになる前に投稿するつもりだったのです。昨年末に書いたツイートを見てください。 > Rubyにはもう飽き飽きした。理由はいろいろあるが、特にその副作用と、ステータスが可変なせいで大量のユニットテストを書かされるのにはウンザリだ。 @abevoelker Rubyの開発に関しては、大勢の人が心のどこかで何かおかしい、何かが欠けていると思っているようですが、たいていの人は責める対象を間違っています。Rubyで書いたアプリがとんでもない代物になったって? それはあなたがきちんとテストコードを書かなかったか、テスト駆動開発(TDD)の指針に則って開発しなかったからです。もしくは、正しいデザインパターンに切り分けるための知識が不足してい

    Rubyにはウンザリ!動的型付け、副作用、およびオブジェクト指向プログラミング全般からの考察 | POSTD
    VoQn
    VoQn 2014/08/30
    「Haskellでは(Rubyのような)テストを書く必要がない」としないとQuickCheckとdoctestとHspecとhpcの恩恵受けられないよ
  • CSS will-changeプロパティについて知っておくべきこと | POSTD

    はじめに WebKit系ブラウザでCSS transformanimationといったプロパティを使った時に発生する、“例のちらつき”。これに気づいたことのある人ならば、おそらく“ハードウェア・アクセラレーション”という用語をこれまでにも耳にしたことがあるでしょう。 CPU, GPU, ハードウェア・アクセラレーション 一言で言うと、ハードウェア・アクセラレーションとは、グラフィックス・プロセッシング・ユニット(GPU)を用いてセントラル・プロセッシング・ユニット(CPU)の処理量を軽減し、ブラウザのレンダリング処理を効率化することです。ハードウェア・アクセラレーターを有効にしてCSS処理を使うと、ページのレンダリングが速くなり、ページ表示が高速化されます。 名前の通り、CPUGPUはどちらもプロセッシング・ユニットです。CPUはコンピュータのマザーボードに取り付けられている部品で、ほ

    CSS will-changeプロパティについて知っておくべきこと | POSTD
    VoQn
    VoQn 2014/08/20
    CSSの描画最適化の為の will-change プロパティについて。「使えばいいってものでもない」っていう使用上の注意点についても触れている
  • Webページレンダリングについて知っておくべきこと: ピクセルは高コスト | POSTD

    Web開発者として、ユーザの画面表示にピクセルがどのように関わるのかということは知っておくべきでしょう。知ることが目的なわけではなく、効率性のため画面表示を最適化する際にその知識が必要となってくるからです。 先日、「 フロントエンド開発者がWebページレンダリングで知っておくべきこと 」を読んだのですが、重要なポイントを外してしまっている印象を受けました。その記事で強調されていたのは、CSSセレクタのマッチング、レイアウト(FirefoxのようなGeckoベースのブラウザではリフロー)、そして レイアウトスラッシング という名でも知られる強制同期レイアウトに注意することです。確かに、これらは気をつけたほうがいいことだとは思いますが、私としては、ページレンダリングについて開発者が知っておくべきことをその記事ですべてカバーしていたとは思えません。大抵の場合、Web開発者は60fpsの表示を目指

    Webページレンダリングについて知っておくべきこと: ピクセルは高コスト | POSTD
    VoQn
    VoQn 2014/08/20
    CSSとWebページレンダリングに関する仕組みの解説。Will-change は知らなかった
  • スケールするエンジニアチームについてGoogleが教えてくれたこと | POSTD

    Googleでは、世界各地のGoogler(Googleの社員)たちが毎週、トイレの壁に紙をたくさん貼り出していました。コードのテストに役立つヒントを週替わりで1枚の紙にまとめたものを、社員間で共有するためです。ある週はDI(依存性注入)を取り上げて様々な言語での簡単な使用例を示し、またある週はチームのコードベースのテストカバレッジを評価するために、ツールのセットアップ法を紹介するという具合です。“Testing on the Toilet(トイレの時間に考えるテスト)”と呼ばれるこの取り組みは、エンジニアがコードを書く上で役立つ情報を共有する方法として、奇抜で面白いものです。 ^(1) そしてGoogleエンジニアリング文化の要となる強みもここに表れています。つまり、大勢のエンジニアに対して、一連のベストプラクティスを一貫した強硬な形で、効率よく普及させるということです。 私は大学を出

    スケールするエンジニアチームについてGoogleが教えてくれたこと | POSTD
    VoQn
    VoQn 2014/08/20
    「新入りのエンジニア向けに繰り返し使えるトレーニング資料への投資」日本のベンチャー&スタートアップに欠けてるのはこの感覚では
  • ジョエル・スポルスキによる『Trello, Inc.について』 | POSTD

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

    ジョエル・スポルスキによる『Trello, Inc.について』 | POSTD
    VoQn
    VoQn 2014/08/20
    ある意味ひとつのスタートアップの「アガリ」な例だ。プロダクトが大受けしすぎた結果、投資を受け付ける子会社に独立させたとのこと
  • Dockerにまつわる誤解とベストプラクティスについて | POSTD

    Dockerはシステム界隈に大きな衝撃を与えました。それはシステム管理にとってはまさに大躍進だったのですが、Dockerには、少々、致命的な誤解があるのです。 非常に限定されたアドバイス ここで取り上げるDocker議論は、ほぼミッションクリティカルなシステムにおけるマルチホストのセットアップに限定されたものです(Webサービスが主)。それを念頭においてください。でないと、私からのアドバイスは、他のケースには、おそらく意味をなさないでしょう。 Dockerの背景 この記事では、Dockerとは何か、Dockerの一般的な動作については、すでに基的な知識がある前提で話を進めていきます。 Dockerについて、すべてを網羅するのは、この記事の目的の範疇を越えてしまうので、Dockerについて、自分は初心者だという方は、まずは以下のサイトに目を通してください。 Dockerとは何か? Dock

    Dockerにまつわる誤解とベストプラクティスについて | POSTD
    VoQn
    VoQn 2014/08/19
    自分はホストに直置きしないでvagrant-coreOS-dockerっていうプランで開発環境あそんでる。でもデプロイの事考えたらオーケストレーションは気にしなきゃいけないとも感じる
  • JavaScriptフレームワークはもうこりごり | POSTD

    JavaScriptでフレームワークを書くのはもうやめましょう。 JavaScriptフレームワークというものは、あたかも避けられない死と税金のようなもの、絶対にぶちあたる避けられないものといわれています。こっそり聞いてみましょう、新しいウェブプロジェクトが始まるとき、一番初めに聞かれる質問は?十中八九は「どのJSフレームワーク使っているの?」でしょうね。昨今の業界においてJSフレームワークというものは当に根深く浸透しているのです。でも、だから必須だというものではないのです。実際、もう使うべきではないのです。 どうしてこういった結論に至ったのか、振り返ってみましょう。 AngularにBackbone、Ember・・・ ここのところ長い間、 ウェブプラットフォーム とはHTML+CSS+JS、と簡潔に技術用語の羅列でまとめられてしまっていましたが、そこにはもっとぴったり表す用語“大混乱”

    JavaScriptフレームワークはもうこりごり | POSTD
    VoQn
    VoQn 2014/06/19
    ウヒョヒョ(歴史は繰り返すって感じだ)
  • 1