人類働くべからず

いずれ労働は贅沢になります

東新宿近辺の飲み屋について

この記事は、ex-handslab Advent Calendar 2018 2日目の記事です。

オフィスが新宿六丁目 新宿イーストサイドスクエア に存在しており、この辺りがどういう地域かというのを説明すると、歌舞伎町の北東端と大久保の南東端、そして新宿五丁目の北端に接している感じ。

こういう感じなので、ちゃんとした所に飲みに行くとすると、以下の選択肢が出てくる。

  • 大久保方面で焼肉や韓国料理に行く
  • 新宿五丁目・三丁目の良い感じの店に行く
  • 歌舞伎町・新宿駅周辺で普通の飲み屋に行く
    • ちょっと遠い

で、普段の仕事終わりのちょい飲みに適した店が少ない感じ。

結局こうなった。

バーミヤン 東新宿駅前店 | バーミヤン店舗検索|すかいらーくグループ

餃子 + 100円の(梅酒ロック|紹興酒)最高では??

以上となります。

Goで学ぶSHA-3

この記事は、ex-handslab Advent Calendar 2018 1日目の記事です。

adventar.org

最近会社で結城先生の暗号技術入門の最新版を輪読して、自分はSHA-3の所を重点的に読んだのでそのあたりの話をします。

SHA-3 is 何

細かい仕様は内部実装などは上記公式仕様や結城先生の書籍を読んで頂ければわかるので省略しますが、個人的な印象としては SHA-1 よりシンプルな記述で理解しやすい印象を受けました。

SHA-3 in Go

既に標準ライブラリで実装されています。(詳細は以下ディレクトリに全部あるぞという雑スタイル)

github.com

ざっくりいうと、吸収フェーズと搾出フェーズに分かれている。

吸収フェーズは以下の様な感じ。

  • 入力データをrビット毎に分割。キリの悪いところは適切にパディングされる。
  • はじめのビット列について、 Keccak が別のビット列として保持している内部状態と排他的論理和をとる
  • 2つめ以降のビット列について、 1つ前のブロックでの関数fの出力とのXOR をとり、これを再度関数fへの入力とする
  • 入力ブロックが枯渇するまで繰り返す

搾出フェーズは以下の様な感じ。

  • 吸収フェーズの最後の出力 r+c ビットのうち先頭rビットを最初の出力ブロックとする。最後の出力全体を関数fへの入力とする。
  • 直前の関数fの出力のうち先頭rビットに対して同様の捜査を行い、出力ブロックの総和が必要な出力サイズとなるまで繰り返す。

ここで、天下り的に出てきている内部状態関数fですが、それぞれ以下の様にいえます。 - 内部状態: ハッシュ値を計算するための入力メッセージと異なる値の集合 - 関数f: 計算時のビット列を格子点の集合とみなしたとき、その状態を幾何学的に撹拌するような操作

という感じでしょうか。

まとめ

Goはいろんな有用なアルゴリズムや処理が良い感じに可読性高く記述されていて、標準ライブラリ見てるだけでもかなり勉強になります。 以前gzipのライブラリを同様に読んでみたのですが、下手な図解を読み解くより完全に学びがありました。

参考文献

  • 暗号技術入門 第3版 秘密の国のアリス

画像素材が欲しいとなった時に探すサイトを集めてみる

これは何

  • 画像素材とかストックフォトとか、ちゃんとした公開用資料を作るためにちょっとしたものを探すときに毎回イチから探していたりして、結局いらすとやさんに落ち着くみたいなのを軽減したい。
    • いらすとやさんが悪いのではなく、猫も杓子もいらすとやさんが跋扈してるのもなんかアレなので。
    • エンジニアだし本業がこれじゃないのでなるべく楽をしたい。

頭の片隅に入れておくこと

  • 有償なら用途は無制限ということはないので注意。
    • 商用利用は可能か。
      • 基本無償だが商用や用途によって別途ライセンスの問い合わせが必要なものなどもある。
    • サービス制限はあるか
      • 異性紹介やR18サービスはNGとか。
    • ライセンス表記はどのようにするか。

