Runner in the High

技術のことをかくこころみ

Elmにおける依存性逆転(DIP)の表現

この記事を読んでなるほどな〜と思ったので記事にしてみる。 medium.com 依存性逆転とは 雑にいうと実装ではなくインターフェイスに依存させ、モジュール間の依存関係を疎結合にする手法。英語ではDependency-Inversion Principleと呼ばれ、頭文字をとってDI…

とにかくいろんな会社でインターンしていた学生時代

テック系の学生というと、やはりいろんな会社のインターンに参加していろんなイケてるナウい技術を触って「圧倒的成長!」を求めますよね。 自分もそうでした。 自分はかなり極端な例で、大学を1年休学してまでインターンしてコロコロと会社変えながら10社く…

Elmにおける「型によるルールづけ」の考え方

Elmは静的型付言語なので、型のチカラを活かすことでコンパイラに「あっては行けない状態や組み合わせ」をチェックさせることができる。 高度な例としては前回書いた以下の幽霊型(Phantom Type)の記事があるが、もう少し簡単な例を紹介しようと思う。 www.…

ElmでPhantom TypeとExtensible Recordを用いて型安全な状態遷移パターンを実装する

このDiscourseスレッドがかなり面白かった。 OPは「幽霊型(Phantom Type)を使うと特定の順序でしか型安全に状態遷移できないように実装できると思うんだけど、どうしたらいいかな?」と質問している。 discourse.elm-lang.org 実装してみる 回答者からのア…

2019年を振り返ってみる

振り返っちゃいます 1月 圧倒的な家賃の無駄さに耐えられず千葉への引っ越しを決めた。 2月 千葉へ引っ越した。引越し業者にはアーク引越センターというところを使ったが、激安でびっくりした。なお、引っ越しの経緯は去年末のブログに書いている。 www.izum…

Elmで再帰構造を使って特定の順序でなければ状態を更新できない型を作る

