ラーメン二郎 目黒店

2016/01/25(月) 12:30頃、快晴。

f:id:akitsukada:20160125123751j:plain:w300

空席0、待ち0。寒いので並んでなくてよかった。 小豚600円の食券を買って待っていたら5分ほどで入店。 さらに5分で店主より目配せあり、ヤサイニンニクをコール。 f:id:akitsukada:20160125124751j:plain ブタは薄めだけど変に固い厚めより好きだな。 麺はシナシナでちょうどよく、噛むとぷちんとちぎれる感じ。うまい。 スープは油が膜をはったいつもの分離タイプ。 そして目黒といえば、ということで途中から白いコショウ投入、うまい。

なんか前回よりだいぶよかった。並んでなかったし、昼はもっと来てもいいかもしれない。 退店時は3人ほど待ちあり。

ラーメン二郎 目黒店

食べログ ラーメン二郎 目黒店

非同期効率厨

非同期であり、強制的に意見が明文化され、長文を書くことができ、冷静に発言できるメールは、基本的に議論目的の利用に耐えうる機能を備えたツールであると思っている。*1

ただし、それには論点と意見とその根拠や論理といったものを端的に文字に表す能力や、さらにいえば相手の理解している内容・していない内容を理解できる想像力が前提としてメール送受信者双方に求められる。

世間のミーティング好き各位はじめ仕事人たちは、本当にそれ対面で同期的に話す必要あんのかってことを常に考えるべきである。別に自分はミーティングを嫌ってるわけではなくて、あくまでも効率を求めているだけである。それほんとに個々の作業を遮ってまでやる価値あんの?ってことだ。

もちろん顔を見ながら話した方が伝わる情報量は何倍にもなる、みたいな話は存じているが、それは意見の交換速度以外にもテンションとか温度感とかのノンバーバルな問題の面が大きい話であって、事実と論理と疑問点を表明して疑問点に回答して合意することが目的である場合、むしろ文字でやりとりをすることでノイズを除外できてよいとさえ思う。逆説的に言えば、全メンバーが対面での情報交換を十分にノンバーバルなノイズなくできる能力を持ち、全メンバーの時間の確保や議論の証跡の保存やTODOの共有さえ問題なく行えるのであれば、どんどん対面でミーティングすればよい。

たぶん厨二エンジニアっぽいことを書いている気がするけど、効率よく仕事する手段があるなら率直にそれをやればいいよね、と言いたい。のです。

*1:今回はチャットについては触れない。

Xcode & Objective-C で困るところとか

今の会社に入ってから iOS 開発をやりはじめて、思った所など。

文字列でいろいろ識別するのが嫌だ

なんで Xcode & Objective-C って色々文字列でやらせようとするのだろう。 いろんな識別子を文字列で扱われるとリファクタリング機能で名前変更できないとか、定義元にジャンプみたいな機能が使えないとか、片方変更したのに実行時エラーが出るまで警告も何も出ないから気づけないとか、もう散々だと思う。不満。

例えば

Storyboard ID

  • Storyboard上 である ViewController に ID "MyViewController" を設定した場合、コードからその ID を参照するときは文字列(NSString)を使う(@"MyViewController")。
    • ↑の @"MyViewController" は型情報じゃないから、当然 IDE の Rename 機能で名前の変更とかできないし、仮にコマンドでコード上では一斉置換しても Storyboard 側は追従されない。変更漏れがあってもビルドエラーにもならない。
      つまり実行時まで気づけ無いので死。
    • せいぜい「Storyboard ID には ViewController のクラス名をそのまま設定する」ルールにして、コード上では @"MyViewController" とベタ書きするんじゃなくて NSStringFromClass([MyViewController class]) とするくらいしか症状緩和できないと思うのだけど、なんか他にいい方法があるのだろうか…。

Segue

  • Storyboard で Segue の名前 "next" を設定した場合、コードからは文字列(NSString)で Segue の名前 @"next" を指定して参照する。

    • だいたい Storyboard ID と同じ点が不満である。
  • あと、文字列でどうこうという話と関係ないけど、 Segue を使った画面遷移をするとき次の ViewController を初期化する方法も気持ち悪い。
    prepareForSegue:sender: の中で次の画面の ViewController インスタンスを取り出して property に値をセットするのだが、つまり property を public に readwrite な状態にしておかなければならないわけで、嫌だ。
    後から書き換えたい妥当な理由がない限り、 readonly にしておきたい。つまり普通に Factory 代わりの自作コンビニエンスコンストラクタを経由して引数を渡しながらインスタンス生成出来たほうがマシだ。