横断検索

有償

無償

追記とかサイト簡易解説とか随時追加してく。

静岡出身だけどさわやかじゃなくてびっくりドンキーがソウルフードなので語ります

この記事はびっくりドンキー Advent Calendar 2017 18日目のエントリです。

僕は静岡出身なのですが、さわやかよりもびっくりドンキー派です。びっくりドンキーソウルフードと言っても過言ではない。
さわやかとの単純接触回数がほぼゼロだったというのがあると思いますが……

f:id:yusuke-u:20171209191908j:plain

写真はチーズカリーバーグディッシュ。今すぐびっくりドンキーに行きたくなりませんか。なるでしょう。

子供の頃に最も良く連れて行ってもらった記憶が多いファミレスからしびっくりドンキー
おそらく、1回連れて行ったら相当気に入ったのか、リピートされるようになったと思われる。
当時は地元にはなかったので、わざわざ隣の市まで連れて行ってもらっていた。
多分片道30分とかかかっていた。

なんの背伸びをしたかったのか、ホットペッパーバーグステーキばかり食べていた気がする。
最近行きつけの池袋の2店舗はホットペッパーバーグステーキがなくてちょっとつらい。
だが南池袋店は電源付きカウンターがあって作業も捗って最高。上記だけが難点。

今でも月イチ以上で食べているびっくりドンキー
これからもずっと食べ続けるでしょう。


完全にポエム。だがそれでいい。

(Qiitaから記事移植)今年事業会社からWeb系ベンチャーに転職したので所感を共有します

2016年に転職アドベントカレンダーで書いた記事、Qiitaに書いたけどQiitaの方針にマッチしない気がするので、突然消されたりしたらさみしいのでcloneしておく。


この記事は 転職(その2) Advent Calendar 2016 の 16日目の記事です。

自己紹介

こういう話は前提条件が重要だと思うので、職務経歴書もどきの自己紹介をします。

  • ソフトウェアエンジニア9年目
    • 大学に8年くらいいたので現在30代半ば
  • 理物的な大学院修士課程修了
  • 新卒未経験で中小SIer入社
    • 自社内案件のみ
    • 新卒平均学歴が理系修士課程修了くらいでポテンシャル重視の厳選採用の会社。
    • 大手からの研究開発委託とか医療系の重症系とか高度なやつばかりで、事務系(小売とか金融とか)は一切やらない感じの会社。技術的チャレンジを重視していたよう。
    • 今は DeepLearning とか xxxLearning 分かる人が異常に多いので分析コンサル業みたいなのもやってるとか。
  • 丸4年後に小売系事業会社のIT部門に総合職のエンジニアとして中途入社
    • シェルと PHP で EC や EC系アプリのバックエンドをやりまくる。
    • EC・アプリ関連は企画のメンバーとめっちゃ距離が近くて、その仕事をしている時はベンチャー感が非常に強くて、良かった。今思えばサービス開発意欲の原体験的になっている。
    • 一方で電話やFAX多くてFAXの使い方わからないと軽くdisられる環境(つらい)
      • ノイズキャンセルヘッドフォンがぼくを守ってくれました。
    • クラシックな事業会社の良し悪しを肌で感じました。在籍時にこんな長い記事書いてた。
  • 丸4年ちょっとで、toCWebサービス企業に転職
    • キャッチアップやフィットに正直なところ不安があったけど、何とかやってます。
    • 半年以上経った。
    • Golang ゴリゴリ書いたり若者の成長を見たり促進したりしてニヤニヤする仕事をしている。
    • イマココ!

どんな人に参考にして欲しいか

Web系以外の企業に在籍し、ソフトウェアエンジニアをしている人。 Web系企業の定義は諸説ありますが。 ただし、本記事は筆者の在籍経験がある企業の主観的な良いところ悪いところを中心としたまとめというひとつの具象なので、全ての状況には必ずしも当てはまらないのはご留意下さい。 しかし、なんらか参考になる部分はあると信じています。

