ベストスピーカー賞の是非が話題ですが

わたしの気持ちです。 ベストスピーカー賞はあくまで「スピーカー」としての賞であり、プログラマとしての賞ではない 貰った側もベストスピーカー賞好きなひとも嫌いなひともそこを混同しないほうが平和だと思う 「にぎやかし」と「人に響くトークをしたひと…

#builderscon 2017で「複雑なJavaScriptアプリケーションに立ち向かうためのアーキテクチャ」という発表をしてベストスピーカー賞第三位を頂いてきた

先週開催されたbuildersconで表題の通りの内容をしゃべってきました。発表内容については、スライドもアップしてますが、いつもどおり実況中継シリーズを会社ブログのほうに書きます。ただ、あれ書くのすごい大変なのでもうしばらく時間かかりますすみません…

心理的安全性を獲得しにくい個人(は|を)どうすればいいんだろう

心理的安全性ということばはだいぶ浸透してきて、とくに説明なくみんなに通じるような感じになってきているけれど、まあなかなかに難しいものだなあと思う。 組織やチームのまとめ役となる側からすると、心理的安全性が確保できるチームをどのように作ってい…

第52回NDS(長岡開発者勉強会)で「怖くないし役に立つ設計原則の話」を発表してきました

新潟県長岡市で開催された、NDSの第52回で、「怖くないし役に立つ設計原則の話」というタイトルで発表してきました。 内容としては、 設計原則は「馬鹿の一つ覚え」でやっていくとむしろ保守性を下げてしまうことを確認する 様々な設計原則について例を出し…

#y8spring でフロントエンド開発の話をしてきました

先日行われた #y8spring で、@ushiboyさんとともにフロントエンド開発についてのトークをしてきました。 懇親会会場でお酒を飲みながらトークするという、いわゆる「はちぴースタイル」での発表だったため、かなり会場が温まっていてありがたかったですが、…

オフラインファースト的なGUIアプリケーションをScala.jsで書く話 / write stack - usecase

前回の記事では、Scala.jsで書かれたモデル層がどのようなクラス/オブジェクトをJSで書かれたUI層に公開し、UI層はそれらをどのようにして扱うのかというのを見てきました。今回からはScala.jsで書かれたモデル層のうち、コマンドから始まる一連の状態更新系…

NDS(長岡開発者勉強会)の52回で「怖くないし役に立つ設計原則の話」というタイトルで喋ります

新潟県長岡市では定期的に「NDS」という勉強会が開催されています。わたしも新潟に住んでいるときには非常にお世話になった勉強会で、とても良い勉強会です。 その第52回(52回ですよ!?すごくないですか!?)が6/17に開催されるとのことなので、「怖くな…

オフラインファースト的なGUIアプリケーションをScala.jsで書く話 / Vue.jsによるUI層とScala.jsによるモデル層のコミュニケーション

前回の記事では、Scala.jsをどのように利用したかについて概観を見てきました。 前回、UI層は素直にVue.jsの単一ファイルコンポーネントで書いて、モデル層はScala.jsで書く、というスタイルを取る、と述べましたが、今回はモデル層がどのようなインターフェ…

オフラインファースト的なGUIアプリケーションをScala.jsで書く話 / Scala.jsについて

はじめに オフラインファーストへの要求 近年、オフラインファーストというか、「オフラインのときにも普通につかえて、オンラインになったら同期する」みたいなことに対する要求が高まっているように感じます。 その場合は、ローカルにもきちんと永続データ…

vue-routerのafterEachグローバルフックがhookされるタイミングとonReadyがhookされるタイミング

vue-routerにはonReadyというフックが用意されている。 ドキュメントを読めばわかるように、これは when the router has completed the initial navigation, which means it has resolved all async enter hooks and async components that are associated w…

VuexとPDS、immutable modelの所感

Twitterに書いた内容再掲。 最近Vuexについて考えてるのは、Vuex使ってPDS実現するとなると、状態はVuexのレイヤーで持つことになるから、モデル層はステートレスで作るのが相性良い(というか自然とそうなる)だろうな その時にJSでイミュータブルに寄せて…

画面ごとの複雑さが異なるアプリケーションにどう立ち向かうか

ツイッターで書いた内容です SPAやってると画面ごとに複雑さが全然ちがって、単なる一覧表示してる画面の複雑さといろいろな操作ができる画面の複雑さは雲泥の差になる こういうときに、「この画面はきちんとドメイン層作ったほうが見通しがよくなるけど、こ…