NSNotificationCenter の通知名

  • 通知名は文字列で扱う。
  • 通知名には定数を定義して使おうというのが正攻法だとは思う。たとえば UIKit で用意されている UIKeyboardWillShowNotification みたいな。
  • が、全ての通知名は同じ名前空間に存在するため、重複しないよう自分で管理しなければいけない。
  • これについては NSNotificationCenter をラップして Observer パターンを実現するクラスを用途ごとに作ればよさそう、と思ってそうしているので、気が向いたらそのうち書く。

NSUserDefaults の key

  • KVS なので key が文字列なのは仕方ないがやはり重複しないよう開発者が気をつけなければいけないのは困る。
  • やはりこれもラップクラスを作るのがいいと思う。
  • CocoaPods にもいくつか Utility 的なライブラリがある
  • アプリのアップデート時、key の設計を変えていないか注意が必要な点が NSNotificationCenter より厄介。

記述が冗長なのが嫌だ

全体的に冗長の極みだと思うけど、特に使っていて面倒なのが UIAlertView と UIActionSheet であった。

UIAlertView

愚直に使うとこんな感じ。

  • ボタンの定義とイベントの処理部分が離れていて読みづらい書きづらい
  • その都度 UIAlertView の Delegate 専用クラスを他で用意するならこれでもいいのだけど、なんだかんだ言って alertView.delegate = self; することは多い
  • 要するにこう書きたい
  • で実際そう書けるようにして使っていたのだけど、みんな同じこと考えてる系だったし、Blockskitとか使ってもいい感じにできることを後から知った。

UIActionSheet

大体言いたいことは UIAlertView と一緒で、↓こう書けるようにして使ってる。

やっぱり Blockskit 使うと同じようなことができる。

その他

まだいくつかあるので気が向いたら書こうと思う。
Abstractクラスがないとか(クラスベースでやるなら欲しい)。
動的型付けだとか。
メソッド名長すぎとか。
名前空間ないとか。
物理ディレクトリとXcode上のグループが同期しにくいとか。
クラス名・メソッド名にプレフィックスつけるとか。
iOS7 ではすりガラスがいいんだ!といっときながらリアルタイムな blur がかけられる API が提供されないとか。

作業用BGMが個人的に無理なことと作業環境について

みんなよく音楽聴きながら作業できるね&僕は静かなところが好きだけどそう言ってるだけで何も解決できてなくて難儀だね、という話です。数週間前、エンジニアの生産性がどうというような話が色んなエンジニアのブログで盛り上がっていたけど、生産性という話にも関わると思う。

僕はいわゆるプログラマというやつなんだけど、僕の思うプログラマという職種は、明らかに作業に集中することと生産力が直結するものである。

画面を見て固まっているように見える僕というエンジニアは、実は思考の旅に出ており、脳内スタックを深く深く掘り下げてシステムの設計を思案しているのであり*1、集中しているどころの騒ぎではなく、脳内キャッシュに色んなアイデアを載せては試行を繰り返しているので、少し集中が途切れるとそのキャッシュが飛んでしまって、あれ今何してたっけこの書きかけのコードの行き着く先はどこだっけ、などということになってしまい、ああなんかよくわかんなくなっちゃったなぁCtrl+Z押してちょっと戻ってみようかなぁ、となるのである。

その「少し集中が途切れると」というのが問題で、僕の場合は例えば開発している席のすぐそばでドタバタされたりでかい声出されたり、いきなりディスプレイ覗き込まれる位置で声かけられたり*2、喧々諤々な議論が行われていたり、最悪なんか不穏な空気を出されたり、とかしているともう気になって集中全然できなくなる。

周りを気にしすぎなのかなぁと思うけど、でも僕はそういうやつで、それで実際作業に支障がでるんだから仕方ないのである。だいたいが僕は神経質で、常に周りに人がどう配置されているか、今自分に意識を向けている人はいるかみたいなことを気にしてしまうので、もうダメダメなんだ。自分の背後に誰か立っていないか?誰かこちらに向かってきそうな奴はいないか?みたいな。もうね、できれば常に壁を背にして視界内には誰もいない無音の空間で作業していたい。現実的な作業環境として一番集中できるのは深夜の自室だし、オフィスにするなら精神と時の部屋のような空間で、入り口の建物の壁に背を預けられるような物件が理想である。