良かったこと

優秀な人がより多い

学歴経歴職種問わず優秀な人が多いなっていうのは本当に思いました。 若い人も優秀な人が多くて、この人と同い年の時、完全に学生寮でごろごろしていたなーと思うと、すまなかったという気持ちになります。 優秀な人が多いので、良い刺激を受けて自分のレベルアップ速度も上がった気がします。

休息を取れる日が増えた

ベンチャーに行ったのに何を言っているのだ、と言われそうですが、これは本当です。 業界によりますが、事業会社は割と標準で休日が少ない業界もあり(祝日ノーカウントとか)、現職の同僚に前職の休日数や休日のカウントの仕方を伝えると、かなり驚かれます。 なかなか休日などの制度は変えづらいので、内製エンジニアを雇用するアグレッシブな事業会社でもこういったところは難しいのだなと思いました。

疲労が減った

休息が増えたからでは、というのもありますが、単純な時間カウントで普通に36協定前後ぐらいの時間は働いています。 あくまで主観ですが(疲労も主観か)、成果に厳しくも上下関係無くみんながお互いに気持ちよく働けるようにという心がけが強いので、そのおかげなのかなと思っています。 あと普通に朝に強くなりました。

やるべき事に集中しやすい

ビジョンやミッションがはっきりしているので、どういうものを作ってどういう価値を提供したいかという方向性がはっきりしていて、今している仕事に本質的には疑問を持たずに取り組みやすいところはいいと思う。 ミクロな職場環境の話もすると、以前の職場はオフィス内の隣接部署の喧噪など直接業務と関係無い部分での阻害要因がかなりあったなど、細々としたことが色々あったため、それらが一切存在しないので集中があまり削がれず、集中を保ちやすくなりました。

給料が増えた

割と驚くほど増えて、昇給ペースも成果次第だがかなり早く、お金だけが人生ではないとはいえ、お金をないがしろにしていいわけはないのでこれは素直にモチベーションの一部になります。

悪かったこと

仕事が好きになりすぎてる

あえて悪かったことを挙げるならこのくらいで、ワークとライフの融合度が上昇した感じがします。 まだまだ時間の使い方が下手なので、ちょっと趣味にかける時間とかが減ってしまったので、上手いこと付き合っていかないと中期的には人生にも仕事にも良くないなと思っている。ここは調整していきたいところ。

転職どうしたらいいの

したくなったらすべき時だろうし、その上で出来ることを全てやったら去るべし、とは思いますが、勢いで飛び出してよりつらい思いをする人もいると思いますので、SI->事業会社->Web の遷移をした時の振り返りから、こうしたらいいのではという雑感を記します。

SIer がいやになったので SIer 以外に転職したい

もしWeb系に行こうとしているなら、Web系で使うような知識や技術で何かコードを書いていたりするのでなければあまりおすすめしません。 コードがまともにかけて設計力もあるという方なら大丈夫かもしれません。Web系企業でも、前職がSIだったという方は結構居て、比較的かたくしっかりした開発ができる点が重宝される場合があります。 また、きょうびこういう考え方は賛否はあるのですが、C/C++を正しくがっつり仕事で使っていた人は基礎力が高い人が多く、Web系の技術はすごい勢いで習得出来ると思いますので、その辺を考慮する会社もあるかもしれません。

ただし、Web系、もっというとその会社の文化に合わないとそもそも採用されないと思います。

新卒を大量に取っているような大手のWeb系でも、使用している技術について未経験で、そこへの適性が読み取れないエンジニアは職務経歴が輝いていても採用されないと思います。 あえて採用ラインのハードルを下げている企業さんに採用されたとしても、給与が大幅に下がるであろうし、それをよしとするかというところがあると思います。 まずはWeb系の技術を個人で触ったり、その界隈のイベントに出るなどして情報と知人友人を増やしたり、自己研鑽と自己の相対化をして冷静になることをおすすめします。 ただし、もう心身がぼろぼろの場合はさっさと辞めるなり休職して、体制を整えた方がいいと思います。そんなレベルで嫌になる前に生存戦略を考えられるといいなと思います。