MVVM, Layered Architecture, Clean Architectureを綜合して位置づけを整理する

一つ前の記事にもある通り、掲題の通りの試みを行いました。 github.com 一応、「一通り書けたぞ!」という感じになったので、ここにてこのREADMEを Ver.1.0.0 メジャーリリースとします。 自分ではかなりわかりやすく整理できたつもりでいますが、まだまだ…

GUIアプリケーションアーキテクチャ総合!みたいなやつ書いてる

最近はずっとJSでGUIを書くっていうお仕事をやっていて、その中で様々な知見が溜まってきてます。 そのときにひしひしと感じたんだけど、世の中にはさまざまなアプリケーション・アーキテクチャの話が溢れかえっていて、結構混乱を産んでいるように思います…

Vue.jsとvuex、Fluxについて

最近立て続けにそのあたりの話をする機会があったので。わたしの意見です。 vuexというかFluxに手を出すタイミング Vue.jsを利用していて、相互に関連のある二つ以上の状態を扱う必要が出てきたら、それはもうすでに「十分に複雑な状態管理」である たとえば…

大人と物語ることと混沌について

ぼくは最近、大人になるというのは取りも直さず、自らを物語るということなんじゃないか、と思うことがある。 ぼくたちは、自己だとか内面だとかいったものが先にあって、そいつらがぼくたちの選択や人生を駆動している、とついつい思いがちだ。けど、自己だ…

リソース指向と操作指向のURLに関する最近の思い

弊社のwebAPIはRESTを捨てて操作指向のURLにすることが多いんだけれど、ここのところwebAPIだと結構そういう判断するところが増えてるように感じる(個人の感想です)。 SoEとSoRという話があったけれど、webブラウザ上でもスマートフォン上でもリッチなユー…

参加してきたぜ #nds50

お世話になっている勉強会であるところの長岡 IT開発者 勉強会(NDS)が第50回を迎えるということで、参加してきました。 第50回勉強会(2016/12/10) - 長岡 IT開発者 勉強会(NDS) わたしとNDS 今は東京で働いているわたしですが、ちょっと前までは新潟県でフリ…

双剣問題について

双剣問題についてはyatteiki.fmを参照してください。 双剣問題に関しては言いたいことがふたつあって、ひとつは小菅さんも言ってたけど、「別に結婚とかしたからといって楽になったり落ち着いたりするわけじゃない、むしろその分剣を振り続けなきゃならない…

RDBMSが強すぎる件

以前、「RDBMSを採用すると、無料で外部キー制約とかチェック制約とかトランザクションが付いてきてオトク!!!」という発言をしたことがあって、その考えは今もあまり変わっていない。 RDBMSは単なる便利な箱じゃなくて、データの整合性を守るための仕組み…

日記

金曜は仕事で疲れてしまって例の本を進めることができなかった。 今日(もう日付が変わっているけど、寝るまでが「今日」)は進めようと思ったのだけれど、とにかく精神が厳しい感じになっていてこの状態で進めるのはあまりよろしくないという気がして開いて…

日記 2016/8/4

しばらく、日記を意識的に書いてみようと思っている。 ちょっと訳あって「自分自身がどういう人間でどういうことを感じていてどういうことを考えているのか」ときちんと向き合ってみる必要があるなあということになり、「自己理解ワークブック」というものを…

プログラマとコミュニティ あるいは SD8月号に記事を書かせてもらいました

表題にあるとおり、Software Design8月号の特集記事を書かせていただきました。GitHub入門的な記事です。 今書店で売ってる号は7月号ですので、今売ってるやつには載ってません(でももちろん買ってくださってもいいんですよ?)。発売日は7/18ですので、そ…

#yapc8oji 行ってきた

yapcasia8oji-2016mid.hachiojipm.org YAP(achimon)C::Asia Hachioji 2016 mid in Shinagawa という、八王子なのか品川なのかよくわからない名前(正解は「品川は八王子(哲学)」という態度です)のカンファレンスに、スタッフ、そしてスピーカーとして参加…

WEB+DB PRESS vol.92感想

会社のほうのブログでも書きましたが、WEB+DB PRESS vol.92に記事を書かせていただきました。 techblog.reraku.co.jp 見本誌をいただいたので、感想を書きます。 今回は新人さん応援号ということで、新人さん向けの記事が多い感じですね。個人的には新連載陣…