しかし世にあるオフィスが全て僕にとって理想的な環境かといえば当然そんなわけはないし、大抵は何らかの話し声が聞こえたり割り込み的な声掛けが生じたりするものなのだろう、とも思っている。当てはまらない環境といえば、そういう点も考慮されたオフィスだったり、在宅勤務だったりということになる。

そこで知り合いのエンジニアたちはどうやって問題を回避しているかと思って見てみると、多くの人はイヤホンで好きなBGMを聞きながら仕事していたりする。「イヤホンガード」とかいって。しかし、それが僕はできないので難儀している。僕はたいぎい*3。僕には、音楽を始めとする何かをイヤホンで聴くことも集中を阻害する要因になるのである。

集中して作業するときには「BGM」って成立しないのですよ。好きな音楽は特にそうなんだけど、全然バックグラウンドにならない。意識のフロントエンドに音がぐいぐい出てくる。気になるじゃないですか、歌詞とかコード進行とかベースラインとか和音とか音色とか。このディストーションレトロでかっこええとかこのトランペットのハイBきれいだとか。そうするともう、イヤホンガードしたところで人の声が楽器の音に変わっただけで、全然集中できない。茂木大輔さんも楽器別人間学かなんかで言ってました、「BGMが好きなやつなど音楽家ではないぞ」って。僕は音楽家じゃないですけど。でも音楽聴くときは音楽を聴くことしかできないのです。「作業用BGM」の動画に「作業妨害用BGM」とかタグがついてるとそりゃそうだろと思う。

つまり何が言いたいかというと、吉良吉影は静かに暮らしたいし僕は静かに仕事したい。そういうものに私はなりたい。

オーケストラ楽器別人間学 (新潮文庫)

オーケストラ楽器別人間学 (新潮文庫)

 

 

*1:プログラミングは細部に至るまで設計作業の塊だ

*2:チャットは苦にならない。無視できる非同期コミュニケーションなので。

*3:広島弁でうざったいやつ

新宿西口 らぁめん 満来 #LOVETSUKEMEN

つけ麺 #LOVETSUKEMEN Advent Calendar 2013 の21日目です。20日目は 

id:sue445さんのしじみ食堂のつけ麺 #LOVETSUKEMEN - くりにっきでした。

ところでこのブログについて

以前はてなダイアリで書いたり書かなかったりしていたんですが、最近何も書いてなくていかんなーと思っていた所、このアドベントカレンダーに参加する運びとなり、どうせ久しぶりにブログ書くならこの機会にはてなブログに移行してみるかということで、この記事がこのブログの記念すべき最初の記事になりました。たぶん技術ネタとかもちらほら書いていくんですが、ブログ再開の機会を与えてくれた @rechiba3 と 

つけ麺 #LOVETSUKEMEN Advent Calendar 2013 - Adventar に感謝の意を表してブログタイトルを「めんが好きな開発者のブログ」にしました。そのままですね。僕は麺好きな開発者です。

21日目 新宿西口 「らぁめん満来」

らぁめん満来 です。6, 7年前によく通っていました。新宿駅の西口を出て徒歩5分ほど。日曜祝日は休みで、11時〜19時営業なので、普段新宿で働いていない身としてはなかなか行きにくい、けど実はとても行きたい店です。

f:id:akitsukada:20131214132427j:plain

土曜日の13時過ぎに行きました。この日の並びは店外に15人、店内に15人ほどでした。待ちは30分くらいだったでしょうか。

この満来は、一度店を閉めていた時期があり、そのとき程近く(満来と同じ通り、100m以内くらい)によく似たメニューの「らぁめん ほりうち」が開店し、一旦はお客さんたちがほりうちに流れたのですが、しばらくしたら満来が復活し今は満来が大繁盛になっているという歴史があります。ほりうちを開店したのは満来の元ベテラン店員(の堀内さん?)だとか。昔の満来のメニューと味はほりうちが受け継いでいる、という説もあります。

f:id:akitsukada:20131214132842j:plain

復活後はなぜか自社ビル持ちです。

メニュー

こんな感じです。

f:id:akitsukada:20131214133046j:plain

(ガラスに映っている姿は僕じゃなくて後ろに並んでたどこかのお兄さんです)