現実的には、よりましなWeb系と共通の技術を使うSIer、または事業会社の内製エンジニア(社内SEでなく開発をする)を目指すのが良さそうに思います。 事業会社は内製開発の必要性を強く感じつつも、エンジニアの獲得と定着に苦心しておられる企業さんが多いので、Web系と比較して採用の可能性は高いと思います。

事業会社がいやになったので転職したい

このケースは一概に言えない感じはあります。 事業会社はITが絡まない既存の大きな事業もある会社ですので、よそ様の仕事を代わりに行うSIや、自社のサービスを成長させるWeb系企業とはまた違う趣があります。 あまりにも多様なので本当に一概には言えないのですが、その上で書きますと、内製開発なのにSIっぽい働き方になってていやになってきたのであれば、まず社内の仕事の進め方を変えるために動いた方がよいと思います。 内製開発が本業側の人から評価されないような環境であれば、なんとかそちら側の人の理解を得られるように動いた方がよいと思います。 他にも環境により色々なことがあると思いますが、自社内のことなのでなんとか解決策を模索することが望ましい、ということは共通して言えます。 これらを通して、環境が改善したら継続して在籍すればよいのかな、と思います。

それでもダメなら転職を検討すればよいのですが、ここで内製開発の要素技術がクラシックすぎると転職が難しくなってきますので、生存戦略としてWeb系で使われる技術を本番環境で使っているような状態に導いておくとグレートです。 おそらく事業会社のかためのところでも、ガチガチのSIerさんよりは自由度が高いケースが多いと思いますので、一旦外に出てしまった人が人月的な世界に戻ることはあまり楽しい人生に繋がらないと思います。 ですので、独立系や技術力の高く自社製品やコア技術があるSIerや、Web系企業を念頭に転職を検討するとよいのではないかと考えます。 結局はここで技術力が求められるので、前節で述べたように社外の知人を増やすことと、自己研鑽と自己相対化は同様にしておいた方がいいのは間違いないです。

筆者のダイレクトな経験ですが、事業会社で事業に向き合いながらソフトウェア開発をしていた経験とそこからくる考え方は、Web系の企業文化と思ったよりマッチするようで、転職活動時に現職以外にも高評価をいただけた会社さんがいくらかありました。

Web系企業がいやになったので転職したい

これは筆者が経験無く、なんとも言えません。 共通していえるのは、同様に研鑽と相対化と人脈形成を怠らずにしておく、という点でしょうか。 Web系を渡り歩く先輩方はたくさんいるので、そちらのみなさまの意見を参考にして頂きたいと思います。

まとめ

上記を踏まえて、ざっくりいいたいことまとめです。 再掲ですが、 現在 Web系以外の企業 で働いている向けです。

  • 転職はしたくなって、現職でやれること全部やったなと思ったあたりがすべき時。
    • ただし病むくらいまで疲れていたらすぐに辞めるか休むかする。
  • どんな状況でも自己研鑽と相対化をしておく。
  • 事業会社のソフトウェア開発のメンタリティはWebサービス開発と通じるので、SIで働く人がWeb系に行きたい場合、中間状態として事業会社で働いてみるのは非常にアリな選択。長期間マッチしたらそのままいていいと思う。
  • 転職にあたりカルチャーマッチも必要だが、コードが書けないのは完全に話にならないので、プログラマ下流の仕事という概念を持っていたらその考え方を今すぐコンクリに詰めて東京湾に沈めてコードが書ける上での技術力をつけること。

チラシの裏をちょっと整形した程度の乱文で大変失礼しました。 これがSIerや事業会社の中でくすぶりかけている方々へのヒントになれば幸いです。