遠く離れたところで昔の夢が叶ってしまった話

なんだか久しぶりの投稿です。前の記事を投稿してからしばらくかなり忙しい日々が続いており、仕事の進捗は出ているのですがブログの進捗がお亡くなりになっていました。逆よりいいと思うことにします。 ところで、「かなり忙しい日々」の中に実は「雑誌への…

既存のクラスをScalazで定義されている型クラスのインスタンスにするの巻

この記事はScala Advent Calendar 2015(Adventar)の9日目の記事です。 Scalaには型クラスのための仕組みがあるぞ! Scalaには、型クラスを実現するための仕組みとしてimplicit parameterという仕組みがあります。これとimplicit conversionを組み合わせるこ…

YAPC::Asia 2015 で発表しました #yapcasia

「Perlで学ぼう!文系プログラマのための、知識ゼロからのデータ構造と計算量」というタイトルでYAPC::Asia 2015 で発表してきました。 Perlで学ぼう!文系プログラマのための、知識ゼロからのデータ構造と計算量 - YAPC::Asia Tokyo 2015yapcasia.org http:…

プログラミングの「抽象化」ってどういう意味で、なぜ必要なのか

<追記>いろいろ反応あってたしかになーって思いましたが、ここで説明されてるのは「汎化」とか「パラメタライズ」としたほうが正しいですね。抽象化というと、一塊の手続きをブラックボックスにして、実装を隠蔽する面のほうが正解に近いです。でもまあそ…

YAPC::Asia 2015で喋ることになりました

8/20,21,22に開催される、プログラマのフジロック(あるいはプログラマの夏コミ)とも言えるYAPC::Asia 2015ですが、無事トークが採択され、発表させていただく運びとなりました。詳細は下記より。 http://yapcasia.org/2015/talk/show/9f7059dc-003c-11e5-a…

「地方」のIT勉強会は参加者がもっと外に向かってアピールしてほしい

わたしの立ち位置 今は東京都でプログラマをやっているが、3,4年くらい新潟県でプログラマをやっていて、当時は地元のコミュニティによく顔を出していた、という人間です 以下本文 少なくともわたしが知っている限りの話です。新潟県には優秀なプログラマが…

YAPC::Asia 2015 のプロポーザル「文系プログラマのための、知識ゼロからのデータ構造と計算量」

2015年、8月20日から22日までの三日間、プログラマの夏フェスことYAPC::Asiaが今年も開催されます。わたしもトークを応募した。 YAPC::Asiaってなに? YAPCとは? | What is YAPC? 世界最大のYAPCが最後の大花火をぶちあげにもどってきました!YAPCはYet Ano…

引っ越しました

仕事の都合で東京のはずれに引っ越しました。 新潟にいる間は、新潟のプログラマがとても仲良くしてくれて、おかげでプログラマとしてめちゃめちゃ楽しく生活することができました。なかでも @hayajo さん、@civicさん、@dictavさんには格別にお世話になりま…

Perlの黒魔術を解説するよ〜〜〜〜

まずはこちらをごらんください。 Base64 decoder/encoder in Perl - 兼雑記shinh.hatenablog.com すごすぎる……。恐ろしいですね。 なぜこんなことになるのか、解説していきましょう。まずはPerlの気持ちになりましょう。 Perlの気持ち編 ポイントその1 barew…

エラーハンドリング・クロニクル #nds41

はじめに プログラミング技術の歴史は、ありとあらゆる歴史がそうであるように、いろんな「史観」で眺めることができます。ならば、プログラミング技術の歴史を、「エラーハンドリングとの戦い」という視点から見ることもできるのではないでしょうか。本日は…

phpでzipしたい

php

php で zip したい場合は、array_map を使う(!!)

Functor における map の引数の順序を考えてたらいっこストンと腑に落ちた話

別に知見は書いてないですが、なるほどなーと思ったという感想を書いたエントリです。 ScalazとHaskellのFunctorの提供するmap(fmap)は、引数の順番が異なります。 Scalaz の Functor def map[A, B](r: F[A])(f: A => B): F[B] F[A] なFunctor値が最初の引数…

肉をやりました

