soy-curd's blog

へぼプログラマーです [https://twitter.com/soycurd1]

「革新的ソフトウェア企業の作り方」読んだ

「革新的ソフトウェア企業の作り方」を読んだ。小さいソフトウェア企業がどのようにやっていくと良いか書いてある本で、知見というかんじがする。 各論としてはいろいろ書いてあるのだが、とりあえず、小さいソフトウェア企業はソフトウェアを作るべきであり、不動産業に手を出してはいけないということを学べて良かった。

Eric Sink on the Business of Software 革新的ソフトウェア企業の作り方

Eric Sink on the Business of Software 革新的ソフトウェア企業の作り方

serial experiments lain見た

20週年らしいので、serial experiments lain見た。演出が独特なので、1話見て無理っぽかったら旧キノアニメを見て体を慣らしてから再挑戦したほうが良い。ストーリーを理解させる気が制作陣になく、最後まで思わせぶりストーリーが延々と続くので、オチとかが欲しい人も見れないと思う。ただそれ以外の要素はかなり面白い。

というわけで、サイバーSF衒学的鬱百合アニメを見たい方にお勧めの作品です。

高野秀行『恋するソマリア』読んだ

最近ワールドカップの日本vsセネガル戦について、「どちらの国も納豆を食すから納豆国対決」みたいな謎の切り口で語っていた高野秀行の、『恋するソマリア』を読んだ。 高野秀行はノンフィクション作家で、最近良く読んでいる。文章が軽快なので、頭使わずに読めるので良い。『恋するソマリア』は、つい最近文庫落ちしたみたいなので、 入手して読んでみた。

内容は、内戦状態の国ソマリアで、現地の家庭で料理を習ったり、部族の長みたいなやつと一緒にアフリカ連合軍の武装車両に乗って戦闘地域に行ったりするかんじで、異常に面白い。

『アヘン王国潜入記』でも、アヘン栽培地域でアヘン農家に混ざりながらヤク中になって終わるという異常なオチで、出版可能なギリギリをついてる印象だったけれど、この本もオチが秀逸なのでやばい。 宮内悠介の紛争物とか、西島大介ディエンビエンフーとか、そういう作品群の文脈で語られても良さそうなぐらい紛争地域であるソマリアに肉薄しているのだけれど、文章をほぼ全部ギャグで昇華させているところが、高野秀行しか書けない感を出している。とりあえず、紛争状態の緊迫感と極度の便秘に陥った肛門のギリギリ感をオーバーラップさせる描写力は、完全に神がかっていて、とても良かった。今後も体調を気遣いながら元気に本を出していって欲しい。

恋するソマリア (集英社文庫)

恋するソマリア (集英社文庫)

アヘン王国潜入記 (集英社文庫)

アヘン王国潜入記 (集英社文庫)

英語に慣れるために英語記事のタイトルだけ訳し始めた

英語に慣れるために英語記事のタイトルだけ訳し始めた。訳した、といっても自分は英語が苦手なので、 完訳ではなくて意味がわからない場合はわかる部分だけメモ書きを残している。

記事本文を読んでいるかというと正直あまり読んでいなくて、見出しの単語だけ追っているかんじに近い。 まあそれでもなにも英語に触れないよりはマシだろうという判断で、すごい暇な時だったり、これは読んだほうが良さそうってかんじのやつだけざっくり読む方針でやっている。

ソースは基本Mediumのおすすめ記事みたいなのから拾っているだけなので、もしダメ記事だったとしたらMediumのおすすめ機能が悪い、ぐらいの気持ちで淡々とリンクをtwitterに貼っている。

いずれは記事本文もちゃんと読んで噛み砕けるようになりたいが、あまり最初からハードルを上げると面倒くさくなってしまいそうだったので、しばらくはこんなかんじでやっていく予定。

(まだ二週間ぐらいしか継続していないが、こうして書いておかないとサボりそうだったので改めて書いてみた。)

バーチャル賽銭箱になって時代の最先端を目指す

f:id:soy-curd:20180613004233p:plain

youtube投げ銭機能がすごくて、実際に月ノ美兎とかおばあちゃんyoutuberとかの生配信とかを見てるとどんどんユーザーから金が投げ込まれていく。100円単位のものばかりかと思いきや1000円単位でぶちこんでいる人もいて、これは明らかに経済の流れの革命であり、絶対に儲かるやつで、この流れに乗るしかないといった思いが高まった。それで週末、家のPCにfacerigを入れて、

配信できる環境を整えるまでやったところで、絵が書けないとvtuberになることができないことに気づき、vtuberになることは断念した。(↑の犬はfacerigのサンプルキャラクター。)

他の手段はないものかと調べてみると、投げ銭サービス的なものは世の中にかなり出てきているようで、pixivの出しているfanboxもその一つだ。fanboxは絵師に投げ銭できるやつで、投げ銭するとそれまで非公開だった画像が見れるようになったりする。

しかしその対価である画像も、つきつめれば物理的実態のないデジタル情報であり、fanboxで投げ銭をしたとしても実態としてユーザー←→クリエイター間で移動するのは投げ銭された金銭の数字だけである(その数字も実態なのかという話もあるが)。つまり、投げ銭だけ可能な状態のfanboxがあったとして、それは他の画像が見れるfanboxのページと物理的には等価なのではないか?

そこで作ったのが先にリンクを貼ったバーチャル賽銭箱だ。このfanboxから、pixivのアカウントを持っている人ならだれでも、お賽銭を投げ入れることができる。自分は絵師でもなんでもないので、投げ銭したからといって絵が見れたりなにかできたりするわけでもなんでもない。これは経済の&>/dev/null/だ。金は天下の回りものというが、この賽銭箱に金を投げ入れてもそれが再び社会を還流する保証は一切なく、ただ純粋にお賽銭を投げ入れることができるのがこのバーチャル賽銭箱だ。

またこのバーチャル賽銭箱にはささいなギミックとしてバーチャルおみくじ機能も設けた。これは引く前からすでに運不運がわかっているという画期的なおみくじだ。凶がひきたければ凶の分賽銭を投げれば良いし、大吉をひきたければ大吉分賽銭を投げれば良い。非常に簡明であり、現代的だ。現実の寺社仏閣もぜひこのシステムを流用してほしい。

なお、このバーチャル賽銭箱にもメリットがないわけではなくて、お賽銭を入れる練習になる、大晦日で神社が混んでいても気軽にお賽銭を入れることができる、お金を捨てる場所に困っていてもここなら気兼ねなく捨てられる、などがある。日頃からお賽銭に困っている方はぜひご活用ください。

サンダルで通勤する技術2018

はじめに

東京都の 2017 年の平均気温*1を見てみると、7 月は 27.3 度、8 月は 26.4 度だ。はっきり言って、この気温で革靴で外を歩きまわることができるのは、暑さに対する耐性が尋常ではない人か、人間としての尊厳を失っている人だけだと思う。

また、日本の関東地方ではにわか雨、というかスコールが夏場に発生する。この時、足元が革靴で雨に濡れてしまうと、その後最悪の気分のまま家に帰るまでを過ごすことになる。これがサンダルの場合、少しぐらい濡れていても大して不快ではないので、革靴を履く民に対して大きなアドバンテージを得ることができる。

自分はここ 2 年程、夏季は常にサンダルで出社しているが、非常に快適だ。ただし諸事情により、全ての人がすぐにサンダルに履き替えることができないことも理解している。なので、自分がいかにしてサンダルによる出社を実現したか、記していきたいと思う。この記事はプログラマー向けなので、該当しない方は別途手法を模索していただきたい。

f:id:soy-curd:20180603220851j:plain
2年以上履いて死ぬほど汚くなったサンダル

いかにしてサンダルで出社するか

ここで最も重要なのが、現在所属している会社でサンダル出社が認められるかどうかだ。これは就業規則に直接書いてあることはないと思うので、しかるべき部署に問い合わせる必要がある。ただし残念なことに、問い合わせた時点でアナーキーなやつだとして人事に目をつけられる可能性があるし、現状社内にサンダル出社している人間がいない場合、自分がパイオニアとしてサンダル出社道を腕力で切り開く必要があるだろう。ここでそのパワーやメンタリティがない方は、現状に甘んじて革靴出社を続けるか、思い切って転職する必要がある。自分は道を切り開くメンタルがなかったので、転職によってサンダル出社を手に入れることとなった。

サンダルで出社できそうな会社をみつけよう

もしあなたがプログラマーなら、サンダルで出社できるようになる可能性は高い。なぜなら、故スティーブ・ジョブズが学生時代にビルケンシュトックのサンダルを愛用していたという話は非常にこの業界では有名であり*2、もし mac を業務で用いている会社ならば、経営層に 1 人はジョブズファンが潜んでいるはずだからだ。

よって転職サイトでは、「業務で mac を使っているか?」*3という観点で探してみると良い。いままで業務で windows しか触ったことがなくても問題ない。macwindows よりも自由度が低い*4ので、windows が使える人間ならば 100%mac を使用可能だからだ。調べれば、きっとたくさんの会社を web 上で見つけることができるはずだ。

しかし、ひとつよさそうな会社を見つけたからといって、安心してすぐに応募してはいけない。もちろんだが、mac にはジョブズファン以外も手を出す実用的な側面もあり、 mac を使っているというだけで 100%サンダル通勤できる保証はどこにもないからだ。そこでぜひ、Wantedly 等、採用ページに社内の写真をアップロードすることを義務としている転職サイトを確認してみよう。Wantedly は それらの会社の転職ツールとしてディファクトスタンダードの地位を占めているので、非常に効率的に mac を利用している会社を探すことができる。もしその写真の中に屋外のものがあり、かつサンダルを履いている人が複数人写っていたら、非常にサンダル通勤可能な確度が高いと言える。

次に、先ほど見つけためぼしい会社の人事ブログ等を見てみよう。そこにも社内の写真があるはずだが、その中で、明らかに夏に撮られた写真なのに短パンの人間がひとりもいなかった場合、その会社はスラックス着用を義務付けている可能性がある。スラックス着用が義務つけられている会社でサンダルが着用可能な可能性は低いから、このような会社は候補からはずしたほうが良いだろう。

さらに自分のおすすめの観点は、「使用しているプログラミング言語が動的型付けか?それとも静的型付けか?」である。例えば JavaScala を用いている会社よりも、RubyPython を用いている会社のほうがサンダルで出社できる可能性は高いだろう。(これについては特に根拠はないが、自分が今勤めている会社が Python を使ってる会社なのでそんな気がしている。)

ちなみに Python を学ぶのにはこのサイトが便利である。あなたがもし Lisp を知っていれば、PythonRuby もその一方言にしか過ぎないことがわかってほっとするだろう。

住む場所を決める

さて、無事に転職先は決まっただろうか? 次に、サンダル出社に最適な家を決める必要があるだろう。なぜならば、サンダルで長距離を歩いた場合、基本的に足が痛くなるからだ。ここについてはサンダルはスニーカーには絶対に勝てない。なので駅まで徒歩 10 分を超えるところには絶対に住んではいけない。夏が始まったばかりのころは良いが、8 月にさしかかったころには足に血豆ができ、サンダルで通勤する意欲がほとんどなくなっているだろう。

出社する時間を決める

おそらくサンダル通勤していない方々の盲点だと思うのが、出社時間だ。これは東京に限った話なのだが、満員電車でサンダルに乗ると、かなりの確率で足を踏まれ、かつダメージが非常に大きい。そこで出社する時間は、7:00 より前か 10:00 より後にする必要がある。

ただし、恐らくサンダル通勤可能な会社で満員電車に社員を乗せるような鬼畜な行為する会社は存在しないだろうから、これについては杞憂かもしれない。

さいごに

あとは夏が来る前に、サンダルを入手するだけだ。サンダルはなんでも良い。少し良い物が欲しければ、ABC マートに行ってビルケンシュトックのものを適当に選べば良い*5。歩行手段にサンダルを選んだ時点で長距離を歩く選択肢はすでに捨てているので、足に合うかどうかはそれほど気にする必要はないと思う。あとはそれを履いて、出社してみよう。2018 年夏、皆さんの健全なサンダルライフが始まることを心から祈っている。

サンダル出社するためのチェックリスト*6

  • [✔] 関東地方の夏はほとんど熱帯みたいなものだと理解したか?
  • [✔] 現在の会社でサンダル出社している人はいるか?
  • [✔] 上のチェックがない場合、サンダル出社可能な会社に転職したか?
  • [✔] その会社の社員はスラックスが義務付けられていないか?
  • [✔] その会社の社員は JavaScala を用いてはいないか?

完全教祖マニュアル (ちくま新書)

完全教祖マニュアル (ちくま新書)

*1:http://www.data.jma.go.jp/obd/stats/etrn/view/monthly_s3.php?prec_no=44&block_no=47662

*2:https://www.fashionsnap.com/article/2016-02-22/stevejobs-auction-seiko/

*3:つまり web 系

*4:できるゲームが少ない

*5:なお、ビルケンシュトックを 年中ずっと履いていると、足の裏の形に中敷きが汚れてくる。どうしたものかと思っていたが、今日池袋の東武ビルケンシュトックの直売店に行ってみたら、2000 円でクリーニングできるらしい。ビルケンシュトックは非常に商売が上手いことがわかった

*6:完全教祖マニュアルに影響された

制御の反転と DI の関係を完全に理解した

自分は会社で利用している web フレームワークや Angular で DI を日頃から使っているのだけれど、なんかモックとかぶちこめて便利だな、ぐらいの理解で、 制御の反転っていう概念がよくわからなかったし、それと DI がどのようにな関係にあるかについては全然考えていなかった。なので、最近いろいろ調べてわかったことを書いてみる。

まず、制御の反転なのだけれど、wikipediaに概念がまとめられている。しかしDI を念頭にこの文章を読んでも、この説明だとよくわからないと思う。

これはなぜかというと、この wiki に載っている例が、Dependency Injection とは直接関係ないからだ。実装技法 の項目になって、ようやく依存性の注入の話が出てくる。この時点で、依存性の注入制御の反転を行うための一つの手段でしかないことがわかる。

それではいったい DI における制御の反転は何の制御を反転しているのか?ということだけど、これは、クラスの管理(制御)の責務を反転している。

この記事からその責務を抜粋すると、

  • 依存関係の置換または更新を行う(a)
  • 依存関係の有効期間の特定(b)

である。DI においては、クラスの管理(制御)の責務を担うのは、利用する側のオブジェクトではなく、フレームワークだ。

これを Angular のユースケースで考えると、(a)は例えばユニットテストのためにモックの注入を行う場合で、 (b)はフレームワーク側の機能としてProviderSingleton serviceを提供している点だろう。

以上を意識してから読むと面白いのが、この記事この記事 だ。

前者では必要な機能を持った関数を引数として渡したり、部分適用を行うことで依存性の注入を実現していて、後者では、 React は props の機能で DI 相当の機能が実現できるから、DI なんて知る必要はない、と言っている。

つまり、OOP の文脈で DI を実現するためには DI コンテナのようなフレームワークが必要だが、FP においては関数が first class であることで、言語機能として制御の反転を担保している、と言えるのかもしれない。(React は FP 側)

google の Peter Norvig のスライドで、「動的言語でのデザインパターン」というものがあって、この中で GoFデザインパターンのうち 16 個は動的言語では不可視化されるかシンプルになると言っている。確かに Python なんかではイテレータは言語に組み込まれているし、頻出するパターンはプログラマの手を煩わせないように言語設計者が上手く取り込んでくれているのだろう。

もし FP が今後もっと台頭すれば、DI の概念もいずれは、すでに言語にビルトインされたものとして特におおげさに言及されることもなくなるのかもしれないと思った。