ソフトウェアエンジニアの新卒の学習用の言語は何がよいか2017

はじめに

毎年のようにソフトウェアエンジニア新卒がどの言語でプログラミングを覚えるべきか論が出るので、参戦しておきたかった。

結論

Go or Python(3)

理由

初めてプログラミングをしてみた時、今思えばどうでもいいようなことにハマって、最初のコードを動かすまでに手間取ったり、おまじないが多すぎて腑に落ちない部分が多かったりしなかっただろうか。

そこそこ普及していて、かつ言語仕様がさほど大きくなく、Hello world するまでにおまじないが少ないものあたりがわかりやすい理由。
例えその組織のメイン言語でなくとも、プログラミングの本質的なところを理解するためにはこれらを採用した方がベターかなと思う。

Go は標準ライブラリが充実した、Google が考えたさいきょうのベターC言語な感じがするので、やりたいことに集中できる感じ。
Python も初学者の学習レベルであればほぼおまじないはいらないし、まあまあ簡潔に書けるので、これもまた同様にやりたいことに集中できる。

理由に対する反論(自問自答による)

  • 本質を理解するならC言語でいいのでは??
    • C99以降のC言語ちゃんとわかってる人、いうほどいないのでは?古いC言語を教えても完全に教材用となってしまう。
  • Java がやっぱり手堅いのでは?
    • おまじないはやっぱり多いし……
  • Hello world! までおまじないが少ない方がいいならPHPでいいのでは?よく使うし実用性・即戦力育成観点からもありなのでは?
    • PHPは個人的には好きだし便利だけど、プログラミング初学者にやらせるには行儀が悪すぎるし変なクセがつきそうなので却下。繰り返しになるが個人的には好きな言語。
  • Ruby でいいじゃん?
    • すみません、好みの問題です……ありだとは思います。
    • ただ、教える側の質的な問題で、Railsでアプリ書けますむしろRailsしか知りません!みたいな人しかいない場合、PHPとはまた違った意味で変なクセがつきそうなので、「わかってる」人がメンターにつくならいいと思います。

おわりに

Go はいいぞ。Pythonもいいぞ。

ユーザ企業に転職して4年経ったエンジニアはその後どうなったか

結論

Web系に転職していた。

会社の意識としては事業会社だが、世間一般の分類としてはWeb系でエンジニアリングを重視する会社なので、この様に記す。

どうした

こういう記事を書いた。

今年事業会社からWeb系ベンチャーに転職したので所感を共有します - Qiita

Qiita にコード断片もないポエムを書くのはどうかなと思うので、なるべく淡々と参考資料になるように、という感じにはした。

// ややエモだがそこはすまぬ……

で、上記記事の背景を社会的に差し支えない程度にここに追記する。

何があった

主業務にて

まさに、前述の記事の事業会社の項で記述した問題に直面していて、どうにかしようとするも敵わぬ、となったのである。

チームで作り上げたものがリリース直後は技術的には品質はやはり良くはなく、色々あった挙句チームからプロダクトのイニシアチブは剥奪され、ITやWebの施策が関係無い部署が主管部署に変更された。

愛と目的を持ってプロダクトを進化させて行きたかったが、なかなかあちらの担当者に技術的にもWeb系的なトレンドも理解していただけず、障害対応と場当たり的なキャンペーン実装ばかりが1年以上継続した。

およそ1年間、アプリ上でユーザに対して発行するお知らせと、プッシュ通知の違いについてすら理解していただけなかった。あの時の巻き込み力の弱さを悔やんでいる。 主業務的には、これが最も厳しい経験だった。

その他間接的なもの

付随するものとして、主業務以外の阻害要因が非常に多く、諸々の結果として閾値を超えたというものもある。

具体的には、業務及び間接業務や労務でも関係の無い部署の方から、すれ違いざまに怒鳴られるなどがあった。

