タグ

2014年4月10日のブックマーク (23件)

  • 依存関係逆転の原則(DIP) - Strategic Choice

    依存関係逆転の原則(DIP:the Dependency Inversion Principle)上位のモジュールは下位のモジュールに依存してはならない。どちらのモジュールも「抽象」に依存すべきである。「抽象」は実装の詳細に依存してはならない。実装の詳細が「抽象」に依存すべきである。どういうこと?手続き型は「方針」が実装の「詳細」に依存する構造になってしまう。 方針が詳細の変更に影響されてしまう好ましくない構造。 OOプログラミングでは「方針」「詳細」とも抽象に依存させることで、悪しき依存関係を逆転できる。 なんで?アプリケーションの方針を決めていて、他に対して影響を与えるモジュール(=言うなれば「偉い」ヒト)は上位。 上位が下位に依存してしまうと、上位が、下位の影響を受けてしまう。手続き型でよく見られた悪い依存関係。 筋的にはアプリケーションの存在理由である上位が下位に対して影響力を持つ

    hiro360
    hiro360 2014/04/10
    SOLID原則の「D」『上位のモジュールは下位のモジュールに依存してはならない。どちらのモジュールも「抽象」に依存すべきである。』
  • インターフェイス分離の原則(ISP) - Strategic Choice

    インターフェイス分離の原則(ISP:the Interface Segregation Principle) クライアントに、クライアントが利用しないメソッドへの依存を強制してはならない。どういうこと?クライアントは複数のインターフェイスを利用するけど、そのすべてが互いに強い関連を持っているわけではない。すべてのインターフェイスを1つのクラスに押し込めてしまうことはやめ、関連性持ったインターフェイスはグループ化して、抽象基クラスとして分けて利用すべき。なんで?「太った」(多機能な)インターフェイスがある。 あるクライアントはそのインターフェイスのすべてのメソッドを利用するわけではない。 クライアントが、そのような利用しないメソッドを含むインターフェイスに依存すると、クライアントはその自分に関係のないメソッドの変更の影響をうけていしまう。 他のクライアントがクラスに強いる変更によって、それ

    hiro360
    hiro360 2014/04/10
    SOLID原則の「I」『クライアントに、クライアントが利用しないメソッドへの依存を強制してはならない。』
  • リスコフの置換原則(LSP) - Strategic Choice

    リスコフの置換原則(LSP:the Liskov Substitution Principle)派生型はその基型と置換可能でなければならない。どういうこと?使う側から言うと、基型を引数にとる関数に、どんな派生型のインスタンスをもらっても気にしないで使えないとダメ。実装側から言うと、派生クラスがその基クラスで使われるところにおいても、正常に動作することを保証しなければならない。なんで?使う側に意識させるということは、OCPに違反することになるから。つまり、LSPに違反すると、必然的にOCPにも違反してしまう。たとえば?ではまず、簡単な例。Shapeクラス、そしてその派生クラスCircle/Squareがある。Shapeにabstract関数を使わない。Circle/Squareにそれぞれ独自のDraw関数がある。ここでShapeを受け取ってDrawする関数を作ろうとすると、、、、 v

    hiro360
    hiro360 2014/04/10
    SOLID原則の「L」『派生型はその基本型と置換可能でなければならない。』
  • オープン・クローズドの原則(OCP) - Strategic Choice

    オープン・クローズドの原則(OCP:the Open-Closed Principle)(開放−閉鎖原則) ソフトウェアの構成要素は、拡張に対して開いていて、修正に対して閉じていなければならない。どういうこと?オープン(開いている)とは? モジュールの振る舞いを拡張できる。 クローズ(閉じている)とは? モジュールの振る舞いを変更しても、そのソースやバイナリはまたく影響を受けない。 なんで?この原則はオブジェクト指向設計の核心。なぜなら、この原則に従えば、オブジェクト指向の最大のメリットを享受できる! 柔軟性再利用性保守性たとえば?具体例として、よくある図形の例 。switch/caseで図形の種類ごとに処理を行う。 こうすると、図形の種類が追加になるたびにこの処理が変更になる。 ここで大事なのは、switch/caseがおそらく一箇所ではないところ。 至る所に図形の種類ごとの色々な処理が

    hiro360
    hiro360 2014/04/10
    SOLID原則の「O」『ソフトウェアの構成要素は、拡張に対して開いていて、修正に対して閉じていなければならない。』
  • 単一責任の原則(SRP) - Strategic Choice

    単一責任の原則(SRP:the Single Responsibility Principle) クラスを変更する理由は1つ以上存在してはならない。どういうこと?変更理由が2つあるということは、責任(役割)も2つあるということ。そんなジェネラリストなクラスを許さない、という原則。 ところで、「単一責任」って、クラスを作る上で一見当たり前に見える。責任(役割)をそのまま責任ではなく、変更理由としているところがポイント。 この見る角度を変えるところがこの原則の運用の大切な所。なんで?役割を複数もつクラスはもろいクラスだから。 複数の役割を担っているクラスがあって、それをある1つの理由で変更すると、関係のないその他の役割部分にまで影響を及ぼす事になり、その結果予想もしない形でクラスが壊れてしまう。 保守で違う人が修正したら簡単に壊れてしまう。 保守で変更していくと、実装的だけでなく、設計的にもよ

    hiro360
    hiro360 2014/04/10
    SOLID原則の「S」『クラスを変更する理由は1つ以上存在してはならない。』
  • MacBookAirで使っている便利ツール - Qiita

    はじめに ここでは、MacBookAirで私が使っている便利ツールを紹介していきます。長文過ぎると、途中で表示できなくなってしまうことを学習したため、不要な解説は省略します。また、個人的な価値観から形成された表現を含むかもしれませんが、その点の説明も省略します。ご了承ください。 便利なアプリを知っていたら、是非コメントをお願いします。 MacBookAirにインストールしたアプリ BetterTouchTool //トラックパッド拡張、ショートカットキー拡張 Google Chrome //インターネットブラウザ Growl //通知を拡張するアプリ Kopypasta //クリップボードをバックアップ WindowFlow //ウィンドウ切り替え XtraFinder //Finderを拡張するアプリ Xcode //開発環境を提供するアプリ TinkerTool //Macの隠し機能を

    MacBookAirで使っている便利ツール - Qiita
  • ソフトウェアを作るのは、意外と難しい

    プログラマ同士で話している時には当たり前の事だけど、非プログラマと話すと意外と共有されてない事に、これがある。 ここ最近、プログラマでない人とソフトウェアを作る、という話が三回あった。 一度はその人の為にツールを作る、という奴。もう一つは私のアプリのデザインを一部変更する、という話で、けれどデザイナがソフトウェアのデザインやった事無い、という奴。もう一つはアプリの素人だけど、アプリのアイデアとかはあるからアプリが書けるようになりたい、という人に話をする、という奴。 ちゃんと作ったのは最初のツールだけで、残り二つは辞退したけれど、どのケースでもソフトウェアを作るというのは結構難しい、という事があまり共有されていない。 私は結構ソフトウェアを作るのは難しいから、XXXみたいな事が必要だ、というような提案をする。 例えば、リモートの開発はかなり困難で、メールのみでソフトウェアの振る舞いの話をしあ

    ソフトウェアを作るのは、意外と難しい
    hiro360
    hiro360 2014/04/10
    『だからソフトウェアの開発の難しさとは、仕様を記述する自分の側には存在せず、コードを書く私側の能力が足りるかどうかでしか無い、と固く信じていたりする。』
  • 社員が考えた面白いアイデアをマネタイズするのが経営者

    社員が考えた面白いアイデアをマネタイズするのが経営者:世界を変えるビジネスは、たった1人の「熱」から生まれる(1/3 ページ) 連載は、丸幸弘著、書籍『世界を変えるビジネスは、たった1人の「熱」から生まれる。』(日実業出版社刊)から一部抜粋、編集しています。 “PDCA”でイノベーションは起こせない。これからのビジネスは“QPMI”です。イノベーションを起こす魔法のしくみ「QPMIサイクル」とは、 Q(question) たった1人の崇高な問題意識や疑問 P(passion) それを解決したいという強い情熱 M(mission/member)周囲を巻き込んでプロジェクト化する環境を作る I(innovation)結果として革新的なビジネスが生まれる この4つです。 著者、丸幸弘は数々の革新的なビジネスをプロデュースし、自社内では「出前実験教室」など200以上のプロジェクトを同時進行させ

    社員が考えた面白いアイデアをマネタイズするのが経営者
    hiro360
    hiro360 2014/04/10
    『解決すべきクエスチョン(Q)があって、その次にマネタイズを考えるという順番は、決して逆であってはならない』
  • Linuxでjdkをwgetする方法 - Qiita

    JDKのダウンロードは、普段ここから行いますが、ダウンロードにはOracleのLicenceの同意にチェックする必要があります。 同意はしているのですが、ansibleやchefなどで同意チェックを画面からせずに直接wgetしたい時の方法です。 仕組みは単純でAcceptしたというCookieがリクエストに含まれていれば同意したとみなされ、URL直指定でもダウンロードできます。 以下のコマンドはそのCookieを含むリクエストを送りますので、利用する場合はOracleのLicenseに同意した上で利用して下さい。 下記にないURLは、サイト上で"Accept"した後、ダウンロードしたいファイルを右クリックして確認できます。 コピペして実行出来るものを置いておきます。 (※ダウンロードは自己責任でお願いします) (※2015/11/2変更:最新バージョンに変更) ※注意: 古いバージョンはア

    Linuxでjdkをwgetする方法 - Qiita
  • 速いよ Java Play Framework - Y's note

    Play Framework 2徹底入門 JavaではじめるアジャイルWeb開発 作者:掌田 津耶乃,原 一浩翔泳社Amazon 言語とFrameworkの選定 phpにはあまり魅力を感じていない@yutakikuchi_です。題とは関係ありませんが4.25(金)@ヒカリエのイベントに登壇します。ネタは同窓会GrowthHackとログ集計/解析の2立てです。興味のある方はどうぞ。【ヒカ☆ラボ】同窓会GrowthHack!×データログ集計、解析!をテーマに事例をまじえお話します! 16年ぶりの再会でも参加率6割の同窓会を開くには?Yahoo出身のエンジニアが語る、アクセスログ可視化、 ユーザ属性解析を行うためのシステム設計のコツとは? Round 8 results - TechEmpower Framework Benchmarks さて、題に入ります。僕がphpを書き始めたのも前職

    速いよ Java Play Framework - Y's note
  • IOS/Androidアプリの3つの大事な設計方針

    .NETラボ 勉強会 2015年04月の資料です。 Windowsフォーム開発に慣れきっている人がWPF開発に移行したときに、仕様の違いによりハマりやすい点を実体験も含めてお話しさせていただきました。 こちらのサイトで元のPPTXファイルをダウンロードしていただけます。 http://sonic.blue/it/129

    IOS/Androidアプリの3つの大事な設計方針
  • LGTMcamというiOSアプリをリリースと同時にgithubに公開しました - razokulover publog

    さきほど「LGTMcam」というiOSアプリをリリースしました。 https://itunes.apple.com/ja/app/lgtmcam/id839859967?l=ja&ls=1&mt=8 できることは、 ①写真撮影 ②撮った写真へLGTMの文字をスタンプ(画像をtouchすると1つだけスタンプできます。) ③SNSへシェア だけです。 需要が無いのか、app storeでLGTMと検索すると一番最初にでてきます...。 はじめてのiOSアプリ これまでObjective-C覚えないといけないし...という理由からなんとなくiOSアプリを避けてきました。 が、ネイティブアプリが作れると、このエントリでも書いた表現力がいっそう高まると感じたので思い切ってiOSアプリの制作にチャレンジしてみました。 最初は「Objective-C?なにこれ???アットマーク多すぎるし引数もどこが区切

    LGTMcamというiOSアプリをリリースと同時にgithubに公開しました - razokulover publog
  • トラブルに備えるJVMオプション - n-agetsumaの日記

    以前の記事でトラブルが起きた後の初動対応を書いてみたが、いざトラブルに遭遇すると、まず再起動してからどうするか考えるケースが多いと感じている。しかし何も情報がないと『情報がない/再現方法が不明』などの理由からそのままお蔵入りになってしまう。今回はトラブルに事前に備えるために、地味だけど大切なJavaVMのオプションをまとめてみる。 GCログの出力とローテーション OutOfMemoryError発生時のヒープダンプ自動出力と出力パス設定 JavaVMクラッシュログの出力パス設定 JVMオプションの設定 (OpenJDK/OracleJDK) JavaVMにはGCおよびヒープメモリの状態をロギングする仕組みや、OufOfMemoryError時にヒープダンプを自動的に出力するような障害に備えて自動的に情報を出力する機能がある。おすすめのオプション*1は以下の通り。 java -Xms?g -

    トラブルに備えるJVMオプション - n-agetsumaの日記
  • オブジェクト指向設計原則 - Strategic Choice

    原則について優れたオブジェクト指向開発のための指針。ただ、、、原則は原則。必ず守らなければならないのではなく、まずそれで考えることが重要。逸脱したとしても正当な理由やトレードオフが説明できればよい。一覧単一責任の原則(SRP)オープン・クローズドの原則(OCP)リスコフの置換原則(LSP)依存関係逆転の原則(DIP)インターフェイス分離の原則(ISP)参考アジャイルソフトウェア開発の奥義 第2版 オブジェクト指向開発の神髄と匠の技作者: ロバート・C・マーチン, 瀬谷啓介出版社/メーカー: ソフトバンククリエイティブ発売日: 2008/07/01メディア: 大型 Principles Of Object Oriented Designオブジェクト指向設計@Syboos.jpオブジェクト指向設計の原則@それはBooksオブジェクト指向設計原則@ディノオープンラボラトリオブジェクト指向の法則

    hiro360
    hiro360 2014/04/10
    SOLID原則のインデックス 『ただし、原則は原則。必ず守らなければならないのではなく、まずそれで考えることが重要。逸脱したとしても正当な理由やトレードオフが説明できればよい。』
  • ヒゲソリという行為そのものをリデザインした「Xfit」と「HIGE LIFE」に、クリエイターが出逢った

    ヒゲソリという行為そのものをリデザインした「Xfit」と「HIGE LIFE」に、クリエイターが出逢った2014.03.24 11:00Sponsored デザインが好きな人、こんなカミソリだったら使いたくなるかも。 貝印の「Xfit(クロスフィット)」は今までにないカラーリングと、2週間ごとに替刃を交換し2カ月でホルダーも使い捨てる新しいスタイルのT字カミソリ。しかも、スマホアプリ「HIGE LIFE」(App Store・Google Play)と連動していて、ヒゲラジオやヒゲ診断も楽しめます。 そんな「Xfit」と「HIGE LIFE」を、アパレルブランド「A BATHING APE」のグラフィックデザインを経て現在メディアクリエイターとして活躍し、兄弟メディアroomieのキュレーターや情報サイト「Fresh News Delivery」の管理人としても知られるハイロックさんに実際

  • 最強の正規表現の覚え方とは「CotEditor」かもしれない – 和洋風KAI

    今の今まで、NSStringの潤沢かつ便利なメソッドの数々に甘えてしまったために、正規表現をいまさら勉強しているするぷ( @isloop )です。 こんな俺用メモなんかもつくってみたりしているのですが、やはりなんでもそうですが書かないと覚えないですね。 とはいえ、ちょっと効率のよい覚え方を編み出した気がします。 といってもCotEditorを使うだけなのですが。 CotEditorの素晴らしき検索・置換機能とハイライト機能。 プログラミング中に正規表現を試す場合は、どうしても処理を書かないといけません。さらに、そもそも正規表現が合っていないとキチンと出力されません。 正規表現がまだまだうろ覚えの僕は、なかなかスパーンと成功しないので書くたびイライラしていたのですが、プログラムに正規表現を走らせる前に、CotEditorに読み込ませたら、まるでアラサーの美人教師(赤眼鏡)の様に丁寧に添削して

  • 本場タイの味を再現!カップヌードルよりエスニックシリーズ新登場!

    世界80以上の国と地域で販売されている「カップヌードル」から、場の材のフレッシュなおいしさにこだわってつくられた、エスニックシリーズ「トムヤムクンヌードル」「ミーゴレン」(各183円)が4月14日より全国で新登場! 「トムヤムクンヌードル」は魚介ベースにココナッツミルクを利かせ、濃厚かつクリーミーな味わいに。レモングラス、ライムリーフを加えたさわやかな風味のトムヤムペーストが、タイの若者に今人気の味わいを再現。 「ミーゴレン」は、コク深い甘さをチリの辛みで引き締めた、甘辛い味のソースが特徴。たまねぎをスライスして揚げた、フライドエシャロットの香ばしい風味とサクサクとした感が、欲をいっそうかきたてる仕上がりだ。 海外現地法人がエスニックシリーズの開発に協力したため、どちらも場の味を忠実に再現している。 あつい季節にスパイシーなエスニックフードをべて、健康的に汗を流してみては?

    本場タイの味を再現!カップヌードルよりエスニックシリーズ新登場!
    hiro360
    hiro360 2014/04/10
  • ため息の出るような美しさ イランの「虹色に輝くモスク」が素晴らしい : 暇人\(^o^)/速報 - ライブドアブログ

    ため息の出るような美しさ イランの「虹色に輝くモスク」が素晴らしい Tweet "Every Morning, This Stunning Mosque Is Illuminated With All Of The Colors Of The Rainbow"を翻訳してみました 元記事はこちら。→"Every Morning, This Stunning Mosque Is Illuminated With All Of The Colors Of The Rainbow" 以下、日語訳です。 毎朝、この魅力的なモスクは虹の色で飾られる 歴史的な建造物について語る時、私たちは美しいアーチや、高くそびえる尖塔、彫刻、石の壁を想像しますが、明るく鮮やかな色を思い浮かべることはあまりないでしょう。しかし、「歴史的な建造物は色合いに欠けている」という常識を、Nasir al-Molk Mosqu

    ため息の出るような美しさ イランの「虹色に輝くモスク」が素晴らしい : 暇人\(^o^)/速報 - ライブドアブログ
    hiro360
    hiro360 2014/04/10
  • 「JVM Operation Casual Talks」発表資料のリンクをまとめてみる #jvmcasual - 元RX-7乗りの適当な日々

    4/7に、LINEさんのオフィスで開催された「JVM Operation Casual Talks」。 一部で、Cassandra Casualだったのではないかという疑惑もありましたが、なかなかためになる話が多くて、あとできっと資料を見たくなる日が来そうなので、ちょっとまとめておこうと思う。 こちらもあわせて読みたい JVM Operation Casual Talks #jvmcasual - Togetter Understanding Memory Management of JavaVM
 in 15 minutes (@stanakaさん) https://speakerdeck.com/stanaka/understanding-memory-management-of-javavm-in-15-minutes @stanakaさん、どこでJVM使ってるのかと思ったら、今日は

    「JVM Operation Casual Talks」発表資料のリンクをまとめてみる #jvmcasual - 元RX-7乗りの適当な日々
  • 【画像あり】 「大人のジンジャーエール」作ってみた : 暇人\(^o^)/速報

    【画像あり】 「大人のジンジャーエール」作ってみた Tweet 1: 名無しさん 2014/03/27(木)01:58:52 ID:I81r3BSm8 材料はこれ ショウガ 200g シナモンスティック 2 クローブ 8個 鷹の爪 1 三温糖 150g 蜂蜜 20g あとは水が400cc 2: 名無しさん 2014/03/27(木)01:59:27 ID:I81r3BSm8 レモンも1個な1 3: 名無しさん 2014/03/27(木)02:00:28 ID:bJ4rTfUTg 期待 4: 名無しさん 2014/03/27(木)02:02:31 ID:igrPoDDTf 炭酸どうやって入れるの? 6: 名無しさん 2014/03/27(木)02:03:39 ID:I81r3BSm8 >>4 まあ待て まずは原液となるジンジャーシロップを作るんやで。 というかそれが出来たら完成やで。 5

    【画像あり】 「大人のジンジャーエール」作ってみた : 暇人\(^o^)/速報
    hiro360
    hiro360 2014/04/10
  • インターネット白書ARCHIVES

    TIMEMAPとは TIMEMAPは、時間軸に着目した新方式の検索エンジンです。情報の新しい探し方や見方を提供します。 アーカイブ内の記事が時系列に整理された年表が作成でき、また連想検索による関連記事の閲覧も可能です。 詳しくはこちら→

    インターネット白書ARCHIVES
  • あなたのJavaコードをスッキリさせる、地味に便利な新API 10選(前編) - Taste of Tech Topics

    こんにちは! アキバです。 ...T3ブログは初登場かもしれません。ハジメマシテ。 以後お見知りおきを。 いよいよ、2014年3月、Java8が正式公開されますね。 なんと言っても、Java8の注目機能はラムダ式ですので、ラムダ式や型推論に関する記事は多いです。 世の中で「Java8」と検索すると、皆さんいろいろと記事を書かれているので、おおよその事はこれで分かっちゃうような気がします。 が、 実は地味に便利なAPIが追加されていたりすることを最近知りました。 これはあまり触れられていないぞ、と。 というわけで、このエントリでは、あまり日語で情報の無い、しかし地味に便利なAPIに実際に触れてみます。 大事なところなので2回強調して書いてみました。 今回は、前編として4つ紹介します。 ※APIの紹介と言いつつ、コードにはラムダ式を使ったコードが普通に出てるので、ご了承ください。 (むしろ、

    あなたのJavaコードをスッキリさせる、地味に便利な新API 10選(前編) - Taste of Tech Topics
  • JavaSE8リリース記念!マイナーな言語仕様を紹介してみる(交差型キャスト,レシーバパラメータ(仮引数にthis)) - きつねとJava!

    さて,日未明JavaSE8がリリースされましたね!アメリカ時間では18日でしたが,日では19日になってました. 無事リリースされたのでJavaSE8で導入されたマイナーな言語仕様を2つ紹介してみたいと思います. メジャーな言語仕様は誰かが紹介してくれると思うので・・・ 交差型キャスト レシーバパラメータ(仮引数にthis) 交差型キャスト 一つ目はProject Lambdaで導入された交差型キャストです. まず,Javaには交差型、あるいは合成型と呼ばれるものがあります。 今まではジェネリクスの型境界にだけ使えていた「Type1 & Type2」のように型を&でつないだものです。 これがJavaSE8からはキャスト式で利用できるようになります。 例えば次のようなものです。 (Type1 & Type2) expr; &で繋げられる型は3つでも4つでも問題ないです. ただし,一つ目の型

    JavaSE8リリース記念!マイナーな言語仕様を紹介してみる(交差型キャスト,レシーバパラメータ(仮引数にthis)) - きつねとJava!