a, b, c, dという型がある状況でaがなければbが更新できないし、bがなければcが更新できない、のような流れを再帰構造の型で表現する実装。使いどころは謎だが思いついたのでメモしておく。 type Data a b c d = Data (Maybe (a, Maybe (b, Maybe (c, Maybe …

Elmをプロダクトで一年書き続けた感想

この記事はElm Advent Calendar 2019最終日の記事です。 去年末あたりから現職のチームでElmを書き始めたので、大体1年程度はプロダクションでElmのコードを書き続けたことになる。学生時代はRubyとJavaScriptばっかりだったので、関数型プログラミングとか…

DeveloperWeek 2020のCFPが通ったので登壇する

「Elm Europe楽しかったし、またなにか海外のカンファレンスに参加しがてらElmのトークしたいな〜」と思っていたところ、DeveloperWeek 2020がCFPを募集しているのを知ったのでJavaScript Conferenceの枠で応募したら通ってしまった。 応募上は単なるLT枠だ…

クリーンアーキテクチャのUsecaseはなぜControllerへ値を返すのではなくOutput PortとしてPresenterを呼び出すのか

何を言っているのかと言うと、みんな大好きクリーンアーキテクチャの右下に図示されているFlow of Controlのこと。 黒線が引かれているということは、つまりUsecaseの中でOutput Portのインターフェイスを持つPresenterの関数なりが最終的に実行されるという…

携帯電話開発とYRP

この記事が気になったのでいろいろ調べてみた togetter.com 端的に言うとSESで常駐になる企業は地域的な危険性がある、という話。そもそもSESという業態自体がどこにいってもヤバいのかもしれないが、それはそれとして具体的な地名がいくつも挙げられ、そし…

昔からいるプログラマーたちはいまも職を失わずに仕事をしているのですか?

https://www.quora.com/What-happens-to-older-over-30-programmers-Do-they-get-fired-as-they-get-older-and-less-innovative-Does-mid-career-pay-increase-much-for-software-engineers/answer/Bruce-Hoult ぼくは今年で55歳になる。81-84年ごろに大学を…

Elmに興味があるなら見ておきたいIzumiSyのスライド3選

過去に「NoRedInk*1の筋肉の人」としておなじみリチャード・フェルドマンをフィーチャーする記事を書いたので、今度は自分をフィーチャーしようと思う。 www.izumisy.work おすすめはやはり一番最後の「jQueryからElmまで」だが、正直このスライドはElmに関…

関数型プログラミングカンファレンス2019に登壇してElmの話をした

Scala, Haskell, Rust, Elixirあたりの関数型の匂いを感じさせる言語の人たちが、一堂に会してそれぞれのプログラミング言語のあれこれをトークする「関数型プログラミングカンファレンス2019 in Japan」というイベントが新しく爆誕していた。このイベントは…

gcloudコマンドの対象プロジェクトIDを関東最速で取得する

iTerm2にはステータスバーという機能があり、そこで現在のgcloudのCLIで操作対象になっているプロジェクトIDを出すと非常に捗る。 単純に考えるとgcloudコマンドのconfigオプションを使い、プロジェクトIDの取得ができるだろうなと思うが gcloud config list…

Datastoreでは将来の変更を見越してフラグ系もStringで格納するのがいいんじゃないか

たとえば以下みたいなデータ構造がDatastoreにあるとする type UserSetting struct { UseNotification Bool `datastore:"useNotification"` } これはユーザーの設定として「通知をするか/しないか」を表現しているものだが、もしも仕様変更でTrue/False以外…

Architecture Night #2 がかなり良かった

architecture-night.connpass.com 千葉に引っ越してから、渋谷あたりで開催されるイベントにあんまり行かなくなっていたが、Twitterで設計メインのArchitecture Nightというものがあると知って会社の先輩と参加した。アーキテクチャと銘打っているくらいだか…

ユーザーインターフェイスにおける5つのステート

元ネタはこれ scotthurff.com Webアプリケーションを作ったことがある人ならわかる話だが、アプリケーションは確実に予想外の状況に晒される。サーバーはレスポンスを返すのに時間がかかるし、ユーザーの環境がメモリ1G以下のこともあれば、完全に想定外の使…

不動産投資を知るために何冊か本を読んだ

今年の頭くらいに書いた今年の抱負に関する記事の中で「不動産投資に関する本を読む」とあるが、ちゃんと有言実行ということでとりあえずいろんな本を読んでみたので、その感想を記事にしておく。 izumisy-tech.hatenablog.com 胡散臭い投資代表「不動産」 …

自分なりの作業工数見積もりのヒント

ソフトウェア開発最大の難所と呼ばれる見積もり。見積もりに関する古典があるくらいにはやはり見積もりというのは難しい。 自分もずっと見積もりを正しくするためにはどうすることがベストなのか、ということにずっと悩みを抱えていたが、社会人2年目ももう…

2019年10月のクラウドバンク

去年末からクラウドバンクをやっている。なんだかんだもう1年近く継続してやっているが、正直かなりいいのでいろんな人に勧めている。勧めている手前、自分の実績というのもある程度公開しておくのが筋かなと思うのでブログの記事にしておく。 izumisy-tech…

GoのAccept Interfaceはなにが嬉しいのか

たまーに考えることがあったが、せっかくなのでアウトプットしておく。 まず前提としてGo以外のインターフェイスを持つ言語、例えばJavaではインターフェイスを満たしていることを明示するためにimplementsキーワードなどで実装を明示してやる必要がある。つ…

FirestoreのCollection Groupに関して(ユースケースや注意点)

個人開発でFirestoreを使っているので情報を集めている。なんか日本語だとググっても要領を得ない記事ばっかりだったが、英語でちゃんと調べたらFirebase Blogでしっかり書いてあった firebase.googleblog.com FirestoreなどのNoSQLデータベースは前提として…

Amazonで買える海外のプロテインバー3選

プロテインバーと呼ばれるものがある。 簡単に言うと一本満足バーやスニッカーズ的なあのおかしのバーにプロテイン(タンパク質)が多めに含まれているバーのことだ。日本国内ではまだこの手の製品はさほどメジャーではないようだが、海外(とくにアメリカ)…

elmstaticを使って静的サイトをElmでつくる

純粋にElmとparcelかなにかで自分のポートフォリオサイトを作ったりするのは割と簡単できるが、もう少し機能を増やしてマークダウンで、ブログの記事を書いたり、ついでに記事にタグ付けをしたりなんかしたいときには、このelmstaticというのがよいかもしれ…

OSカーネルのCコードにでてくるkmainとはなんなのか

ozkl/sosoという小さなオペレーティング・システムの実装を読んでいたのだが、そこで出てくるmain.cのエントリポイントがmain関数ではなくkmain関数であることに気がついた。昔々にCを書いていたときは問答無用でmain関数とした記憶があるので、一体コレはな…

Indiegogoで2年前に購入したVoltermanがようやく届いたのでレビューしてみる

2017年の夏頃にVoltermanというスマートウォレットをIndiegogo上でバックした。スマートウォレットとはなんぞや、というと財布に盗難防止カメラ、モバイルバッテリ、Wifiホットスポットなどの機能を満載にしたスパイの道具みたいなロマン溢れる製品である。 …

iHerbで手軽に買えるスマートドラッグ3つ

スマートドラッグと聞くとなんか危なそうで飲むとバキバキに決まるようなものを想像しがちだが、実態は単なる身体にいい成分が含まれたカプセルだったりする。今年くらいから、かの有名な健康食品系ECサイトであるiHerbでちょこちょこいろんなものを買って試…

Firebase Cloud FunctionsではSparkプランだと外部ネットワークにGETリクエストすら飛ばせない。

もしかしてGETリクエストなら...と思ったけど普通に無理だった。 Cloud Functionsのログ画面 Billing account not configured. External network is not accessible and quotas are severely limited. Configure billing account to remove these restrictio…

個人的なアプリケーション設計のバイブル3選

自分が本格的に設計を意識するようになったのは、2015年の夏に現職であるFringe81株式会社で開催されていたサマーインターンに参加してからだ。 インターンではDDDとクリーン・アーキテクチャ*1を一から勉強してAPIサーバーに実装する、というカリキュラムで…

大きなリリースをするべきではない4つの理由

自戒を込めてメモ 大きなリリースはバグを増やす 大きなリリースになればなるほど、コードベースに潜むバグが増える。充分なテストがないチームでは、コードレビューにテスト相当のタスクが求められるようになり、本質的な設計の優先度は低くなる。結果とし…