f:id:akitsukada:20131214134700j:plain

昔(店舗再開前)は「納豆らあめん」とか「メンマらあめん」もありましたが、今はシンプルになりました(それらはほりうちが受け継いでいるようですね)。写真の撮り方が悪くて見えてないんですが、「ざる」ボタンの左に「ざるのスープは七味入りです」的な意味の張り紙がありました。

店内

席はカウンターのみです。約15席?席の後ろの通路は広めで、壁沿いに店内待ちの席があります。

f:id:akitsukada:20131214134806j:plain

以前は二階にテーブル席もありましたが、今は一階のみになっています。

卓上には粗挽き黒こしょう、つまようじ、酢、割り箸。水はセルフサービスですが、カウンター上にコップとウォーターサーバがあるので、座ったままで水注ぎ放題です。

f:id:akitsukada:20131214135958j:plain

 

「チャーざる」

さて、ここに来たらいつも頼むのは「チャーシューざる」です。席に座るときに店員さんに食券を渡すと、「チャーざるです!」と元気よく声がけされます。

f:id:akitsukada:20131214140450j:plain

どん!チャーシューでスープが埋まっています。かなりの量の肉です。でかいのが5, 6枚入っています。肉に埋もれて見えませんがメンマも入ってます。

f:id:akitsukada:20131214140508j:plain

まごうことなき豚肉です。厚みと大きさがあり、ふわとろというよりはガッシリしています。が、硬すぎなパサ肉ではなく、絶妙なうまさです。「肉々しい」という表現がピッタリだといつも思いながら食べます。

スープは近年流行りの魚介や煮干しではなくストレートな鶏ガラ醤油ですが、少し酸味が効いていてスッキリ感もあります。こくがあります。うまいです。濃い目・薄めもオーダーできますが、そのままで頂きます。

f:id:akitsukada:20131214140537j:plain

この肉に粗挽きの黒胡椒の香りと辛味がまた合うのですよ。僕はいつも黒胡椒をスープ(というより豚)に、酢を麺にかけていただきます。

でも久しぶりに食べてみたら、以前よりスープの唐辛子のピリピリさが減ってマイルドになったように感じました。それともいつも辛いものを食べている僕の舌が鈍化したのだろうか。

f:id:akitsukada:20131214140605j:plain

そしてノリがたっぷりかかった麺です。平打の縮れ麺で、表面はツルツルですが、スープがよく絡んで美味しいです。のどごしもとてもいいのでいくらでもお腹に入っていきます。

豚に負けず、麺もけっこうなボリュームがあります。計ったわけじゃないんで見当外れかもしれませんが、印象としては茹で上げ後で350〜450gくらいなんじゃないでしょうか。この量なら、中盛か大盛りとして出す店の方が多いと思います。少なめオーダーもできますので、そんなにいらねぇよという方は少なめで頼んだ方がいいでしょう。

麺は硬めオーダーもできます。僕はいつも家系や二郎なら麺硬め、長浜ラーメンの店ならバリカタ的なものを頼み(コナオトシはなんとなく恥ずかしくて言えない)、スパゲッティならアルデンテ大好きな硬麺好きなのですが、満来でざるを頼むときは硬めでなくそのままです。そのままでちょうどいい硬さ、歯ごたえがあり、この麺にはこの硬さがベストだろうと思えます。

頂いたあとのお皿は見苦しいので撮っていませんが、スープ割りを頼むと「はいどーぞ!」と熱々の割りスープを入れてくれます。

麺はシメた状態で出てくるのであまりアツアツなものを食べる感じではないのですが、熱盛りも注文できるのかな?今度いったときは聞いてみたいです。

お値段に見合った量と味

ちょっと高めですが、それでも納得感のあるサービスとクオリティと量だと思います。未経験の方はぜひ一度お試しを。

では

明日は @hokorin さんです。つけ麺ばんざい。

番外編:他に紹介したいなーと思った候補店

他の人がアドベントネタにしてたり行く時間がなかったりして除外したけどとても好きなお店たち

  • はないち(練馬)。子連れにやさしい。特徴的なこってりこく塩と柔らかいチャーシュー。自家製麺はもちもち。イチオシ。
  • 櫻坂(渋谷)。魚介です。あの肉はガッツリしてよいですね。
  • 麺好中野富士見町)。無化調、健康的な材料にこだわりつつ、コクたっぷりの魚介系。うまいっす。