オープンセミナー岡山 2017/05/13 講演資料
![日経電子版 レガシーな基礎の上に建つ旅館](https://cdn-ak-scissors.b.st-hatena.com/image/square/653f27b2e09bbf8563cb0540492dd394a41c960d/height=288;version=1;width=512/https%3A%2F%2Ffiles.speakerdeck.com%2Fpresentations%2F40100bb3707049d2b4c98aba85477b78%2Fslide_0.jpg%3F7982012)
こんにちは、シニアアプリケーションエンジニアのid:taraoです。この記事ははてなデベロッパーアドベントカレンダー2015の10日目です。昨日はid:tapir320によるはてなの組織開発についてでした。 先月開催されたWebDB Forum 2015で、「はてなブックマークにおけるアクセス制御: 半環構造に基づくモデル化」というタイトルの発表をしました。 はてなブックマークにおけるアクセス制御 - 半環構造に基づくモデル化 from Lintaro Ina 発表資料には多くの方に興味をもっていただけたようですが、わかりにくい点も多かったのではないでしょうか。スポンサー企業としての技術報告セッションとはいえ学術会議での発表なので理論面と独自の工夫点にフォーカスした内容であったり、口頭での発表のしかたに大きく依存したスライドの遷移方法になっているので、この資料だけで細かいところまで理解しよ
Webアプリケーション開発についての知見を、自分の経験と知識をベースに整理してみようという試みです。 いわゆるサーバサイドにスコープを絞り、フロントエンドは対象外です。筆者は普段、オブジェクト指向言語で書いているので、本記事でもその前提(Ruby、PHP、Python、Java、Scalaあたりを想定)になっています。 では、本編をどうぞ。 ソフトウェア開発は複雑さとの戦い 『人月の神話』では、ソフトウェアの本質的な困難性について4つの性質をあげている。その中で最初に出てくるのが「複雑性」である。『新人プログラマに知っておいてもらいたい人類がオブジェクト指向を手に入れるまでの軌跡』なんか読んでもらえると、ソフトウェアの複雑性と戦うために、人類が生み出してきた発明の数々が説明されている。 では、複雑さとは何か?もう少し掘り下げて考えてみよう。 複雑さの正体 Webアプリケーションが複雑になる
去年ですがmediumで話題になっていた記事にHype(誇大宣伝) Driven Development(HDD)というものがあります。 国内でもこれで失敗している例をよくみかけますし、とても共感したので紹介できればと思います。 翻訳ではなく、自分なりに噛み砕いて個人的な考えなども入れています。 概要 HDDとは一言でいえば、技術選定という重要なプロセスを他人任せにしてはならないという啓蒙です。 誰かが良いと言っているという理由で技術選定をしてはいけません。 例えば以下を理由に技術選定するのは Hype Driven Development(HDD)です。 ・すごく偉い人がおすすめしていた ・カンファレンスですばらしい技術だと紹介されていた ・新しい技術だ ・人気が急上昇している ・超有名企業のA社が導入した その技術は自分たちのどんな問題を解決してくれるのか。 開発の規模に、自分たちのス
はじめに もうすっかり年末なので、これから2015年にかけてアプリケーションアーキテクチャがどのようになっていくのかという個人的な考え/妄想や背景について、「リアクティブ」というキーワードをもとににまとめてみたいと思います。 Google Trendsを見ると"reactive programming"という言葉は2010年前後から、ゆっくりとバズをし始め、現在も上昇を続けています。 また、仕事としては、2010年ごろから大規模なWebサービス開発において、フロントエンド、バックエンド、アルゴリズム改善といった様々な箇所で、リアクティブプログラミングの要素を取り入れながら、アーキテクチャの改善を進めてきました。そのため、こういったアーキテクチャがコード品質の維持や安定性の向上、実際的で複雑な問題の解決にも適応可能であるということを実感として持っています。 近年、そういった要素が様々なツール
ReduxなどReact関連のライブラリで時々出てくるHigher-order Componentsについて色々わかんなくなったので調べたことをメモ程度に留めてまとめる 通称 HoCとかHoCsとか略されるが、この記事では Higher-order Components、HoCsで統一しておく。 Higher-order Components(HoCs)とは? 語の元となったのは高階関数(Higher-order function)であると思われる。 高階関数は、「関数を引数にとり、関数を戻り値とする」ような関数の事。 HoCsも同様で、「Componentを引数にとり、Componentを戻り値とする」ような関数(または実装パターン)の事 1 なぜこんな概念が出てきたのか? この記事が良く出される Mixins Are Dead. Long Live Composition ざっくり要約
Cの系譜を継ぐC#ではnullが長らく使い続けられてきたが、最近ではその存在が大きな問題だと認識されている。前後編でこの問題を取り上げ、今回(前編)はnullを取り巻く事情について考察する。 ← 前回 連載 INDEX 次回 → 近年、nullの存在は、billion dollar mistake(10億ドル規模の損失をもたらす過ち)と呼ばれるくらい忌避されるものになっている。 nullは、低コストでそこそこ安全に参照を扱えるという意味で悪くない妥協ではあるが、技術が進歩した現在ではもう少し賢い参照の扱い方があるはずである。C#のように、これまでnullを認めてしまっているプログラミング言語で、今からそれを完全になくすというのは現実的ではないが、nullに起因する問題を少しでも避ける手段はこれからでも追加していけるだろう。 今回は、nullが生まれるに至った背景から始め、nullが抱える問
ピクシブ株式会社 Advent Calendar 2015、19日目の記事です。 qiita.com こんにちは、愛らしくも憎らしいJavaScriptを書いてご飯を食べている @geta6 です。業務では pixiv Sketch というサービスの開発や運営に携わっています。 pixiv Sketchでは、node.jsとReact/Fluxibleを使用してサーバーとクライアントを同じコードベースで動作させるIsomorphicな構成を採用しています。 このプロジェクトでコードレビューをしていて、チームメンバーがつまずきやすいと感じたのが『FluxにおけるActionとStoreのどちらに何を実装するべきか』という点でした。 そこで、本日は『ActionとStoreとの適切な責務の持たせ方』について話をしたいと思います。 ReactとFluxについておさらい 今年の4月にこんなスライド
関数(Function)は、ほぼ全ての現代的なプログラミング言語が備えている、プログラミングにおける基本的な構成要素です。もちろんJavaScriptも関数を備えています。 関数はシンプルで強力です。ですが、それゆえに多くの人を混乱させることもあります。私が大学のプログラミング実習のティーチングアシスタントを担当していたときも、「関数」でつまずく学生が少なくありませんでした。 関数は普段何気なく呼吸をするように使っているものです。ですが、改めて、関数とは何か、何ができるのか、ということを考え出すと、意外と難しいことに気がつきます。そこで、JavaScriptにおける関数について、いったい何ができるのか、もう一度ゆっくり考え直してみることにしましょう。 関数って何ができるんだっけ 複数の命令をまとめて名前をつける 関数の最も基本的な機能は、複数の命令をひとつにまとめて、名前をつけることです。
静的型チェックがあったらテストはあまり書かなくて良いのか - $shibayu36->blog; で静的型チェックがあったとしても、テストをあまり書かなくて良いわけではないという話を書いた。するとブコメでいろいろ意見をもらえた。これらの意見から、関数の仕様を正しく実装していることをどう保証するのかについてもう少し深く考えてみようと思い、その考えがまとまってきたので、ブログに書いておく。 一応前提として、今回の話は自分の経験とこれまでの本を読んだ知識を元に自分で考えたものであり、何かの理論に則って話しているわけではない。この部分が違うなどあれば突っ込みを受けたい。 今回考える仕様 このようなことを考える時、非常にシンプルに考えたほうが理解がしやすいので、以下の様な仕様を持つ関数addNaturalIntを考える。 関数addNaturalIntは正の整数を二つ受け取り、足しあわせて正の整数を
概要 Webアプリケーションにて、リソースの一部更新を行う際、どのようにURL設計を行うとシンプルで美しいか(本当はそこまで考えていなかったけど)悩んでいたところ、 @t_wada さんから素敵な設計指針をご教示いただきました。 本記事はその内容に加えて、実際に自分で行ったこと、調べたこと、思った事など、まとめております。 あらすじ 数週間前にSIピラミッドからヒモなしバンジーを決めてWebの世界に飛び込んだ私は、小さな小さなWebアプリケーションをrails newから手探りで作っていました。 そんなとき、簡単なリソースの一部更新機能をどう実装したもんかなーと悩んでました。以下、当時(といっても先週)の超雑なぼやき。 リンクをクリックしてモデルの一部を変更するのはどうしたらいいんだろう。 例)不参加をクリック -> 某カラムをtrueからfalseへ リクエストオブジェクトに対象カラムの
なぜ今Javaの例外処理か Javaにおける「チェック例外」はSwift、Objective-C、Ruby、JavaScriptといったネイティブ・ウェブアプリ開発でよく用いられる他の言語には現れないものです。 SwiftにはOptionalやErrorTypeがありますが、Javaにおいてもnullやエラーのハンドリングの実装方法をうまくやる必要があります。 なぜ例外を握りつぶしたらいけないのか、なぜアサーションが望ましいのか、なぜチェック例外と非チェックを分けたのか、という点を考えてみたいと思います。 参考資料 例外設計における大罪 (契約プログラミングについて) Effective Java読書会9日目 - 例外 (Javaにおける例外の扱いについて) 契約による設計から見た例外 (この記事の方がより詳しいけど難しいイメージ) チェック例外と非チェック例外の違い チェック例外→「回復
新人の頃の☃「private?メソッド?というのがあるのか。ふむ。ふむ……?」 新人ではなくなったが若手の頃の☃「メソッドが大きくなってきたな。privateメソッドで分割だ!」 若手とは言えなくなった頃の☃「privateメソッドのテストコードってどう書いたら良いんだ?リフレクションか?」 2、3年前の☃「privateメソッドは共通処理を切り出すためのもの。呼び出し元のpublicメソッドのテストコードで担保される」 最近の☃「privateメソッド スベテ コロス!!!」 解説 新人の頃は割愛。 次の若手の頃の話は、これは大きいメソッドを単にぶつ切りにして満足しちゃってた感じ。 臭いものに蓋してるだけで何の解決にもなっていませんでしたね、今から思うと。 それからprivateメソッドのテストコードについて悩みました。 どうすれば良いんだ?と。 悩んだ挙句protectedにしちゃたり
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く