タグ

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

  • CSSモジュール ― 明るい未来へようこそ | POSTD

    ここ最近、CSSに対する考え方が広がりを見せています。皆さんの中には、その転換点を見つけようと、Christopher Chedeauの”CSS in JS”という講演を聞いた方もいるでしょう。2014年11月にNationJSで行われたこの講演は、CSSにおける重大な分岐点となりました。まるで高エネルギー粒子が衝突した後のように、それを機に、数ある多様な考え方が、各々の方向へ渦を描くように広がったのです。その例として、 React Style と jsxstyle 、 Radium を挙げましょう。これら3つは、Reactのスタイリングにおける最新かつ最良、そして最も実行しやすいアプローチに含まれており、 各々のプロジェクトのReadmeファイルでも、 そのように言及しています。もし”発明”が、 adjacent possible(一歩先にある可能性) を探ることの一例であるのなら、Ch

    CSSモジュール ― 明るい未来へようこそ | POSTD
    seapig_dolphin
    seapig_dolphin 2019/09/09
    composes
  • 開発者が知っておくべきSOLIDの原則 | POSTD

    (編注:2020/08/18、いただいたフィードバックをもとに記事を修正いたしました。) オブジェクト指向プログラミングが、ソフトウェア開発に新しい設計を持ち込みました。 その結果、開発者は単一の目的を処理するために、全体のアプリケーションに関係なく、1つのクラスの中で、同じ目的や機能を持つデータを結び付けることができるようになりました。 しかし、このオブジェクト指向プログラミングで、分かりにくいプログラムやメンテナンスができないプログラムを防ぐことはできません。 そこで、5つのガイドラインがRobert C. Martinによって作り出されました。これら5つのガイドラインすなわち原則により、開発者にとって読みやすく、メンテナンスが可能なプログラムを作成しやすくなりました。 5つの原則は、S.O.L.I.Dの原則と呼ばれています(頭字語はMichael Feathereによって名付けられま

    開発者が知っておくべきSOLIDの原則 | POSTD
  • Python 3誕生の理由 ― つまり、なぜunicode/str/bytesの仕様は変更されたのか | POSTD

    12月、私は PuPPy(the Puget Sound Python users group)の会合でQ&A セッション を行いました。そこでようやくPython 3が誕生した理由と、string/bytesに関する全てを説明しました。Python 3が作られた理由をユーザはもう知っているはずだと思っていたので、私はこの説明で称賛を得たことに、ちょっと驚きました。後で考えてみると、Pythonに詳しい人もそうでない人も含めて大多数の人が、その理由を探すように言われたり、好奇心からその理由を探し当てられるなどと考えた私が愚かでした。ですから、このブログの記事で、Python 3が存在する理由をわかりやすく説明します。後方互換性の全くない unicode / str / bytes の仕様変更は、Python 3のコードの移植の中でも当に難解な部分ですので、私たちがその仕様変更を選択した理

    Python 3誕生の理由 ― つまり、なぜunicode/str/bytesの仕様は変更されたのか | POSTD
  • GraphQLはWeb APIの次のフロンティアか? | POSTD

    RESTの規約。URLはリソースであり、CRUDはHTTP動詞にマップされる。 RESTの規約に1つ問題があるとすれば、規約が十分でないということでしょう。上記で”通常”、”多くの場合”、”時に”という表現を使ったのは、これらのやり方は仕様で推奨されているものの守られるとは限らないためです。実世界では、大抵のAPIはRESTishがせいぜいです。例えばStripeでは、リソース更新に PUT ではなく PATCH を使うべきですが、歴史的理由でそうはなっておらず、おそらく現時点では変更に値しないでしょう。いずれにしても開発者はドキュメントを読む必要があり、その時、 POST メソッドのユビキタスな使い方があることに気づくのです。 RESTには他の問題もあります。必要なものだけでなく全てが返ってくるため、リソースのペイロードが非常に大きくなることがあるのです。そして多くの場合、クライアントが

    GraphQLはWeb APIの次のフロンティアか? | POSTD
  • ES6 チートシート | POSTD

    日々の仕事の中で役に立つES2015(ES6)のティップス、コツ、ベストプラクティス、プログラムの見をご紹介します。コントリビューション歓迎です! 目次 var vs. let / const IIFEからブロックベースへ アロー関数 文字列 デストラクチャリング モジュール パラメータ クラス シンボル マップ WeakMaps Promises ジェネレータ Async/Await var vs. let / const var の他に、値を格納する let と const という識別子が新たに追加されました。 var とは異なって、 let と const はクロージャのスコープ内で最初に記述されることはありません。 var の使用例です。 var snack = 'Meow Mix'; function getFood(food) { if (food) { var snack

    ES6 チートシート | POSTD
  • Bashアプリケーションをテストする | POSTD

    以前、bashスクリプトをテストする仕事に取り組んだことがあります。最初、Pythonユニットテストを使うことにしましたが、プロジェクトに外部技術を持ち込むのは気が進みませんでした。そこで、仕方なく、悪名高い bash で書かれたテスト用フレームワークを使いました。 既存ソリューションの概要 手に入るソリューションを探してGoogle検索しましたが、選択肢はほんの少ししかありませんでした。そのうちいくつかについて、詳しく見ていきましょう。 重要になるのは、どんな基準でしょうか? 依存関係: bass のテスト用フレームワークを選ぶときに、 python 、 lua などのシステムパッケージも一緒に引きずり込むのは嫌ですね。 インストールの難しさ:継続的な開発の実装とTravis CIでの継続的な統合も仕事の1つだったので、私にとってインストールにかかる時間と手間数が妥当だということは、重要

    Bashアプリケーションをテストする | POSTD
  • あなたはCSSプロパティ”display”をどのぐらい知っているだろうか? | POSTD

    CSSプロパティの1つである display は、CSSレイアウトに用いるプロパティの中でも極めて重要なものです。よく使われているのは、 block や inline 、 none あたりでしょう。 table や inline-block も、今ではかなり一般的になってきたと言えます。一方、 flex は新たに登場したものです。きっとユーザに気に入られるでしょう。これはレイアウト用に特別に作られたdisplayプロパティです。さらには、この先、 grid がまもなく私たちの秘密兵器となるでしょう(現在、盛んに取り組まれています)。これもまた、レイアウトに特化したプロパティです。 記事は、当初予定していたよりもずっと長くなりました。ご希望に応じて、自由にサブセクションに飛んでお読みいただければと思います。もし、お時間を割いて全体を読んでいただけるのでしたら、大変嬉しく思います???? 目

    あなたはCSSプロパティ”display”をどのぐらい知っているだろうか? | POSTD
  • webpackとRollup:似て非なるもの | POSTD

    先日、Facebookは 膨大なプルリクエスト をReactにマージして、既存のビルドシステムを Rollup ベースのシステムに移行しました。 その結果 、 何人もの人々 から「なぜwebpackではなくRollupを選んだのか」という質問が寄せられました。 これは、もっともな疑問でしょう。 webpack は、近年JavaScriptコミュニティで最も評価されているツールの1つです。毎月のダウンロード数は何百万件にもおよび、何万個ものウェブサイトやアプリケーションに使用されています。巨大なエコシステムがあり、コントリビュータも多くいます。さらにオープンソースプロジェクトとしては珍しく、 かなりの寄付金 が集まっています。 それに比べるとRollupは小規模です。しかしReact以外にも、VueEmber、Preact、D3、Three.js、Momentなど、数々の有名なライブラリに

    webpackとRollup:似て非なるもの | POSTD
  • CSS Variables(カスタムプロパティ): なぜ、関心を持つべきか? | POSTD

    (編注:2016/7/29、頂いたフィードバックを元に記事を修正いたしました。) CSS Variables、もっと正確に言うとCSSカスタムプロパティが、Chrome 49でサポートされました。CSS Variables は、CSSで値の繰り返しを減らすのに有効です。また、テーマの切り替えなどの実行中の強力なエフェクトや、将来のCSS機能をもしかすると拡張/ポリフィルすることにも役立ちます。 CSSの散乱 アプリケーションを設計するとき、アプリケーションの一貫した外観を維持するために再利用される独自のカラーセットを設定するのが一般的です。残念ながら、このようなカラー値をCSSに何度も何度も繰り返し設定することは面倒なだけでなく、エラーが発生しやすくなります。カラーを何カ所か変更する必要がある場合、思い切って、全部「検索して置換」することもできますが、大きなプロジェクトでは、危険な事態を招

    CSS Variables(カスタムプロパティ): なぜ、関心を持つべきか? | POSTD
    seapig_dolphin
    seapig_dolphin 2017/08/04
    “CSS Variables”
  • ReactのHigher Order Components詳解 : 実装の2つのパターンと、親Componentとの比較 | POSTD

    ReactのHigher Order Components詳解 : 実装の2つのパターンと、親Componentとの比較 (編注:2016/7/27、いただいたフィードバックをもとに記事を修正いたしました。) 概要 この投稿は、HOCパターンを利用してみたいという 上級ユーザ 向けの記事です。もしReactが初めての方は、まず Reactのドキュメント を読むところから始めるとよいでしょう。 Higher Order Componentsは、さまざまなReactライブラリにとって価値があることがわかっている素晴らしいパターンです。この投稿で、HOCとは何か、できることは何か、制約は何か、どのように実装するのか……という点について詳細に見ていきます。 付録として、関連トピックについても見ていきます。それらは、HOCを学ぶ上での中核にはならないものの、カバーしておくべきだと私が思っているもので

    ReactのHigher Order Components詳解 : 実装の2つのパターンと、親Componentとの比較 | POSTD
  • React Fiberアーキテクチャについて | POSTD

    初めに React Fiberは、現在進行形で進められているReactのコアアルゴリズムの再実装であり、Reactチームの2年以上にわたる研究の成果です。 React Fiberは、アニメーション、レイアウト、ジェスチャーといった領域に対する適性を向上させることを目指しています。React Fiberの目玉となる インクリメンタルレンダリング は、レンダリング作業を分割して、複数のフレームに分散させることができる機能です。 他には主に、新たな更新があった際に作業を休止・強制終了・再利用できる機能、更新の種類別に優先順位をつけられる機能、新しい並行プリミティブなどが挙げられます。 このドキュメントについて Fiberは、コードを見ただけでは分かりにくい斬新な概念をいくつも導入します。このドキュメントはそもそも、ReactプロジェクトにおけるFiberの実装に伴って私が取っていたメモを集めたも

    React Fiberアーキテクチャについて | POSTD
  • モノリシックなRubyからGoによるマイクロサービスへ | POSTD

    過去9年わたりWebアプリケーションを開発してきたNiket氏( @nexneo )は、2013年からGoを使って作業をするようになりました。この講演では、彼がどのようにRubyのモノリシックアプリケーションを分解しつつ、Goで記述されたマイクロサービスへと至ったかについて説明しています。講演のスライドは、 speakerdeck.com/nexneo/joy-of-single-purpose-services-in-go で閲覧可能です。 Single purpose servicesというのは、単一の問題を解決するサービスのことです。 一般的に マイクロサービス としても知られています。 Niket氏は、学校側が親御さんたちと連絡したり成績表や出席を管理したりするための人気オンラインプラットフォーム、 Beehively の開発者です。BeehivelyはRubyベースのアプリケーシ

    モノリシックなRubyからGoによるマイクロサービスへ | POSTD
  • 機械学習に挑んだ一年間 – 機械学習について一から学び、仕事に活用するまでの道のり | POSTD

    この記事は、去年私が書いた「Machine Learning in a Week(機械学習に挑んだ一週間)」という記事の続編です。その記事では、私が5日間集中的に機械学習を学び、のめり込んでいった経緯について説明しています。 機械学習に挑んだ一週間 一般の人にとって機械学習の分野に足を踏み入れるのは、無謀なことに思えるでしょう。medium.com 私は順調なスタートを切った後も、時間を見つけて勉強を続け、およそ一年後には、仕事機械学習を活用した初プロジェクトを立ち上げることができました。そのプロジェクトでは、さまざまなタイプの機械学習や自然言語処理(NLP)の技術を駆使して、 Xeneta の 潜在顧客の特定 を行っています。 趣味でやっていたことが仕事になって、とても嬉しかったです。 同時に、仕事として機械学習を利用するのは博士号を持つ限られた人だけだ、という思い込みも払拭されました

    機械学習に挑んだ一年間 – 機械学習について一から学び、仕事に活用するまでの道のり | POSTD
  • 私たちはなぜReactではなくVue.jsを選んだのか | POSTD

    Qwintryチームは最近、既存のすべてのプロジェクトフロントエンドVue.jsに移行しはじめました。新しいプロジェクトでもVue.jsを使います。 レガシーなDrupalのシステム(qwintry.com) ゼロから新しく書きなおすqwintry.comのブランチ Yii2で動くb2bシステム(logistics.qwintry.com) その他、比較的小さめのプロジェクト(ほとんどは、PHPとNode.jsでバックエンドを構築しているもの) プロジェクトの規模についていうと、 Qwintry は世界中で約50万人の顧客が使っています。アメリカドイツに倉庫を持っていて、アメリカ国内 最大の郵送先 のひとつで、東欧や中東への出荷に注力しています。Qwintryは、アメリカのオンラインストアでグッズを購入する人たちのためのツールです。私たちの倉庫に届いた荷物をコントロールパネルで管理で

    私たちはなぜReactではなくVue.jsを選んだのか | POSTD
  • ソフトウェアエンジニアは一般的な人々と比べてどのくらい稼ぐのか : Pythonでのデータ収集・処理・可視化 | POSTD

    (訳注:2016/7/15、記事を修正いたしました。) 記事では、世界50カ国におけるソフトウェアエンジニア年収の中央値と国内の年収の平均値(1人当たりのGDP)を比較します。その方法は、まず lxml を使ってWebページからデータを収集し、 Pandas のデータフレームに変換した後、クリーニングを行います。そのデータに対し matplotlib を使い、全体としての傾向を可視化する散布図と棒グラフを作成するというものです。一般的な人々と比較するとソフトウェアエンジニアはどのくらい稼いでいるのか、その収入が高い国と低い国を比較してみましょう。 データは PayScale と 国際通貨基金(IMF) から得たもので、2014年5月に Bloomberg に掲載されたものです。そこに、PayScaleが最も入手しやすい50カ国の統計データが含まれていました。ソフトウェアエンジニアに関す

    ソフトウェアエンジニアは一般的な人々と比べてどのくらい稼ぐのか : Pythonでのデータ収集・処理・可視化 | POSTD
  • ジェダイ流・Pythonの内包表記 | POSTD

    醜いより美しい方がいい。暗示するより明示する方がいい。 Pythonの禅 より 私はよく、ドロイドやジェダイ、惑星、ライトセーバー、スターファイターなどのコレクショングッズを題材にしてプログラムを書きます。Pythonでプログラミングをする際は大抵、これらをリストやセット、辞書として表現するわけです。私は日頃からコレクショングッズをさまざまな形に変身させたいと思っています。そして、その願望を叶えてくれるのが、内包表記という強力な記法です。内包表記は私がさまざまな場面で使っている手法であり、Pythonを使い続けている理由の1つでもあります。では、いくつか例と共に、内包表記がいかに便利かを説明していきましょう。 以下の例に出てくる処理はどれも、種類豊富なPythonの標準ライブラリがあれば実装できます。その中には、より簡潔で効率の良い処理に改善できるものもあるでしょう。とはいえ、私は標準ライ

    ジェダイ流・Pythonの内包表記 | POSTD
  • 開発者がビッグデータ分析にPythonを使う時によくやる間違い | POSTD

    システムの構築、新しい技術の習得、PythonやDevOpsなどに情熱を注ぐソフトウェア開発者です。現在はチューリッヒを拠点とするビッグデータのスタートアップで働いており、データ分析およびデータ管理ソリューションのためのPython技術を磨いています。 1 はじめに Python は開発時間を短縮できるという点で一般的に評価の高い言語です。しかし、Pythonを使って効率よくデータ分析をするには、思わぬ落とし穴があります。動的かつオープンソースのシステムであるという特徴は、初めは開発を容易にしてくれますが、大規模システムの破綻の原因になり得ます。ライブラリが複雑で実行時間が遅く、データの完全性を考慮した設計になっていないので、開発時間の短縮どころか、すぐに時間を使い果たしてしまう可能性があるのです。 この記事ではPythonやビッグデータで作業をする時に、最も時間を無駄にしがちな事柄につ

    開発者がビッグデータ分析にPythonを使う時によくやる間違い | POSTD
  • 生のReactを知ろう – JSX、Flux、ES6、Webpackを使わず… | POSTD

    (編注:2016/07/29、いただいたフィードバックをもとに記事を修正いたしました。) 免責事項: 私はJSX、Flux、 ES6 、そして webpack を非常に気に入っています。これらのツールについては他のシリーズで話します。 React.jsが騒ぎを起こしているのはご存知の通りです。確かに、 XMLHttpRequest 以来の良いツールです。しかし、調査に数時間を費やした挙句、あまりに多くの用語に 圧倒された だけで終わっていないでしょうか。JSX、flux、ES6、webpackreact-routerが使える今、 *他に必要なのは React の使い方を説明してくれる人だけです。* 喜んでください、それがまさに当シリーズでやろうとしていることです。信じられませんか?大丈夫、 2分後、 初めてのReactアプリを作った後には納得いただけるでしょう。何もダウンロードせずに、で

    生のReactを知ろう – JSX、Flux、ES6、Webpackを使わず… | POSTD
  • React Nativeを用いた初めてのiOSアプリ開発 : 選んだ理由と、開発で学んだこと | POSTD

    候補としてモバイルアプリの作成について話し合いを始めた時、何を用いてモバイルアプリを構築するかについて、私たちには何の考えもありませんでした。クールな仕様で、楽しく使え、さらには洗練されたものでありたいという一般的な方向性は分かっていたのですが、誰もモバイルアプリを構築した経験がなかったのです。 そこで私たちはReact Nativeを使ってみることにしました。選んでみて良かったと思っています。この記事では、React Nativeを使うと決めた時に考えたことや、構築途中で学んだことを書き綴っています。 React Nativeを選んだ理由 私たちはWeb開発者であって、iOS開発者ではありません。ニューヨークでの集まりで、Swiftがどれだけ性能がいいか、それでいてObjective-Cもまだ存在価値があるということを、少しかじった程度で、一番得意なのはRubyJavascriptです

    React Nativeを用いた初めてのiOSアプリ開発 : 選んだ理由と、開発で学んだこと | POSTD
  • Railsの基本理念 : Railsの生みの親が掲げる8つの原則 | POSTD

    (訳注: 2016/3/2、頂いたフィードバックをもとに記事を修正いたしました。) Ruby on Railsは最近、急激に注目を集めていますが、その原因はほとんど、この言語が斬新なテクノロジーとしてもてはやされたことと、タイミングにあります。技術的な優位性は時間の経過とともに失われますから、タイミングがよかっただけでは、一過性のブームに終わり、このムーブメントの隆盛は長続きしません。従って、「Railsがいかにして、適切な技術としての位置を維持し続けるるだけでなく、影響力とコミュニティを拡大し続けてきたのか」をより多くの人に説明していく必要があります。そして、その維持・拡大を可能にした/していく要因は、物議を醸すことさえあるRailsの基原則にあると考えています。 この基原則はここ10年ほどの間に進化を続けてきましたが、最も強固な柱となっているルールはやはり、公開当初から制定されてい

    Railsの基本理念 : Railsの生みの親が掲げる8つの原則 | POSTD