個人の日記です。 id:moznion がはるばる新潟まできて肉をやってくれるというので好意に甘えて肉をやりました。 肉をはじめたところです。すでに仕込み済の肉をmoznionが持ってきてくれたので、焼くフェーズから開始している様子です。 焼いてくれています …

テンプレートをDRYにするのは慎重にやったほうがいいですよねというお話

社内でレビューおじさん業してて書いた内容ですけど守秘する必要ない情報なんでちょっと内容書き換えてオープンアンドシェアーします。 本文 見た目とかUIというのはソフトウェアの中でめちゃめちゃ柔らかい部品(些細な変更されることが多い部品)なので、…

スロークッカーとかいうぐう有能調理器具wwwwwwww

はじめに プログラマやツイッターユーザの間では、誕生日とか退職とか就職とか引っ越しとか結婚とかそういう節目のタイミングでアマゾンの欲しいものリストを公開しプレゼントを請うという文化が存在します。不肖私もこのたび 2月13日に無事31歳の誕生日を迎…

タイ風角煮考

ここ最近角煮が話題かどうか知りませんが角煮です。 角煮ですが、うまいし簡単に作れるのですが時間がかかります。とはいえ、タイ風角煮なら雑に作ってもうまいという知見があるのでシェアします。 まず、角煮が硬くなるのは調味料で煮る、そのタイミングで…

@sasaplus1 さんの神対応によって process-bookがwebで読みやすくなりました

process-book ってなに この文書はなんですか? この文書は*nix系のシステムにおけるプロセスやシグナルなどについて説明することを目的に書かれました。「プロセスとかよくわかってないからちゃんと知りたいな」みたいなひとたちが想定読者です。 書いてい…

swift の protocol の解決が Playground 上でうまくいかないっぽい話

えー。尊敬するiOSアプリケーションプログラマのひとりであるdictavさんがこういうものを上げておりました。 Logger for Swift まー適当に。 Logger.logger = superPrintln とかしても良いし。 https://t.co/C1fY3ecuP2— Fat fat fat!@Niigata (@dictav) 201…

Niigata.pm tech talk を開催しました #niigatapm

去る 12/13 、JPAさんの支援により Songmu さんを講師にお迎えして、Niigata.pm tech talk を開催しました。 内容 発表内容は、以下のような感じでした。 hayajoさん 「Dockerを使った Perl アプリケーション開発」 タイトルの通り、Dockerを利用して Perl …

ドラ娘の話

なんか盛り上がってるけど、けっこう前からわたしもよくドラ娘という風潮に twitter とかで言及してたのでこのタイミングでブログで一度書いておく。 ドラ娘という風潮は個人的には不快であるが、これはどちらかというと私個人の嗜好に基づくものなので、「…

TRADITIONAL MUSIC THEORY FOR CONTEMPORARY MUSICIANS を読んだ

一般に流通してない本なんだけど、下のリンクから買える。 【販売ページ】Traditional Music Theory For Contemporary Musicians | Music Theory Workshop Japan 【販売ページ】Traditional Music Theory For Contemporary Musicians | Music Theory Worksho…

NDS 38 長岡花火を支える技術 に行ってきた #nds38

新潟県長岡市で定期的に開催されている勉強会「NDS」の38回目に参加してきました。 第38回勉強会(2014/11/01) - 長岡 IT開発者 勉強会(NDS) メインセッションの感想を 長岡花火のインターネット配信がどのように行われているかという話でした。めちゃめちゃ…

ActiveRecord の dup の挙動

ひとことで言うと、 ActiveRecord には dirtry な attribute を追跡するための便利なメソッド群が定義されていますが、dup とともにこれらを扱うときには要注意ですよ、というお話です。 _was とか _changed? は便利 dirty な attribute を追跡するってのは…

Niigata.pm をやるぞ!!!!!!

「Niigata.pm って死に体なんじゃないの?」「しんぺいさん Niigata.pm やる気ないでしょ」「新潟にPMなんてあったっけ」「あいつもう Ruby と Scala しか書いてないしダメだな」「猫型さん完全にやる気ない」などの発言がそこかしこで聞かれる Niigata.pm …

値の一意性を保証したいときに気をつけるべきこと

たまに以下のようなロジックで値の一意性を保証しようとしているコードを見かけます。 if ( 既に値が存在するか ) { ...(1) print "別の値にしてください" } else { 値をどっかに保存する処理 ...(2) print "保存しました" } 一見うまく動きそうなんですけど…