基本的には服装の話で本質的でなく下らないことではあるのだが、服装自由と聞いて入社して男性は全員シャツイン必須というのが判明したということがあり、この点について上記の様な事象が突然発生するということがあった。

上記を行なっていたのは社員の方ではなく、長期お勤めのパートの方であった。

同じようなことを継続して言われたのは僕だけではなく数名おり、かなりの方(エンジニア含む)は既に僕と同様に退職されている。

直接要因ではないにしろ、留まる理由と退職理由を自分の中で並べて検討する際に、後者として一定のスコアがあったのは事実である。

また、悪意は無くそれが業務であるから本当に仕方ないのだが、営業の部署が隣接しており、電話が鳴り止むことのない環境であったこともある。

電話を普通にするならまだしも、大声での談笑が多く、騒音計で測定したところ自席が65-70dbで推移する日もあり、ヘッドフォン無しでは仕事にならないこともあった。

ある同僚は、工事や建設現場で使うイヤーマフを装着していた。それほどであった。

ちなみに、ヘッドフォンが正式に許可されたのは途中からで、それまでは禁止であった。

ビジネスとそれに対する自分の想いに関する問題だけでなく、こういった本質的でないことによる消耗は、大きな会社になるほど発生するのだろうか。

現職が大きくなっても、こういう本質的でない問題で同僚が消耗するような芽が出ないようにしないとならない、と最近強く思っている。

事業・待遇の先の見えなさ

事業会社としての本業は完全に成熟・衰退産業で、所属していた部署は普通に社内外のSIをしており、利益率の高いビジネスに着手する方向が見えなかった。

利益率を上げられないということは待遇改善は期待出来ないことにつながる。

また自社の強みがいずれ強みでなくなることに対する危機感を説明し続けたものの、これも巻き込みが弱く響かなかったということもあった。実際今は他の巨大なプレーヤーに強みを奪われつつあるように見える。

評価制度

あるにはあったが、あるランクではスキルと成果をどの割合で見るか、及び結果としての相対評価の分布と、その評価による賞与レート程度であった。

スキルに関しては評価の最終決定者にエンジニアが不在に近い状態だったので、正しく評価されていた方はあまりいないのではなかろうかと推測している。

少なくとも、評価に納得感を持っていたのは2割にも満たなかったと記憶している。

また、評価が確定してから評価に関する面談が放棄された期が有り、賞与振り込み額をもって評価を知り、次回賞与直前にその放棄されかけていた面談が設定されたことがあった。

現在

上のクダ巻きが必要なことは一切無く、目的にフォーカスして仕事が出来る状態となっている。

変に常に後ろ向きな人も、変に足を引っ張る人もおらず、とにかく組織と事業と個人の成長に尽力出来る環境に身を置けている。

デフォルトで他人を尊重して扱う人しかいない集団はこんなにも素晴らしいものか、と。

今の所人生で最も仕事が楽しいし、翌営業日はもっと楽しいと思えるのだろうな、と。単調増加で。

まとめ

完全にクダを巻いている様に見えますが、巻いていますね…… 禊の様なものと思って頂ければ。

職種は問わず、他人を尊重し、せせこましい性悪説的な論理で他人を扱わなくて済む環境で仕事をするのが最も生産性が上がります。 利益率の高いビジネスならなおよい。清貧というのはファンタジーであるなと強く感じました。

そして、身を置く場所により人間の性質も変わります。

良き人に囲まれると良き人に近づけるし、逆もまた然り。

人間はどうしても距離の近い人や所属組織、住む場所による影響を強く受けるので、この点でも良き場所に身を置くようにしていきたいですね。

居場所を良くしようとし、それでも駄目なら己が動く。

とはいえ、何十年も生きた人間の考え方を変えてもらおうとするのは難しく、むしろおこがましいことすらあります。

さらに人はその場所に何十何百何千といるので、巻き込みとのバランスですが、己が動くことが最もビジネス的にも良いケースは多いので、皆様無理をせず。

以上となります。