iOSDC Japan 2019で『FatViewControllerを安全に書き換える方法が見つからなかったので(ry』という発表をします #iosdc

こんぬづは、最近「週3勤務」というワードに敏感な田中です。 まずタイトルを妥協するなダンボー田中...!

登壇します

今年もiOSDCの季節になりましたね。 ありがたいことに今年もプロポーザルが採択され、30分枠でお話しさせていただくことになりました。

以下のような内容になります。

URL

今年はスピーカーディナーで宣伝させてもらう時間があったんですが、 なんでみんな喋り始める前に笑うねん!w(YouTubeの動画)

FatViewControllerを安全に書き換える方法が見つからなかったので、どういう痛みを許容するか考えた by ダンボー田中 | トーク | iOSDC Japan 2019 #iosdc - fortee.jp

www.youtube.com

タイトル

『FatViewControllerを安全に書き換える方法が見つからなかったので、どういう痛みを許容するか考えた 』

日時

  • 日時:2019ĺš´09月06日(金)15時10分〜
  • 会場:Track A

概要

安全にリファクタリングを行うには「お約束」があります。

「自動テストを書いてからリファクタリングする」

言葉にしてしまえば簡単で「プログラマであれば当然のことだ」とおっしゃる方もいらっしゃるかもしれません。
でもそれを難しくするのがヤツの存在です。そう、iOSエンジニアならば切っても切れない関係のFatViewControllerです。

前述のお約束を守るために、こんな堂々巡りに陥ったことのある方は少なくないのではないでしょうか。
・「UIテストを書いた上で書き換えを行うか?」「時間がかかりすぎる、ダメだ...!」
・「ユニットテストを充実させて設計を変更しながら書き換えを行うか?」「先にプロダクトコードの変更が発生してしまう、ダメだ...!」

このトークではFatViewControllerの書き換えを「自動テストを書いてから」というお約束を守ってこなすのが難しかった話をします。
そのうえでなるべく安全に、現実的に書き換えていく方法にはどんなものがあったか、どんな部分で安全を切り捨てて痛みに耐える判断をしたのか話をします。

チラ見せ

f:id:ktanaka117:20190905141505p:plain
タイトル

f:id:ktanaka117:20190905141531p:plain
本質

f:id:ktanaka117:20190905141600p:plain
あぁ^〜

さいごに

今年も楽しい発表ができるようにがんばりま〜す!(胃痛

寂しくて死んじゃうから現地で声かけてね〜!わいわい!

人と接するときは自分のクソザコを出したい

こんぬづは、最近は自分の人生を振り返って感情のジュースを絞り出しながら創作活動をしている田中です。


今日はちょっと真面目めな話。

最近私の中でコミュニケーションするときは感情の汲み取りと整理が大事だなと感じるようになりました。 この感覚はいくつかの本を読んでいたり、自分が日々感じている部分からきています。

「クソザコ」という表現は語弊があるかもしれませんが、 弱さが見える相手には話がしやすい という意味です。相手の弱さや隙がわかっていると、自分の弱さや隙も見せても良いかもしれないと思える(と自分は感じやすいです)。 これは必ずしもネガティブなものでなくてもよくて、ただ「お互いのことが知りたい」に要約されるかもしれません。よく知りあっている間柄では弱さをさらけ出せる関係にあるという逆説かもしれません。

弱い部分には人であるがゆえの認知の歪みバグ(「あの人はこう思っている」憶測、「あの人にこう言われるからこう動こう(たとえ正しくなくとも)」)とか、なんらかの問題が潜みがちです。 まず感情を汲み取ってメンタルの理解をする・ケアをする→事実として存在する問題・課題にどう対処していくかという流れがあります。 お互いのことを知ることで傾向を知って、話しやすくすることでさらに理解と対策につなげられる。

このエントリは人とコミュニケーションをとる時に以下のキーワードが大事だなと思う最近の気持ちをまとめるエントリです。

  • 弱さ、隙
  • 不安、不満
  • 感情と事実、課題の改善
  • 共感と同感
  • (良い意味で)雑なコミュニケーション

なんでこんな話を?

クソザコでいたいと思うに至ったのには、さまざまな出来事・感情があったからです。 主に「人に話しづらい」「弱さを出しにくい」「失望されるのではないか」など、さまざまな感情をすごーーーく丸めて話をするならば「心理的安全性が得られていない」みたいなお話です。

悲しみから生まれる悲しみ

TODO: 感情からくる、人間だと起こりがちなことを書く

  • ネガティブな気持ちが含まれる転職
    • 転職するときは多かれ少なかれ含まれるネガティブ感情、あるいは人生のフェーズの違いによる仕方なさ
    • その度合いが大きい状態で転職されてしまうと良いことがない
  • 休みがちになる
    • さらにコミュニケーション不足に
    • うしろめたさ
    • 学校休みすぎると逆に行きづらくなる、夏休み明け一発目の学校はこわいみたいな

どんな人なのか知りたい

  • クソ雑コミュニケーション
    • 僕の場合は雑に話をフってもらえる(いじってもらえる)とけっこう嬉しかったりします
    • 「昨日何食べた?」
    • 「最近エモいエモいって📦言いがちだけどエモいってなに?」
    • 「元気してる?」
    • 「オッ、最高の毎日を送ってる?」
    • 「パンツなにいろ?」(人によってはセクハラなので用法用量なんだけど、これくらい軽口叩けるといい...
  • 共感の機会を増やす

共感と同感

共感は相手がどう思っているのかを知ること。 同感は相手が思っていることに自分も同意すること。

つよつよな人はこわい

  • 技術しかり、立場しかり
  • 逆に立場が高くてもこわさはある
    • 立場の低く能力のある人、的確な指摘は痛い
    • 立場に関係なく、伝え方には配慮が必要。みんな全知全能ではないし、調子が悪い時期もある
    • 僕は自分が(技術とか気持ちとか習慣とか)が強くないという自覚がとてもあって、「こうすればいいじゃん(簡単じゃん、なんでやらないの?)」などのコミュニケーションが発生するとめちゃくちゃ死ぬ
      • その自覚がある分、人に言うときは特に気をつけて、「こうしてみたらもっとよくなるかもよ!」みたいな伝え方をよくしたりします( ˘ω˘ )
      • あくまでそうするかどうかは個人の決定次第

知りあうために感情を伝えたい

  • 感情は感情。期待と現実的なアクション。
  • 感情と事実を切り分ける、聞く方も、伝える方も。
    • 「これは感想なんだけど〜」
    • 「これは責めるわけではなくて、こうなっていると思うのだけれど〜」
  • 感情を伝える前に「こういう事情で話をするんですけど〜」と一段線引きする
    • 「どこで話したらいいかわかんないんだけどこういう問題があるっぽくて〜」とか

たとえばこんな風に

  • 聞きを徹底する
    • 共感と同感を使い分ける
    • 相手が思っていることは事実なので否定しないし「そうなんだねぇ☺️」する。
    • もしも相手が思っていることが自分も同意できることだったら「わっかるーーー!!!😭😭😭」する。
  • メシ行く
  • 酒飲む
  • ゲームする
  • 趣味のはなし
  • 「楽しい」の中で多少雑な扱いをしあってみる
    • 仲良く、忌憚なく意見しあえる関係になっている数名の友人とのこれまでを考えると、この部分が大きい
    • 嫌な思いをさせてはいけないけど、どこからが嫌な思いをするのか探る意味でもやってみるといいのかもしれない
  • 会話や目的が成立しなくても「ま、いっか」前提でできる話を増やしてみる
    • 心持ちの話
    • 相手に受け入れられたり期待した結果が得られなくてもいっか
    • ダメ元でもいいから言ってみるかーというスタンスで話をするとか

こんな本から影響を受けているよ

  • 『エンジニアリング組織論への招待 〜不確実性に向き合う思考と組織のリファクタリング〜』
  • 『エンジニアのためのマネジメントキャリアパス』
  • 『パーフェクトソフトウェア』

バ美肉と百合理解のために女装してみたまとめ

おばんです、人生初パーマをかけたら大学生デビューと言われてしまった田中です。

先日同僚の助けを得て女装してみました。そのあたりのまとめをします。ちなみにこちら生成物です。

ulike snow
f:id:ktanaka117:20190304223957j:plain:w300 f:id:ktanaka117:20190304224021j:plain:w300

なぜ女装を?

  • バ美肉するにあたって、女性をわかりたかった
  • 百合理解のために、女性をわかりたかった

女性になりたいとか日頃から女装したいというわけではなくて、ちょっとしたところでも理解していきたい、「らしさ」とはなにかを求めて女装しました。

たぶん女の子の絵を描くときとか、バ美肉のタイミングで経験が活きてくれる...ハズ。

女装にあたってやったこと

  • スカートを履いた
  • 何着か服を着替えた
  • 一部毛の処理
  • タイツを履いた
  • メイク(やってもらった)
  • 内股の意識
  • 外に出て歩いた(新宿二丁目あたり)
  • 外でご飯を食べた
  • お酒を飲んだ
  • 同じく女装男子と手を繋いだ
  • 同じく女装男子とハグをした
  • ヒールを履いた
  • 自撮り
  • 喋るときは裏声

(ちなみに女装は初めてではないけど、自分から取り組みに行ったのは初)

気づいたこと

  • ウィッグ被って鏡をみたら母親がいた(めちゃくちゃ似ていた)
  • 毛の処理は死ぬほど大変だし時間がかかる...
  • 可愛い服を探して着るのは楽しい
  • ご飯を食べるのが大変(髪がかかる)
  • 男性が内股をするには筋肉が必要(?)
  • メイクは時間がかかる
  • メイクはめちゃくちゃ楽しい
    • お絵かきみたいな感じ
    • 肌の色合いとかで人によって施す処置がだいぶ変わる
    • メイク用品可愛いし、いい匂いのものがあってよい
    • メイクで気持ちが変わるというのがちょっとわかった
  • タイツ履くの大変
  • タイツは下にずれてくる
  • タイツは結構あったかい(80デニール)
  • タイツはトイレの時ちょっと大変
  • ヒールで歩くのは結構大丈夫だった
  • そういえば最近人と触れ合ってなかった
    • この事実がヤベーってなった
    • 男性に対して特に感情は抱かなかった
  • やはり骨格的に可愛くなりきるには限界がある
  • 自撮りアプリすげーぞ!!!
    • 自撮り楽しい、盛れるかどうかは重要
  • 長めのスカートはあんまりチラリとか意識しなくても大丈夫だった
  • 短めのスカートは椅子に座った時に、わりと直にふとももとかお尻くらいが椅子につく状態になることを知った(タイツ履いてたけど)
  • 世の中にはめちゃくちゃ美人で、言われないと気付かない女装の男性がいる
  • 裏声で夜通し喋り続けるのは思ったより体力を使った
  • 髪が長いと目線が隠れるのでは人と目を合わせなくて済むのがラクだった

感想

百合とかバ美肉に強く繋がるかというとわからないけど、いつか役に立ちそうだなって思った(こなみ

  • 多分絵を描く時の構造理解とかに繋がる
  • 感覚的な部分は男性だったので、心理的な動きはなかった
  • 「自分は男だな」という自覚が強くなった
  • メイクとかもろもろ「女性はこんなに大変なのか...」って気持ちになったので、周りの女性を急かしたりはやめようと思った(もともとそんな急かさないけど)
  • 「男ラクやな!」ってなった
  • 喉の訓練になった
  • 眉を整えるとか部分的なメイクは男性のときにしてもよいかもと思った。非常に印象が変わる

僕を苦しめる3つの呪い

おばんです、会社イベントのLTに向けてボイチェンまわりの話をまとめている、限界バ美肉おじさんの田中です。

今回は釣りタイトルですが僕が長年苦しめられている呪いについて、整理したくてアウトプットします。 もし共感した人や乗り越えた人はコメント欲しいです。

この記事で言う「呪い」=気持ちや動きを縛る「思い込み」です。 この呪いのせいでHPとMPが削れていっているのが最近(定期的な)の悩み。

だいたいこんな話をします。

  • 3つの呪い
    • コンテンツや価値を作り続けなければ生きている意味が無いという呪い
    • インプットしたらアウトプットしなければならないという呪い
    • 体験したことのない人の言葉に説得力は無い、と思われるのではないかという呪い
  • つらみ
  • こうありたい

3つの呪い

コンテンツや価値を作り続けなければ生きている意味が無いという呪い

なにかを残し続けて動き続けないと、凄まじい焦りにみまわれます。 休んでると「やばい、休んでる場合じゃない」ってすごく不安になります。 特に自分は容量が良い人間ではない自覚があって、ちょっとサボると落ちるとこまで落ち切ってしまいそうで不安になります。

まわりはすげー進捗してるのにな............ってなる。「動き続けないと」と思うとじわじわ手を広げすぎていって体力が削れる。

インプットしたらアウトプットしなければならないという呪い

体験したこと、身につけかけているスキルは、ブログに、書かなければ、すぐに抜け落ちていく...。 あるいは新しく触れた技術はすぐに繰り返し使って、物としてアウトプットしなければすぐ忘れてしまう...。

本当に記憶することが苦手で、すぐアウトプットしなかったことはその後もう無くなるも同然。 コンテンツを出し続けなければという前の話とあいまって、なにかアウトプットしなかったときのストレスがマッハ。 書けるときに書こうと、できるだけ覚えておこうとし続けると脳のメモリ領域の圧迫されて、色々なパフォーマンスが落ちる。

体験したことのない人の言葉に説得力は無い、と思われるのではないかという呪い

なにか物事について人に聞くとき、体験したことのない人の話と体験したことのある人だったら、体験したことのある人の方が説得力ありますよね。 となると、なにか人に語るとき経験した上で語った方が良いと思っていて、その幅を広げていきたい。

裏を返すと「経験もせずに言えることがあるのか...?」という気持ちになってしまって、適当なことを言いたくないので、色々なことに手を出しがちになってくる。 体力が削れていく。

つらみ

この記事を書くに思い至った原因でもあるのがこの記事なんですが、

anond.hatelabo.jp

コンテンツや価値を作り続けなければ生きている意味が無いという呪い の原因が特にこのダイアリーそのままな気がしています。

ダメな部分を補うとか、自立するためになんらかの成果を無限に追い求めてしまいがちだなって。 「ブログを書かなければ...」「コードを書かなければ...」「絵を描かなければ...」とかそういう感じに。

先日自分はこれくらい評価されるだろうと思っていたことが、他者から思ったより評価されなかったことがあって、この自分を支える柱が瓦解しました。 そうすると、成果主義一本でなんとか自立していた自分は立っていられなくなる。 というつらみがここ最近続いているるるる。

3つの呪い、つよつよを目指し続けるために自分自身で課してる部分もあると思うんだけど、それもなかなかつらいとあるとき思ってしまった。

こうありたい

クソ雑だけどこういう世界とか。

まあね、成果とかそういうものじゃなくて、ダメなところとか認めてもらって自己肯定感の回復があれば、満たされるのかもしれないんだけどね。。。

怪文書になってしまった、やっぱ疲れてそう...!

早起きに成功したので「iOSアプリ設計パターン入門」勉強会 第3回に参加してきました! #uzumaki_swift

おばんです、pixiv TECH SALONでは男性のための女の子声について喋る田中です。

UZUMAKIさんが開催している「iOSアプリ設計パターン入門」勉強会に参加してきたのでそのレポートをします!

uzumaki-swift.connpass.com

「iOSアプリ設計パターン入門」勉強会 by UZUMAKI とは

朝読書会です。始業開始前くらいの時間、8時開始で行われています。

この会は読書会形式で行われており、『iOSアプリ設計パターン入門』の各章を読み合わせる進行です。 詠み合わせて、気になるところで質問したり議論する会となっています。

f:id:ktanaka117:20190217175804j:plain

第3回のテーマは「第7章 MVVM」

この章は私が書きました。\ドヤアァァァ/

著者がいると盛り上がるかな、と思い参加した節もあります! 前回はMVPの章でここも私が書いたのですが、お布団くんが話してくれなくて参加に失敗していました。 MVVMの回では満を持して参加できました。

RxSwiftを用いないMVVM実装

書籍の中ではRxSwiftを用いないMVVMの実装方法(Notification Centerでの実装)についても触れています。 あえてその部分を書いた理由は以下の二つがあります。

標準フレームワークでガチめな実装をするとこんな風になるよというのは、共著者のmarty-suzukiさんが以下のQiitaでまとめてくださってます。

qiita.com

責務の境界について

  1. Modelのロジック(ドメインロジック)とViewModelのロジック(プレゼンテーションロジック)のきりわけはどこで行われる?

これ結構難しいんですが、勉強会の中では 表示のためのStringと計算のためのDouble などの話がされていました。

僕の解釈としては以下のツイートに貼ってあるスライドの通りです。

クソタイポ問題

紙版の説明の中に nvalidate(idText:passwordText:) という表記がありますが、 n が不要です。大変失礼いたしました。

電子版では直ってます、許してください。

Rxを使ったときにUITableViewCellのデータバインディングどうする問題

僕もこれは得意な話ではないのですが、 cellForRowAtIndexPath の中でsubscribeすると購読管理に無理があるので、delegateと併用してやってますよという話が挙がりました。

Resultの.success(())ってなんで通るの?

型としての()がVoidのtypealiasで、

()が空のtupleと同義。空のtupleはつまりVoidだから良いっぽい?

参加してみての感想

実際に読んでくれた人と交流できるのは、著者としてとても良い経験でした。 「あー、その部分の解釈は悩みますよねー」とか、読んでる時のリズムの悪さみたいなのが勉強になりました。今後の本書きの参考にさせていただきます。

さっきエモいことを呟いたんですけど、この本を読んで得たものをまたアウトプットして欲しいですし、議論の叩きにしてもらえたら嬉しいです。質問もお気軽に!

今後も「会いに行ける著者」なので、イベントでは気軽に声かけてください〜。ノシ

遊舎工房に遊びに行ってその場で自作キーボードデビューした!

おばんです、はじめての自作キーボードはLily58になりました、田中です。

自作キーボードはずっと気になってはいたものの、一歩を踏み出せなかったのですが、今回遊舎工房に遊びに行ったのをきっかけにとうとうデビューしました!

遊舎工房は自作キーボードに関するパーツやグッズを取り扱うお店です。多くのキーボード愛好家に親しまれていて、これまではオンラインのみで活動していましたが、実店舗化するということで遊びに行ってきました。今日はその辺りをまとめます。

yushakobo.jp

遊舎工房の様子

さっそくよそにまとめがありました。詳しいことはこっち見た方が良さそう。

www.itmedia.co.jp

特に目玉なのは店舗内にある制作スペース。1月中は利用料無料で、道具や消耗品(はんだなど)の貸し出しを行なっているそうです。(それ以降は2時間で500円の利用料がかかるようです。どちらにせよ破格)

ということで、さっそく必要なパーツを店内で買い集めて作り始めました。

作ったもの: Lily58

はいこれドーン!

f:id:ktanaka117:20190113215551j:plain

f:id:ktanaka117:20190113215634j:plain

かっこよかろう?(左上の赤いのはキーキャップガチャで当てたやつ)

作るのに必要だったもの

f:id:ktanaka117:20190113215912j:plain

全部遊舎工房の店舗で揃いました。

  • パーツ
  • 道具(無料貸し出し)
    • はんだ
    • はんだごて
    • はんだ
    • 吸い取り線
    • ラジオペンチ
    • ニッパー
    • 電動はんだ吸い器(オプション)

あ、あと制作時間は約6時間弱でした。慣れたら4時間くらいにはなりそう。

なぜLily58を選んだか

  • もともとErgodox EZを使っていて、近い配列だったので抵抗が少なかった
  • 会社用と自宅用とで2台のキーボードが欲しかった
  • 外で使いたいとき用に、持ち運びに適したものがほしかった(Ergodox EZ大きすぎ問題、Macbookのペチペチキーボードの体験悪すぎ問題)
  • Ergodox EZはキーが多すぎ問題
  • 4行配列だとキーが足りないし、Lower/Raiseを使いこなせなかった
  • 親指部分が斜めに存在するのは偉大
  • 百合好きだから

上の選定理由に当てはまる自作キーボード基盤が出回っていなくて足踏みしていた部分も結構あって、全部クリアされていたので選びました。

使用感の感想

このブログは作ったキーボードで書いています。 Markdownで書いているのですが、完成から練習なしで全然書けているくらい手に馴染みます。控えめに言って最の高。

これはLily58の話ではないですが、キースイッチはGateron Silentの赤軸を選びました。 こちらの選択も正解だったようで、気持ちよく打鍵できています。キースイッチは重いものが好きで、赤軸は比較的軽い部類に入ると思っていて避けていたのですが、特に気になりません。

制作に関する感想

はんだ付け楽しい!
君だけのオリジナルのキー配列を手に入れろ!
溶ける基盤の匂い!最高だぜ!(良い子はマネしないでね)

f:id:ktanaka117:20190113215529j:plain

基盤が1万円くらいするので、僕のお財布事情としては気軽に挑戦できるものではなかったですが、壊すことなく成功して良かったです。 ずっとやりたいと思ってたけど、ふんぎりつかなかったところで、ようやく機会が重なって自作キーボードデビューできてよかった〜。

制作スペースは自作キーボード慣れした方々が楽しそうに話をしていて、聞いてるこちらも楽しくなりましたし、勉強になりました。「そのキー配列綺麗ですね」とか気軽に話ができてよかったです。こういう環境尊い。

作ってたらたまたまLily58の基盤を設計した方も現れて、制作を助けてくださりました。ありがとうございます! 「なんでLily58って名前にしたんですか?」と聞いたら「他のキーボードが花由来の名前にしていたからで、百合オタクだったわけではないです」と裏話も聞けました。どうも百合オタクです。

失敗

f:id:ktanaka117:20190113224003j:plain
必死こいてはんだはがすマン

制作の途中でいくつか失敗もしました。

  • 手順を間違えてアクリル板を挟まずはんだごてをしつくしてしまった。でも制作スペースに電動はんだ吸い取り器という「文明」が存在し、事なきを得ました。本当によかった。
  • ダイオードの取り付けを表裏間違えた。設計的に表裏間違えてもちょっとした見た目の違いしかないので大丈夫でした。神設計では?
  • 今打っていて、どうにも3と0のキーが反応しない。多分はんだ付け周り...。// TODO: あとで直す。

作るときに気づいたこと

制作の過程で気づいたよかったことと不安を書いていきます🙇‍♂️

  • よかったこと
    • ダイオードの向きの説明がわかりやすかった
    • マスキングテープで止めるテクニックの紹介が良かった(やらなかったけど)
    • 困った場合の問い合わせ先discordが書いてあって最高
  • 不安
    • アクリル板を挟む順序がどこかわからなかった
    • 各工程の前後で写真があると、どうなれば正解なのかわかりやすかったかも(向きとか表裏とか)
    • Lily58の中でもモデルが違うのか、微妙に写真と実物に違う部分があって不安になった(Pro Microまわりの基盤の図など)
    • (全体的にもっと写真多めだと不安が減りそう👀)

さいごに

最初がLily58で良かったと思ってます。Ergodox EZを使っている人が自作キーボードを始めたいとなったら、これが最高なんじゃないでしょうか!

いろんなハードルを一気にクリアして、沼に垂直降下しました。

  • キーボード基盤を買うハードル
  • キースイッチを選ぶハードル
  • キーキャップを選ぶハードル
  • 電子工作のハードル

一回できてしまったので、もう何も怖くない。もうやりたい放題です。買えちゃいます。作れちゃいます。やばいです。

YATTEIKI😇

転職して7ヶ月が経とうとしているので振り返る

こんぬづは、休みの日は100%可処分時間であるという真理に気付いてしまった田中です。

今年の6月にクラスメソッド株式会社からピクシブ株式会社に転職をしました。

dev.classmethod.jp

tanakalivesinsendai.hatenablog.com

試用期間が終わったあたりで「転職してどうよ?」みたいなブログをまとめようと思っていたのですが、忙しい時期が続いてしまって今になっています。

割と整理されない感じで書いていくけど、だいたいこんなことをまとめていきます。

  • 今どんな気持ち?
  • 前職と比較するとどう変わった?
  • はじめての転職はどう?
  • 会社の雰囲気はどう?
  • やったこと
  • 悩みとかは?
  • これからなにやりたい?
  • さいごに

今どんな気持ち?

f:id:ktanaka117:20181230115401j:plain

楽しい。

そもそもの転職の動機が「to Cのサービスをやってみたかった」「身近なものを開発したかった」だったので、バッチリ叶えられています。

ものごとの優先度はひたすらに変わり続けているけれど、以前からやっている「ブログを書く」「イベントで登壇する」という活動はペースを落としながらも続けられているのでほっとしています。

あと、さらに百合にのめりこめました。

入社直後はSlackに「業務に直接関係ないチャンネル(いわゆる雑談など)は作成しないルール」が存在していたのですが、ルールが変わって雑談もできるようになりました。ということで百合チャンネルを速攻作ってもらって入りました。百合チャンネル、お待ちしています。

inside.pixiv.blog

前職と比較するとどう変わった?

受託開発とサービス開発

前職は受託開発をやっていて、割と単発のアプリ開発のお仕事が多かった。今はサービス開発に従事していて、続きものをメンテして機能開発してとコネコネしています。

継続していてユーザーを抱えているサービスの開発はめちゃくちゃ刺激的です。継続的デリバリーをするし、一つの場所であらゆるものが古くなっていきます。 それにどう対処するかとか、適切に新しいものを取り入れていくバランス感覚はどうかとか。自分が持つエンジニア像としてはこういうことを考えるべきだし、考えてると強く楽しく生きていけるような気がしていて良い。

仕事のスタイルの違い、良し悪しが結構あると感じていて、受託だとこういうスタイルで働きやすくて、サービスだとこういう仕事に注力しやすいみたいな。 このあたりはうまく言語化できないので、もうちょっとじっくりコトコト煮込んだらまとめます。🍛

趣味にお金を落としまくるようになった💸

周りにサブカルとか趣味に投資しまくっている人が多いので自然と自分もそうなっていっています。

漫画とか同人とかガジェットとか、お金回しているとフレッシュでいられる気がしてます。 応援したい作家にお金を落とすのは非常に嬉しいです。

あとはお金の支出に対して、使える時間とのバランス考えなきゃなって思ってるるるる。

イラストを描くようになった🎨

イラストを投稿するサービスを運営する会社なので、「ドメイン理解!」と思って絵を描くようになりました。というかもともと好きだったからやり始めました。

まわりに実際に絵を描いてる人が多くて、かつ理解ある人々が多いので、自分を描く雰囲気に半強制的に置いておけるのが続ける動力になっています。

はじめての転職はどう?

忙しい時期と転職のタイミングをぶつけてはいけない

それはそう。

転職したてはカルチャーに馴染むために社員の人と積極的に絡むべきだし、絡みたいと思っている人間なのですが、忙しさからか、不幸にも黒塗りの高級車に追突してしまう。後輩をかばいすべての責任を負った三浦に対し、車の主、暴力団員谷岡に言い渡された示談の条件とは…

主に本書きと、社外イベントを詰め込んでいたために、今年は忙しかった...。 弊社は業務時間後に各自が勝手に集まってさまざまな催しがあるのだけれど、そういうのが放つ放課後感とか部活感に浸っていくべきだったという反省。

忙しさが落ち着いたのが9, 10月ごろで、「仕事に関係しないところでもようやく最近馴染めてきたなぁ...!」と感じてホッとしてます。扱っている領域が領域なだけに、趣味で重なる人と集まれると、仕事でも楽しさや過ごしやすさが増します。

前職の経験が活きている

転職してみて、前職で学んだこととか取り組んできたこと、関わりのあった人から聞いたいくつかの言葉が指針になったりしていることがわかりました。

  • 前職の社長が言っていたアレコレとか
  • 「赤魔道士になるよりも、専門的に掘り進んでいった方が良いかもよ」とか
  • 以前はこういう働き方で動けていたし、もっと自由に考えて動いても良いのかもなぁとか
  • 「あー、そういえばあの人に出世するって言っちゃったなぁ。そういう動きも必要かもなぁ」とか

これらを意識して「こうしよう」で動いているわけではなくて、自分がこういう考えに合っているから、ふとしたときに思い出して、比較対象としての指針になっていることを思い出す感じになっている、のが良いことだなと思いました。

持ってて良かった!社外の友達、コミュニティ👬👫

色々悩みがあったり、疲れ切ってしまったとき無限に精神の支えになってくれた。

  • 転職してこれが厳しい→「わかるー」とか
  • 「今日は頑張ったぞ!」→「よっしゃ肉食いに行こうぜ!」とか
  • 「疲れた...」→「うるせぇ!いいからこの尊い漫画・アニメ早く見て!!!」→「うん!尊い!!!!!🤤」とか

あと初めて遭遇するサービス開発の問題とか判断が相談できる相手が社外に居ると良い点として、具体的な説明は出来ないので、問題を一般化して整理していく過程を踏む必要があることがあると思った。 一般化して話をするうちに、自分の中で問題を整理して言語化できるので、勝手に解決に向かう。

会社の雰囲気はどう?

わかり手🙌だらけ

「今期アニメのこのシーンが尊すぎて...」とか。 「あの漫画のこのキャラのセリフがめちゃくちゃ好きで人生の支えになっていて...」とか。

アニメ漫画に限らないですが、あらゆるサブカルが前説ナシで通じてしまう。

沼だらけ

f:id:ktanaka117:20181230115744j:plain

こちらを歩けば沼にハマり、あちらを歩けばまた別の沼にハマる。特に金曜の定時後に同好の人々が集まって活動しだすのでヤバい。

以下は実際に発したことのある言葉なんですが、

  • 「えっ!あのゲームをやってるんですか!今度一緒にやりましょうよ言葉です。!」
  • 「えっ!お絵かきをする会があるんですか!iPad買ったので参加します!」
  • 「えっ!Magic: The Gatheringやってるじゃないですか!昔やってたので対戦しましょう!」
  • 「えっ!百合がお好きなんですか!これとこれが好きです!えっ、読んだことある!?良いですよね!!!!!」
  • etc...

同じタイミングで複数の催しが開催されているときもあるので、早く分身の術を身につけなければいけないと思ってます。

技術のレベルが高い💻

このサービスの開発にとって今必要な技術はどれかを考えるのに余念がないし、続いていくサービスをみんな受け持っているので、継続していくことも考慮にいれてどうかの判断をしていってる。

一人一人が専門性の高いスキルを持って取り組んでいる。トガった人が毎日のようにいろんな技術交換をするし、毎週の社内勉強会ではフロントとかバックエンドとかインフラとか問わずに発表しまくってる。「わからないということがわかった」「なぜそれが人にできるんだ???」みたいな発表がたくさんあって面白いです。

サービス開発のレベルが高い

限られたリソースの中でなにを優先して、将来的にはどうするか、手持ちでどうやりくりするか、今この判断はどうすべきか、サービスにとってどう?ユーザーにとってどう?開発者にとってどう?とか様々なもののバランス感覚とかが面白いです。 もちろん受託開発とか問わずこのあたりは気にするのだけど、続いていくプロジェクトにおいてどう舵きりするかみんな考えていてつよい。 自分にも求められることなので、できるところからやっていっている感じ。

やったこと

入社以来ずっとBOOTHというアプリのiOSエンジニアを担当しています。

ここで書いていくやったことは、「自分一人で全部やったぜ!ドヤァ!」ことではありません。 レビューやタスク整理、ここに挙げる開発を自分がやっている間に、他のメンバーが一緒に取り組んでくれたからやれたことでした。 このあたりも、サービス開発のバランスを感じることのできた良い体験でした。

設計改善👨‍🔧

今のところ、BOOTH iOSのアーキテクチャパターンはVIPERに寄せるようにしていっています。 リリースから一年以上が経過したアプリで規模も大きくなっているため、なるべく細かく責務を分割したくてそうしています。

ただアプリの中のアーキテクチャパターンにも歴史があって、MVPっぽい部分とかMVVMっぽい部分とかが一緒に存在していたりします。 幸いなことに、自分と、もう一人一緒に開発をしているパートナーの方は、どのアーキテクチャパターンも共通の理解をしているので、大きな問題にはなっていません。 適宜必要になったタイミングでVIPERに寄せた書き方に直したりしています。

いろんなアーキテクチャパターンが一つのプロジェクトに混在している中で整理をつけていけるので、ただひたすらパターン勉強してきてよかったあぁぁぁ!仕事に活かせてるうぅぅぅ!って感じてます。勉強してきたことは価値があったんだと自信になりました。

Singleton撲滅👨‍🔧

↑ではアーキテクチャパターンの設計の話に触れてきましたが、データの持ち方とか同期方法の面の設計でも、見つけ次第メンテナンスしやすい作りに直していってます。

共有範囲の狭いデータをSingletonで管理してしまっていた実装箇所がありました。 Singletonは初期の開発において「ひとまずデータを管理しておける」という名目で使う場合もあるようですが、後からの機能実装でどこでデータが変更されるのか把握しにくい、アプリケーション内のどこからでもデータが取れる性質上、データの誤用を招く可能性があったので撲滅していきました。

フロー同期による限定的な箇所でのデータ同期と、VIPERの各役割に沿った責務ごとのデータ保持によって改善しました。

自動テストの追加👨‍✈️

プロジェクトに参入したばかりの頃は自動テストが全く無い状態(手動テストのみの状態)でした。 ちょうど自分が自動テストに対する関心が高かったこともあったので積極的に取り組んでみました。もちろん「やりたいから」だけじゃなくて、必要だったので取り組みました。

入れやすいところ、これから触れていくところ、機能的に重要度の高いところから、設計改善とともに自動テストを追加していっています。

無料ダウンロード商品をダウンロードできるようにした👨‍💻

もともとiOSの機能開発はAndroidより少し遅れていました。これもAndroidではできていたけど、iOSでできていなかった機能のひとつです。

自分も欲しい機能だったので、対応できてよかったです。

有料ダウンロード商品を買えるようにした👨‍💻

入社してから一番インパクトのある機能実装です。ユーザーとしての自分もめっちゃくちゃに欲しかった機能なので、担当できて良かったです。

社内でも、業界でも知見がなかったところで理論立てて実装・説明できた自信のある部分です。カンファレンスなどでも記事が参照されたり、良い反響がもらえたのが嬉しかったです。

inside.pixiv.blog

API環境をランタイムで切り替えられるようにした👨‍💻

これ以前、デバッグやテストをするには毎回環境ごとのビルドをしなければいけなかったのだけれど、デバッグ用ビルドの中で複数の環境をランタイムでそのまま切り替えられるようにしたので、捗りました。

事前承認決済対応👨‍💻

一番最初の決済でユーザーから認可を得ることで、それ以降のPayPalやクレジットカードでの支払いを簡略化する機能です。 もともとの支払いフローは毎度毎度Webを経由する必要があって、支払い完了までのステップ数が多かったところで、ステップ数を減らしてよりスムーズに支払いが行えるようにしました。

決済部分の実装は非常にセンシティブなため、PlantUMLでフローチャートやシーケンス図を書いて仕様の認識を合わせたり、それ以降もどんな仕様か振り返りやすくしましたり、工夫しました。

dev.classmethod.jp

iOS 9のサポート終了📱

機能開発に対してコストを集中するために、対応OSをアップデートする必要がありました。厳かに終了しました。

購入完了アニメーションを追加した👨‍💻

つい最近の実装です。これはドヤれる!

Lottieを使って購入完了のタイミングでアニメーションを追加して、購入体験をハレやかに演出してみました。

inside.pixiv.blog

実装時は「自分はUI実装が苦手な人間なんだな...ロジックが書きたい...」とひたすら感じていましたが、いざ出来ると、「出来上がって良かったー!最高のアニメーションだ!」という気持ちが湧き上がって嬉しかった。

UI実装のつらいところは、アプリを実行しないと確認ができないところでした。 これを解決するためにPlayground駆動開発の導入を検討しましたが、Presentation Layerのみでモデル分割ができていない現状でワークしなかったので、涙を飲みながらぽちぽち頑張りました。

Playground駆動開発を前提にした設計・責務分良割というアイデアは、かなり筋が良さそうに感じたので機会があれば取り入れてみたいです。

medium.com

悩みとかは?🤔

負債との付き合い方

これは以前悩んでいたことで、今は割と解消されています。

長く続くサービスで規模の大きいものを体験するのは、割と初めてに近いものでした。(経験自体はあるけど、この長いスパンで携わることはこれまでなかった)

既存の設計にひきずられる部分が多分にあったり、かつては良かったが今では正しくない部分、部分的に機能していないコードが存在していたり、「これがいわゆる"負債"というものか!」を実体験しました。

「各所で絡み合うコードをどう改善しようか...」「設計を直すためには自動テストが欲しくて、でも自動テストを入れるには設計を直さなきゃいけなくて...」というよく聞く悩みを抱えました。 社内外のエンジニアに色々相談して、実コードと対面することを数ヶ月続けた結果、「これはすぐに解決できる問題ではない。必要なところから徐々に解決させていく問題で、思い悩む必要はない。焦らずやれる範囲でYATTEIKI」というスタンスが良さそうだと気付けました。

この気付きは今後もエンジニアをやっていく上で結構大事なことっぽいと今は思ってます。

体力落ちた

流れる情報の速度についていくとか、周りで起きていることに「対応したいからする」って動きをするためには体力が必要。 でも今年は体力を前借りしてその分最大HP値を削るような無理な動きをしまくってしまったので、改善していきたい。

可処分時間欲しい!

趣味や欲望が強くなってやりたいことが増えた。 複数ゲームを掛け持ちたいし、絵を描いたり、本書いたり、etc... 毎日続けることで力をつけられることもあるし、仕事の範囲外でしたい挑戦ことが以前よりも増えた。

体力つけたら動ける時間が増えるというのと、別方面の解決を合わせて考えたい。

これからなにやりたい?

設計の話を展開したい👨‍🔧

設計本著者だし。書いただけで終わりでなくて、悩んでいる人がいれば答えられるようにしたり、一緒に悩んだり、身近で活かす必要があると思ってます。これは社内外問わず。

著者とは言ったけど、設計で大事なのは知識だけじゃなくて、共通理解や共通認識だったりするので、そもそも話をする場を作ることが大切そうと思ったりしてます。ぶっちゃけ自分の知識もたかがしれてますしおすし。

あと負債との付き合い方でわかったけど、設計を学ぶと環境に適応する力(パターンで認識する力)がつきそうだと思ったので、サービス開発する人にはさらに大事っぽそうだと感じたから。 自分はいくつかのプロジェクトを通して学んできたけど、もっと効率よく身につける方法があったと思っています。たぶん誰かに相談しながらやっていくことが近道なので、受け口になりたい。自分の勉強にもなるし。

もっとまわりのためなにか出来るマンになりたい

今年は割と余裕のない過ごし方をしてきて、身の回りのことを解決するので精一杯でした。 プロジェクトや会社の中で、自分が最低限やらないといけない範囲外でもなにか貢献できるところで貢献していきたい。 そのための仕事のやりくりを慣らすにはもうちょい時間はかかりそうだけど、なんとかやりたい。

さいごに

ワーッとかいたワー!

転職しても普通に生きていける。自分は転職できる人間なんだ。という自信がついた。