ブックマーク / nekogata.hatenablog.com (66)

  • 実況中継シリーズ 「開発現場で役立たせるための設計原則とパターン」 #builderscon 2018 - 猫型の蓄音機は 1 分間に 45 回にゃあと鳴く

    先日慶應義塾大学日吉キャンパスで行われた builderscon2018、最高のカンファレンスでしたね。わたしも「開発現場で役立たせるための設計原則とパターン」というタイトルで発表させていただきました。今回は恒例「実況中継シリーズ」として、プレゼンの再現をブログで行いたいと思います。 なお、過去の実況中継シリーズは前職の技術ブログにまとまっていますので、そちらからご覧ください。 それでは編を開始したいと思います。 開発現場で役立たせるための設計原則とパターン アバンパート よろしくお願いします。 まず最初に簡単に自己紹介をさせていただきます。 先月転職をしまして、8/1からClassiという会社で働いています。と息子がおります。Scalaが好きですが、仕事ではRubyメインという感じです。 Web+DB PressやSoftware Designで何度か特集を書かせていただきました。と

    実況中継シリーズ 「開発現場で役立たせるための設計原則とパターン」 #builderscon 2018 - 猫型の蓄音機は 1 分間に 45 回にゃあと鳴く
    kksg
    kksg 2018/09/10
  • オフラインファースト的なGUIアプリケーションをScala.jsで書く話 / Scala.jsについて - 猫型の蓄音機は 1 分間に 45 回にゃあと鳴く

    はじめに オフラインファーストへの要求 近年、オフラインファーストというか、「オフラインのときにも普通につかえて、オンラインになったら同期する」みたいなことに対する要求が高まっているように感じます。 その場合は、ローカルにもきちんと永続データを持っておき、オンラインのときにバックエンドと通信をしながらバックエンドのデータと同期していく、というスタイルを考えるのが自然だと思います。 また、普通のJSアプリケーションであっても、「サーバーに投げる際に失敗したデータはローカルでメモリ上にもっておいてリトライしたい」などの要求もあるでしょう。 さらに、ここでモバイルアプリも視野に入っているとなると、どうしても「オッRealm Mobile Platformか!?」という感じが出てきますが、Realm Mobile Platformにロックインされるのと引き換えに開発の速を選ぶのか、それとも、という

    オフラインファースト的なGUIアプリケーションをScala.jsで書く話 / Scala.jsについて - 猫型の蓄音機は 1 分間に 45 回にゃあと鳴く
    kksg
    kksg 2017/05/22
  • Vue.jsとvuex、Fluxについて - 猫型の蓄音機は 1 分間に 45 回にゃあと鳴く

    最近立て続けにそのあたりの話をする機会があったので。わたしの意見です。 vuexというかFluxに手を出すタイミング Vue.jsを利用していて、相互に関連のある二つ以上の状態を扱う必要が出てきたら、それはもうすでに「十分に複雑な状態管理」である たとえば、APIとの通信中はインジケータを出したいので「通信中かどうか」を管理し、通信が終わったらその結果を表示するために「通信結果」も管理したい、など。 十分に複雑な状態管理に立ち向かうためには、自分でピュアなDomain側をきちんと作ってそこで状態管理するか、vuex利用するべきだと思う 自分で設計からやるにしても、まっとうにMVVMをやれば単方向データフローは守れるので、Fluxの考え方とMVVMは矛盾しない see http://techblog.reraku.co.jp/entry/2016/12/13/080000 vuexを触ってみ

    Vue.jsとvuex、Fluxについて - 猫型の蓄音機は 1 分間に 45 回にゃあと鳴く
    kksg
    kksg 2017/03/21
  • 双剣問題について - 猫型の蓄音機は 1 分間に 45 回にゃあと鳴く

    双剣問題についてはyatteiki.fmを参照してください。 双剣問題に関しては言いたいことがふたつあって、ひとつは小菅さんも言ってたけど、「別に結婚とかしたからといって楽になったり落ち着いたりするわけじゃない、むしろその分剣を振り続けなきゃならない」ってことで、ひとりだったらサボっちゃうところも、だれかと一緒に生活をする、その生活をやっていき続けるためにはサボることができなくなり、むしろ双剣を握り続けるモチベーションになるということがひとつ。 もうひとつが、双剣を振り続けてると「それが当たり前の環境」になっていって、双剣を握り続けるということが特別なことではなくなるということ。というか、特別なことじゃなくならないと双剣は握り続けられない、ということ。 たとえば、カンファレンスで発表をするということ。じつは、初めてカンファレンスで発表する日、わたしは緊張とストレスでトイレで吐いていた。そん

    双剣問題について - 猫型の蓄音機は 1 分間に 45 回にゃあと鳴く
    kksg
    kksg 2016/11/25
  • プログラマとコミュニティ あるいは SD8月号に記事を書かせてもらいました - 猫型の蓄音機は 1 分間に 45 回にゃあと鳴く

    表題にあるとおり、Software Design8月号の特集記事を書かせていただきました。GitHub入門的な記事です。 今書店で売ってる号は7月号ですので、今売ってるやつには載ってません(でももちろん買ってくださってもいいんですよ?)。発売日は7/18ですので、その後書店で購入したり、Amazonなどでお求めください。 www.amazon.co.jp 今年に入ってから、web+DB Pressの91,92号、SD8月号と、技術評論社さんの雑誌に記事を書かせていただく機会を立て続けにいただけて、ほんとうにありがたい限りです。 ところで、web+DB vol. 91の記事はYAPC::Asiaでの発表がきっかけでチャンスをいただいたのでした。92はPerlコミュニティつながりで頂いたお話でした。今回の記事に関しては、「Gitをはじめからていねいに」というドキュメントをGitHub上で公開し

    プログラマとコミュニティ あるいは SD8月号に記事を書かせてもらいました - 猫型の蓄音機は 1 分間に 45 回にゃあと鳴く
    kksg
    kksg 2016/07/05
    エモくて良い
  • 遠く離れたところで昔の夢が叶ってしまった話 - 猫型の蓄音機は 1 分間に 45 回にゃあと鳴く

    なんだか久しぶりの投稿です。前の記事を投稿してからしばらくかなり忙しい日々が続いており、仕事の進捗は出ているのですがブログの進捗がお亡くなりになっていました。逆よりいいと思うことにします。 ところで、「かなり忙しい日々」の中に実は「雑誌への記事の執筆」というものが入っておりました。先に結論をいうと、WEB+DB PRESS Vol.91に「[すぐに使えてずっと役立つ!]データ構造の基礎知識 ── 配列、リスト、ハッシュテーブル、木構造」という特集記事を書かせていただきました。なんと!特集記事です。まじかよ。 www.amazon.co.jp 記事の内容について WEB+DB PRESSは、プログラマとして働き始めてからほとんど毎号購入して読んでいる雑誌で、そのような雑誌の特集を執筆させていただけたことは当にありがたいことだと感じていますし、とても嬉しく思っています。内容としてはデータ構造

    遠く離れたところで昔の夢が叶ってしまった話 - 猫型の蓄音機は 1 分間に 45 回にゃあと鳴く
    kksg
    kksg 2016/02/08
    sugoi
  • YAPC::Asia 2015 で発表しました #yapcasia - 猫型の蓄音機は 1 分間に 45 回にゃあと鳴く

    Perlで学ぼう!文系プログラマのための、知識ゼロからのデータ構造と計算量」というタイトルでYAPC::Asia 2015 で発表してきました。 yapcasia.org http://yapcasia.org/2015/talk/show/9f7059dc-003c-11e5-a00c-89c77d574c3a 上記のリンクからスライド、動画(そのうちアップロードされるでしょう)が見れます。 スライドはほとんど説明のための図にとどまっており、口頭でいろいろと説明したので、当日入場制限で入場できなかったとか、チケットが手に入らなくて来られなかった方はぜひ動画を見ていただけると幸いです。 わたしはプログラマとして活動し始めてから、Perlコミュニティのひとたちが対外的に発表してきたトークや資料、ブログ、あるいは直接のコミュニケーションなどで、直接、間接にかなり助けられてきていて、そのおかげ

    YAPC::Asia 2015 で発表しました #yapcasia - 猫型の蓄音機は 1 分間に 45 回にゃあと鳴く
    kksg
    kksg 2015/08/24
  • プログラミングの「抽象化」ってどういう意味で、なぜ必要なのか - 猫型の蓄音機は 1 分間に 45 回にゃあと鳴く

    <追記>いろいろ反応あってたしかになーって思いましたが、ここで説明されてるのは「汎化」とか「パラメタライズ」としたほうが正しいですね。抽象化というと、一塊の手続きをブラックボックスにして、実装を隠蔽する面のほうが正解に近いです。でもまあそこを差し引いて読んでいただければ、それなりに有用ではある記事だと思うので、このまま残しておきます</追記> プログラミングに限らない話かもしれませんが、ふだんの生活で触れないような概念というのは、一度わかってしまえば便利なんだけど、どうしてもとらえどころがない、というようなことが多いと思います。プログラミングにもそういう概念はたくさんあって、わたしのような凡人は新しい概念にぶち当たるたびに苦労しています。今日はそんな中で「抽象化」という言葉について、「昔の自分にこうやって説明してあげたかったな〜」という説明をします。 プログラミングを学んでいく中で、「とり

    プログラミングの「抽象化」ってどういう意味で、なぜ必要なのか - 猫型の蓄音機は 1 分間に 45 回にゃあと鳴く
    kksg
    kksg 2015/08/05
  • Perlの黒魔術を解説するよ〜〜〜〜 - 猫型の蓄音機は 1 分間に 45 回にゃあと鳴く

    まずはこちらをごらんください。 shinh.hatenablog.com すごすぎる……。恐ろしいですね。 なぜこんなことになるのか、解説していきましょう。まずはPerlの気持ちになりましょう。 Perlの気持ち編 ポイントその1 barewordを数値コンテキストで評価するとどうなるのかということ 件のプログラムは、base64 っぽい文字列が書かれていますが、これを前からPerlコードとして読んでいくと、大きく2つのパートに分かれることに気づきます。というのも、前から一文字ずつ読んでいくと、「+」という演算子にぶつかるわけですね。 それに気づくと、このコードは前半部分 dXNlIE1JTUU6OkJhc2U2NDtwcmludCBlbmNvZGVfYmFzZTY0IGpvaW4nJyw8PjsKX19FTkRfXwo と、 s//v62/e+s//v60/e+s//v44/e+s//v

    Perlの黒魔術を解説するよ〜〜〜〜 - 猫型の蓄音機は 1 分間に 45 回にゃあと鳴く
    kksg
    kksg 2015/05/08
  • 肉をやりました - 猫型の蓄音機は 1 分間に 45 回にゃあと鳴く

    個人の日記です。 id:moznion がはるばる新潟まできて肉をやってくれるというので好意に甘えて肉をやりました。 肉をはじめたところです。すでに仕込み済の肉をmoznionが持ってきてくれたので、焼くフェーズから開始している様子です。 焼いてくれています このような見た目で最高な感じでした うまい(確信) こちらはアンティクーチョというペルー料理だそうです。ハツをスパイスとかビネガーとかに漬け込んで焼いたものだそうです。これ当においしかったのでうちでもやろうと思った。 牡蠣もべたかったので生牡蠣をレモンと塩でいただきました。 今回の功労者が青色のなにかを口元に押し当てている様子です。 感想 肉はとにかくうまかったのでとてもよかったです。 昔から家にひとを呼ぶのは好きだったんですけど、息子が生まれてからはなかなかこういう機会を作ることができませんでした。でもやっぱり家にひとを呼びたく

    肉をやりました - 猫型の蓄音機は 1 分間に 45 回にゃあと鳴く
    kksg
    kksg 2015/03/09
  • LLユーザこそ「ふつうのLinuxプログラミング」を読んだらいいという話 - 猫型の蓄音機は 1 分間に 45 回にゃあと鳴く

    4年くらいまえに一度通読して「ふーん」で終わってたんだけど、最近読み返したら「これはめっちゃ良いでは?」となったので紹介します。 ふつうのLinuxプログラミング Linuxの仕組みから学べるgccプログラミングの王道 作者: 青木峰郎出版社/メーカー: ソフトバンククリエイティブ発売日: 2005/07/27メディア: 単行購入: 35人 クリック: 450回この商品を含むブログ (146件) を見る 特に第二部、第三部がめっちゃよくて、Linuxの重要な概念を、押さえるべきところを押さえて説明してあって最高な感じでした。 サブタイトルにこそ「Linux の仕組みから学べる gcc プログラミングの王道」とありますが、むしろ普段から C 言語でシステムコールに近い部分を普通に書いているプログラマよりも、普段は PerlRuby などのスクリプト言語を使っているが、その言語で書か

    LLユーザこそ「ふつうのLinuxプログラミング」を読んだらいいという話 - 猫型の蓄音機は 1 分間に 45 回にゃあと鳴く
    kksg
    kksg 2014/10/09
  • で、結局型クラスって何がうれしいの、ということの説明 - 猫型の蓄音機は 1 分間に 45 回にゃあと鳴く

    前回の記事では、Scala では implicit parameter を利用することで型クラスと同等のことが実現できることがわかりました。しかし前回の疑問として、「で、それの何がうれしいのよ」というのは残っていましたね。 今回はそのうれしみをなるべくわかりやすく説明したいと思います。 たとえば、色んなクラスに flipFlap メソッドを生やしたい まず、前回と同じく「値をひっくり返す」という flipFlap について考えてみましょう。 前回は関数を作りましたが、Scalaらしく、こういう動きにしたいですね 1.flipFlap // => -1 true.flipFlap // => false "string".flipFlap // => gnirts Scala ではクラスを拡張するときには implicit conversion を使うのが一般的ですね。 class IntF

    で、結局型クラスって何がうれしいの、ということの説明 - 猫型の蓄音機は 1 分間に 45 回にゃあと鳴く
    kksg
    kksg 2014/07/01
  • Scala の implicit parameter は型クラスの一種とはどういうことなのか - 猫型の蓄音機は 1 分間に 45 回にゃあと鳴く

    なんか型クラスとか言うと型の怖いひとたちが怖い話をワイワイしてるイメージがありますよね。わたしはあります。「で、それって何がうれしいのよ」とか、そういう話はあまりされていないような印象がありますね(あくまで印象です)。その上 "Scala の implicit parameter は型クラスの一種" とか言われると「暗黙的な引数がなんで型クラスの一種なんや!!!意味がわからん!!!!」となります。わたしはなりました。 というわけでそのへんについて勉強したので書きます。 そもそも型クラスってなんや Haskellとかにあるやつですね。アドホック多相を実現するもの、らしいです。すごい、いきなり意味がわからない。 というわけで、まずは「アドホック多相ってなんなの」という話からして行きます。 さて、まずは「多相」から行きましょう。この文脈で言う多相とは、簡単に言えば「引数にいろんな型を取れる」とい

    Scala の implicit parameter は型クラスの一種とはどういうことなのか - 猫型の蓄音機は 1 分間に 45 回にゃあと鳴く
    kksg
    kksg 2014/06/30
  • 読み取り権限がなく実行権限だけのファイルが実行できるのはなぜ? - カーネルのソースを読む - - 猫型の蓄音機は 1 分間に 45 回にゃあと鳴く

    きっかけはこのツイート。 基礎的なことなんだろうけど理解できてないこと。 読み取り権限のない実行権限だけのファイルってどういう扱いになるんだろう。— ゑぬぽい改@電探が出(ん)たん? (@NPoi) March 27, 2014 実際にやってみるとわかるけど、実行権限だけついてるファイルは実行可能です。でも、「読み込めないのに実行できる」というのは直感に反するような気もしますね。だって、実行するためにはプログラムをメモリに読み込む必要がありますから!ではなぜ実行権限だけのファイルが実行できるのか、その仕組みを解説します。 実行とはなにか、どういう仕組みなのか Linux において実行とは「forkしてexecする」です(そのへんの詳しい話は プロセスさん を読もう!)。 fork も exec もシステムコール(正確には execve がシステムコールで exec はそのフロントエンドだけ

    読み取り権限がなく実行権限だけのファイルが実行できるのはなぜ? - カーネルのソースを読む - - 猫型の蓄音機は 1 分間に 45 回にゃあと鳴く
    kksg
    kksg 2014/03/28
  • webアプリエンジニア養成読本 #webapp_mook をいただきました - 猫型の蓄音機は 1 分間に 45 回にゃあと鳴く

    著者のひとり id:uzulla さんから「webアプリエンジニア養成読」というを献頂きました。うれしい! Webアプリエンジニア養成読[しくみ、開発、環境構築・運用…全体像を最新知識で最初から! ] (Software Design plus) 作者: 和田裕介,石田絢一(uzulla),すがわらまさのり,斎藤祐一郎出版社/メーカー: 技術評論社発売日: 2014/03/11メディア: 大型この商品を含むブログ (2件) を見る 目を通させていただきましたが、かなり面白い立ち位置のでした。 第 1 章 Web技術オーバービュー そもそも Web アプリってなんなのっていうか HTTP ってなんなの HTML ってなんなのとかそういうことが書いてあります。そもそも Web 技術がいろんな技術の集合体であるので、Web技術をざっと見回すだけでもかなりの紙面が必要であろうところを(

    webアプリエンジニア養成読本 #webapp_mook をいただきました - 猫型の蓄音機は 1 分間に 45 回にゃあと鳴く
    kksg
    kksg 2014/03/12
  • 要するに DI って何なのという話 - 猫型の蓄音機は 1 分間に 45 回にゃあと鳴く

    友人から「しんぺいさん DI について書いてほしい」みたいな話をだいぶ前からされてたんだけど書く気力ずっとなかった。でも仕事の気分転換にちょっとずつ書いたやつがいい量まとまったので公開するです。たいしたことは書いてないっていうか知ってるひとにはあたりまえのことしか書いてない。サンプルコードはわたしの趣味Scala で書いてあるが、Java が読めればなんとなく読めると思います。 DI ってなに Dependency Injection、日語で言えば依存性の注入です。おしまい。 で記事を終えてもいいんだけど、そもそも依存性とはなんなのか、それを注入するとはどういうことなのか、なぜ DI が必要となるのかみたいな話をこれからします。 そもそも依存性ってなあに 例を出します。入力された文字列をもとにおみくじをひいて、その結果を twitter に投稿するプログラムにしましょう。 まずは普通

    要するに DI って何なのという話 - 猫型の蓄音機は 1 分間に 45 回にゃあと鳴く
    kksg
    kksg 2014/02/13
  • 猫型プログラミング言語史観(2) 〜あるいは実行コンテキストにどう立ち向かうのか〜 - 猫型の蓄音機は 1 分間に 45 回にゃあと鳴く

    前回のおさらいと今回の話 前回は手続き型パラダイムとオブジェクト指向パラダイムを見比べたときに、「ひとかたまりのデータとそれを操作する手続きを一カ所にまとめて守る」という方向に言語が進化していったというひとつの史観を示しました。その中で返答として「構造化プログラミング」の時点でその視点はすでにあるという指摘を頂いたりもしました。ただ、「ひとかたまりのデータとそれを操作する手続きを一カ所にまとめる」という発想もオブジェクト指向の「ひとつの側面としては」たしかにありますし、その側面を見ると、オブジェクト指向言語に「言語デザインでもってプログラマーがそれを行いやすくした」という面を見いだすことができそうです。そして、その視点に立ったときに「臭ってくる」ヤバい設計として、「データが露出してる」「別のクラスのデータいじってる」「複数の異なるデータに関心をもってしまっている」というものを挙げてみました

    猫型プログラミング言語史観(2) 〜あるいは実行コンテキストにどう立ち向かうのか〜 - 猫型の蓄音機は 1 分間に 45 回にゃあと鳴く
    kksg
    kksg 2014/01/21
  • 猫型プログラミング言語史観(1) 〜あるいはオブジェクト指向における設計指針のひとつ〜 - 猫型の蓄音機は 1 分間に 45 回にゃあと鳴く

    TL;DR 手続き型プログラミングでは手続きを抽象化することで保守性を挙げることに成功したが、データを守ることには失敗してしまった。そこでオブジェクト指向はデータと手続きをひとかたまりにすることでデータを外から守るというコンセプトを打ち出した。 ここから、「手続き型プログラミングで書いてるのに手続きが十分に抽象化されていないのはヤバいね」とか「オブジェクト指向で書いてるのにひとかたまりじゃない雑多なデータに関心をもっちゃってるのはヤバいね」などの設計指針を導くことができるのである。そして純粋関数型言語の場合は……という話です。 はじめに プログラミング言語にはいろいろなパラダイムがあるが、その中で手続き型プログラミング、オブジェクト指向、純粋関数型言語について、わたしなりのひとつの史観を示すのがこの稿の目的である。となんかかっこつけて言ってみたんだけど、要するに、それぞれのパラダイムがどん

    猫型プログラミング言語史観(1) 〜あるいはオブジェクト指向における設計指針のひとつ〜 - 猫型の蓄音機は 1 分間に 45 回にゃあと鳴く
    kksg
    kksg 2014/01/17
  • PHP はいつもわたしに新鮮な驚きを与えてくれる - 猫型の蓄音機は 1 分間に 45 回にゃあと鳴く

    ことの始まり PHP の srand 関数について調べていて、ひょんな拍子にsrandのseedに文字列(numericである必要はあるけど)を渡せることを知った。 では、ここに long を超えるものを放り込むとどうなるのか。 では結果をごらんください。 「!?!?」 なぜこうなるのか 秘密は PHP 処理系の zend_parse_arg_impl 関数にあります。 zend_parse_arg_impl はphpの関数に渡された引数をパースする部分で、longを要求する関数にstringな値が渡された時の処理はこの部分ですね。 https://github.com/php/php-src/blob/master/Zend/zend_API.c#L335 さて、読み進めていくと「ん!?!?」ってなる行があるはずです。 この行ですね https://github.com/php/php-

    PHP はいつもわたしに新鮮な驚きを与えてくれる - 猫型の蓄音機は 1 分間に 45 回にゃあと鳴く
    kksg
    kksg 2013/12/11
  • 例外あがってきたときに回数制限つきで retry するのどうやったらきれいに書けるの問題 in ruby - 猫型の蓄音機は 1 分間に 45 回にゃあと鳴く

    1年くらい前(?)にわたしのTLで話題になったやつに1年越しでいい案が生まれたので、こういうのはどうかという記事を書く。 id:kksg 向けのエントリである。 class MyError < StandardError; end def maybe_fail(max_retry = 1) raise MyError, 'error' unless rand(3) == 0 p 'success!' rescue MyError => e throw e if max_retry <= 0 # retry しすぎてたらそのまま例外投げ直す p 'failure!' maybe_fail(max_retry - 1) end maybe_fail # 1回リトライする maybe_fail(10) # 10回リトライする リトライしたいみたいな処理、基的に一連の処理であろうからそこはメソッ

    例外あがってきたときに回数制限つきで retry するのどうやったらきれいに書けるの問題 in ruby - 猫型の蓄音機は 1 分間に 45 回にゃあと鳴く
    kksg
    kksg 2013/11/15