「新しいことへの挑戦」を大事にしています | はてなで働く nakaoka3 にアンケート [#18]

はてなで働くエンジニアにアンケートシリーズ第18回は、マンガメディア開発チームのWebアプリケーションエンジニア、id:nakaoka3に話を聞きました。

id:nakaoka3のデスク

京都で働くのもよさそうだと思って
その時々で一番良いフォーメーションを取る
開発合宿で作った推薦システムを実際のサービスに実装
オープンに文章を書くことが会社のカルチャーとなっている

京都で働くのもよさそうだと思って

── Q. はてなidとその由来を教えてください

本…

RenovateとGitHub Actionsを導入し「なくてはならない存在」に | はてなで働く ikesyo にアンケート [#17]

はてなで働くエンジニアにアンケートシリーズ第17回は、マンガアプリチームのiOS/Androidアプリエンジニア、id:ikesyoに話を聞きました。

本名から読みやすさ重視ではてなid化

── Q. はてなidとその由来を教えてください

本名が池田 翔(いけだ しょう)で、呼びやすく「だ」だけを抜いた「いけしょう」をあだ名化・id化しました。

ローマ字表記では「しょう」はShoになるので、本来ならikeshoにするところですが、hの字面がなんとなくしっくりこなかったのでそこだけyに変更して、ikesyoになりました。hだとのっぺりした印象なのが、yだと少しシュッとした感じになるので気に入っています。日本語で呼ぶ時は「いけしょー」と長音符で呼ばれることを想定しています。

WWDCC17に参加した時のid:ikesyo
WWDCC17に参加した時のid:ikesyo

フリーランス時代に勉強会で声を掛けられたのが入社のきっかけ

── Q. いつどんなきっかけで入社されましたか?

はてなには2016年1月に中途採用で入社しました。なので、もうすぐ入社から5年半になりますね。

入社以前は新卒採用から2社を経験した後に、4年半ほどフリーランスのiOSアプリ開発者をしていました。そのフリーランス時代の2014年中頃から「Cocoa勉強会関西」や「ReactiveCocoa勉強会関西」、「関西モバイルアプリ研究会」などの勉強会に参加したり発表したりするようになりました。それらのコミュニティに参加する中で、はてな社員のid:cockscombさんやid:yashigani_wさんらと交流するようになり、声を掛けてもらったのが入社のきっかけです。

はてなには以前から興味がありましたし、京都でiOSアプリの開発ができるということ、勉強会で楽しく有意義な議論ができるこの人たちと一緒に働けるのはきっと楽しいだろうと思い、採用選考を受けることを決め、無事入社に至りました。

iOSもAndroidも担当するが、専門性としては「iOSアプリ」「Swiftが得意な人」

── Q. 現在の仕事を教えてください

マンガアプリチームでスマートフォンアプリケーションエンジニアをしています。業務ではiOSアプリとAndroidアプリのどちらの開発も担当することがありますが、個人の専門性としては「iOSアプリ」「Swiftが得意な人」になります。

直近で担当しているアプリでは、SwiftUIを本格採用した開発に取り組んでいるところです。別タスクを担当しているチームメンバーのコードレビューや、シニアエンジニアとしてメンティーとの1on1などもしています。

自宅のデスク。ハーマンミラーのモニターアームとvertebra03という椅子がお気に入りです
自宅のデスク。ハーマンミラーのモニターアームとvertebra03という椅子がお気に入りです

チーム異動経験を生かして「架け橋的な役割」を意識

── Q. チーム内の立ち位置を教えてください

2018年11月のチーム発足からテックリードを任せてもらっていましたが、2020年8月にid:kouki_danさんへテックリードを交代しました。いろいろなメンバーにテックリード経験を積んでもらいたいのと、2020年8月〜2021年1月までレンタル移籍のような形で一時的に別チームに異動することになったためです。

2021年2月にマンガアプリチームに復帰してからは、iOSアプリもAndroidアプリもどちらもそつなくこなせる1エンジニアとして、テックリードを支えながらチーム全体の様子を気に掛けるようにしています。

シニアエンジニアとしての立場やこれまでのチーム異動経験から、他のチームの様子や技術的なトピックを紹介したり輸入したりと、架け橋的な役割も意識していますね。

── Q. 1日の仕事の流れを教えてください

午前中はミーティングが入ることが少ないので、コードレビューをしたり、前日のタスクの続きをしたりしながらエンジンを掛けていきます。

はてなでは昼休みの標準的な時間は13時〜14時なんですが、コロナ禍で自宅勤務をするようになってからは、お昼ご飯は家族とタイミングを合わせて12時過ぎには食べるようにしています。13時過ぎからチームの昼会が始まる14時半までの1時間ちょっとが、割り込みの少ない集中できる時間になっています。

昼会を含めて、なるべくお昼過ぎから夕方にミーティングを固めるようにしているので、その時間帯はコードを書くことよりも会話をしたり、調査や検討をしたりすることが多いでしょうか。そこから終業までの残りの時間はSlackの様子を伺いつつタスクを進めて1日が終わる、という感じです。

Renovate、GitHub Actionsの導入を推進し、チームに根付いてきた

── Q. 最近うまくいったことは何ですか?

うまくいったというか、うれしかった話としては、先述の一時的なチーム異動の際に開発に参加していた新サービスの『マンガノ』が無事にリリースを迎えたことです。この時はこれまでのスマートフォンアプリ開発から離れて、半年間だけWebアプリケーションの開発にチャレンジさせてもらいました。

実際のサービスリリースを迎える前に異動期間が終了してしまい、リリースまで見届けることができなかったのが心残りではあったんですが、リリース当日にはGoogle Meetでビデオ会議をしながらのリリース作業に少し顔を出させてもらい、みんなでワイワイしながら一体感を感じられたのが良かったですね。

また、最近というには少し期間が広いのですが、ここ1~2年でRenovateという依存性アップデートの自動化ツールや、GitHubが提供するCI/CD環境であるGitHub Actionsの導入を推進し、それが社内の各チームに根付いてきました。

── Q. RenovateとGitHub Actionsの話について教えてください

まずRenovateについてです。Renovateによって、使用している依存性の更新の検知・アップデートするプルリクエストの作成・プルリクエストへの変更内容の記載(CHANGELOGやリリースノートの転記)といった作業が自動化できるようになりました。

もちろん動作確認や、ビルド・テストが通らなくなった時の修正などは必要なので、手間が0になるわけではありませんし、社内で使用している言語ではPerlなど未対応のものもあります。ですがワークフロー全体としては作業がかなり簡略化され、また自動的にアップデートがやってくるようになったことで意識も高まり、チームやプロジェクトによっては滞りがちだった依存性のアップデート状況が改善されてきています。

同種のツール・サービスにはGitHubに統合されているDependabotもありますが、複数のライブラリ更新を1つのプルリクエストにまとめるグルーピング機能や、柔軟な設定項目、設定ファイルの共通化・共有などが便利なので、Renovateをメインで使用しています。設定ファイルの共有については はてなで使用しているRenovateの設定プリセットを公開しました – Hatena Developer Blog もぜひご覧ください。

次はGitHub Actionsです。以前まではリポジトリにGitHub Enterprise Server(GHES)を使っていたこともあり、CI/CDにはJenkinsを使っているチームが多かったのですが、最近はGitHub Enterprise Cloud(GHEC)への移行が進んだこともあって、GitHub Actionsを使うことが増えてきました。むしろGitHub ActionsやRenovateを簡単に使えることがGHECに移行する理由の1つにもなっているのではないでしょうか。

GitHub ActionsはCI/CDに使うだけでなく、例えば古くなったIssueを自動的に閉じたり、プルリクエストの変更内容に応じて自動的にラベルを付けたり、各種ワークフローの自動化にも利用できます。実際に自分のチームでは、サーバーサイドでGraphQL APIのスキーマが更新されたら、その変更をアプリのリポジトリに反映するプルリクエストを作成するというワークフローを定期的に実行するようにしています。

またGitHub EnterpriseのBilling APIを定期的に実行し、その結果をMackerelに投稿してGitHub ActionsやGitHub Packagesの利用状況の推移を確認できるようにするという使い方もしています。このようにMackerelと組み合わせたり、簡易的なcronやタスクランナーとして使うのも面白いと思います。

これらの導入に当たっては、

  • まずは自分のチームで使ってみる
  • 次は同じフロアの隣のチームや自分が過去に所属したチームなどご近所さんに声を掛け、導入役を買って出て事例を増やす
  • #renovate#github-actionsのSlackチャンネルを用意して、有志で情報共有やトラブルシューティングを行う

などのアクションを行い、積極的にサポートするようにしました。採用事例や経験者が増えたことで自発的に導入してくれるケースも増え、今ではどちらもなくてはならない存在になっています。この活動が社内のDX(Developer Experience)の向上に一役買ったのではないかなと思います。

── Q. 最近うまくいっていないことは何ですか?

「うまくいっていない」とは少し違うかもしれませんが、現在担当しているアプリで新しい設計に取り組んでおり、いろいろと試行錯誤しながら進めているところなので、目に見える成果や手応えがまだまだ少ないことでしょうか。「産みの苦しみ」を味わっている最中です。

大切にしているのは、意思決定の過程において納得感を醸成すること

── Q. 普段大切にしていることは何ですか?

プロダクト開発や技術選定に関する意思決定の過程において、できる限りメンバー間の目線を合わせて納得感を醸成すること、でしょうか。

多様なメンバーが集まる中でも、どうしても社歴やチーム歴が長い人、声が大きい人の意見が権威的になってしまうことがあります。逆にミーティングが静かで、参加者からあまり意見が出てこないこともあります。

こういった場で、あえて真逆の意見を出してみたり、脇が甘くてもツッコミ上等で口火を切って発言してみたり、まだしゃべっていない人にボールを渡してみたりすることで、議論を活性化させること・テーブルに材料を集めること・そこから落としどころを探ること、というアクションを取ることが多いです。

自分自身ももちろんですが、チームメンバーにも納得感を持って仕事に取り組んでもらえる環境づくりをしたいですね。

「早く小さく失敗する」ことも意識していきたい

── Q. はてなはどんな会社ですか?

これまでのアンケート記事でも同じような感想が多かったと思いますが、人が善く、誠実である・あろうとしている会社という印象が強いです。各専門職同士で誰が偉いということはなく、お互いにリスペクトし合いながら働ける環境だと感じています。ビジネス的にも「売上・利益が上がるなら手段は選ばない」というのを良しとせず、「三方よし」が大事にされているのではないかと思います。

裏を返すと、正しくあろうとし過ぎることでスピード感が損なわれている面がある気もしています。自分自身も考え込み過ぎて腰が重くなることがあるので、自戒を込めて「早く小さく失敗する」ことも意識していきたいですね。


はてなのスマートフォンアプリ開発は挑戦の連続です。誰にとっても身近なスマートフォンですが、開発環境も利用者にとっての位置付けも日々変容しています。より良いアプリの提供を目指し、今ある技術だけでなく、これから先の技術に積極的な仲間を募集しています。ご連絡をお待ちしております!

iOS、Androidアプリエンジニア職 転職・中途採用 – 採用情報
iOS、Androidアプリエンジニア職の新卒採用 – 採用情報

はてなでは、今の技術・この先の技術に積極的な仲間を募集しています

一緒に働く人に「次も呼んでもらえる」ような振る舞いを大切に | はてなで働く yigarashi にアンケート [#16]

はてなで働くエンジニアにアンケートシリーズ第16回は、はてなブックマークチームのWebアプリケーションエンジニアのid:yigarashiに話を聞きました。

社内のはてなidの分類では「jkondoスタイル」
突然新卒での応募をしたところ、通年採用のフローに
チームのデータ転送基盤の開発を主導+スクラムマスターとしてリーダーの立ち回り
適度にコンテキストスイッチをしながらいろいろな仕事をするのが好き
スクラム運営の強度が大きく向上+Embulkを用いたデー…

新しい技術を追いかけるのが好き | はてなで働く nabe1216 にアンケート [#15]

はてなで働くエンジニアにアンケートシリーズ第15回は、マンガサービスのiOS/Androidアプリエンジニア、id:nabe1216に話を聞きました。

「関モバ」などのイベントではてなの話を聞いた
Androidアプリ開発をメインに、iOSアプリ開発にも関わる
頭を仕事モードに切り替えてからタスクに着手
GraphQL導入で「一歩外の世界へ」
人見知りでなかなか懇親会まで参加できない
ユーザーが直接触れるアプリのデザインや使い心地を大切にする

「データドリブンな意思決定」が浸透しつつある | はてなで働く polamjag にアンケート [#14]

はてなで働くエンジニアにアンケートシリーズ第14回は、はてなブログのWebアプリケーションエンジニア、id:polamjagに話を聞きました。

はてなidの由来は秘密
2016年のインターンからアルバイトを経て入社
チーム全体でデータと触れ合っていけるようにしたい
テックリードには広い視野が必要、だけど……
チーム内で「データドリブンな意思決定」の方向にうまく動けた
「データドリブンな意思決定」の成果を出すにはまだ道半ば
「毛色が違うこと」…

OSSへの貢献をさらに良い形にしたい | はてなで働く itchyny にアンケート [#13]

はてなで働くエンジニアにアンケートシリーズ第13回は、ブックマークチームのWebアプリケーションエンジニア、id:itchynyに話を聞きました。

はてなidはかぶらないように適当に付けた
Haskellが得意な自分ならScalaも書けるだろうと思って
チーム間で協力しながら新しいAPIの仕様を策定
TLとして、チーム横断での依頼の窓口にも
夕方から深夜にかけて頭が冴える
より戦略的にOSSへ貢献する体制作りをしたい
スプリントごとに常に方…

開発合宿でのレコメンドシステム開発をうまく本番導入へ | はてなで働く kouki_dan にアンケート [#12]

はてなで働くエンジニアにアンケートシリーズ第12回は、マンガサービスのiOS/Androidアプリエンジニア、id:kouki_danに話を聞きました。

本名とハンドルネームの組み合わせでユニークなIDに

── Q1. はてなidとその由来を教えてください

id:kouki_dan です。
本名のkoukiとゲームなどで使っていたハンドルネームのdanを組み合わせて付けました。どちらも片方だけではユニークさが足りなかったので、合わせることでどこでもユニークなIDを取得できるようにしました。


2019年7月撮影。京都オフィスでの様子

アンダースコアでつないでしまったため、IDが取得できないサービスがあったり、ドメインが取れなかったりするのが悩みです。_が使えないGitHubではkouki-dan_-も使えないDocker Hubではkoukidanになっています。

入社を決めたのは面接が圧倒的に楽しかったから

── Q2. いつどんなきっかけで入社されましたか?

新卒で入社した会社で4年ほど働いた後、「そろそろ転職をして他の会社を見てみるのもいいかもしれないな」と思って、転職活動を始めました。あまりない機会なので、大手転職サイトから、エンジニアに特化したエージェントまでさまざまな方法を使ってみました。はてなは、エンジニア特化のエージェントの方にご紹介いただきました。

はてなに入社を決めた理由は、面接が圧倒的に楽しかったからです。はてなに限らず、エンジニアの面接は社員の方と技術的な話をできて楽しいことが多いと思うのですが、その中でもはてなの面接は技術的に深く話すことが多く、ディスカッションも楽しくできました。この感じで仕事を進められるなら普段の仕事も楽しく行えると思い、入社を決めました。

iOSアプリのみ→Androidアプリの開発にも携わる

── Q3. 現在の仕事を教えてください

受託開発を担当するグループで主にマンガサービスのスマートフォンアプリを作っています。入社時点ではiOSアプリしか書いたことがありませんでしたが、現在はAndroidアプリの開発にも携わっています。社内では技術の幅を広げていくことが推奨されており、チームのAndroidエンジニアの協力もあって、勉強を始めるところから一人でPRを出せるところまでスムーズに実践できました。

エンジニアと他の職種との橋渡し役

── Q. チーム内の立ち位置を教えてください

マンガアプリチームのテックリードとして働いています。はてなのテックリードの役割は以下の記事でも説明されています。

developer.hatenastaff.com

僕はエンジニアとそれ以外の職種の橋渡し役となり、エンジニアもエンジニア以外の人も快適に働けることを目指しています。チームメンバーとの1on1を通してチームの様子を把握したり、後述するGraphQLなどの新しい技術を試す機会を増やしたりしています。もちろんエンジニアとしてコードを書く時間もあります。

チームでお茶会を開いた時の様子
チームでお茶会を開いた時の様子

デザイナーと共にデザインを学ぶ時間をとる

── Q. 1日の仕事の流れを教えてください

たいてい毎朝10時に仕事を開始します。まずはてなブックマークのテクノロジーカテゴリーの人気エントリーを見て、最近話題になった技術をチェックしています。

午前中は主にコードレビューや実装、ドキュメント整備など一人で行うタスクを進めることが多いです。

お昼ご飯を食べて、昼過ぎにはチームの昼会があります。昼会では30分ほど毎日集まり、コミュニケーションと情報共有を行っています。午後は午前中の続きや、ペアプロ(ペアプログラミング)をすることもよくあります。

定例のミーティングはほぼありませんが、週に1回30分チームのデザイナーとエンジニアで、デザインについて勉強する時間をとっています。Human Interface GuidelinesMaterial Designについて学んだり、最近はOOUIの本『オブジェクト指向UIデザイン』の輪読会をしています。

この先のリモートワークとチームの規模拡大

── Q. 最近うまくいっていないと感じることは何ですか?

最近よく考えていることは、リモートワークでコミュニケーションをどのように取るべきかということです。

現状ではチームメンバーが少人数で、そのメンバーともリモートワーク前から一緒に働いていたので、喫緊の課題というわけではなく、うまくいっていないということもありません。

はてなでは2022年10月まではフレキシブルワークスタイル制度を導入し、その間はリモートワークが行われることになっています。その中でこの先新しいメンバーが増えたり、チームの規模が大きくなっていったりした時に今の状態そのままでうまくワークするかについては自信がなく、考えて準備しておかなければと感じています。

開発合宿でレコメンドシステム開発、検証期間を設けてのGraphQL導入

── Q. 最近うまくいったことは何ですか?

3日間業務を離れてあるテーマに沿った開発を行う開発合宿で、BigQuery MLを用いたレコメンドシステムの開発を行いました。夏頃の合宿で小さく検証を行い、先日のサービスリリースまで、うまく実現することができました。

「機械学習の民主化検証チーム」として機械学習をこれまでやったことのないエンジニアがチームを組み、 id:syou6162 さんの助けも借りながら、Firebase Analyticsにあるデータを使って、BigQuery MLを使ったレコメンドシステムの実装と検証をしました。その後、合宿で作ったシステムを本番に導入することになり、本番向けのレコメンドシステムを開発して先日リリースしました。

また、最近うまくいったことはアプリへのGraphQL導入です。ネイティブアプリとサーバー間の通信は、これまでRESTで行われてきました。RESTでは表示したい要素が変更された時に毎回APIスキーマの変更とサーバーサイドの実装が必要になる、複雑な画面を構築するために複数のエンドポイントの結果をまとめる必要があるなど、複雑になりがちでした。これを解決するために社内ではWeb方面でよく使われているGraphQLを使えるかもしれないと思っていたのですが、なかなか導入に踏み切れずにいました。

GraphQLで実際にこれらの課題を解決できるのか、また、ネイティブアプリに導入する上で障壁になるものはないかを確かめるために、2週間の検証の時間をもらい、サーバーサイドのメンバーと一緒にGraphQLに取り組みました。その期間でサーバーサイド、ネイティブアプリ共に検証を行え、その後導入が決定し、今はGraphQLを使って快適にアプリの開発ができています。

その時の様子は、id:hitode909 さんがブログにも残してくれています。

blog.sushi.money

f:id:hatenatech:20210121162956j:plain
id:hitode909 と。2019年12月撮影

仕事だけでなく勉強、生活でも「長期的な目線で」

── Q. 普段大切にしていることは何ですか?

「チームで成果を最大化していくこと」と「長期的な目線で考えること」です。

もともとチームで仕事をするのが好きだったのですが、テックリードになってより意識をする機会が増えました。チームメンバーそれぞれで得意不得意があるので、互いに補って業務を進められるように心がけています。

長期的な目線で考えることは仕事だけではなく、勉強や生活などさまざまなところで昔から大切にしたいと思っていることです。たいていの場合、今わかっていることや、わからないことでも表面的な部分だけを組み合わせて実現していくことが短期的には早く成果を出すことにつながりますが、全く新しい概念を学んだり、表面的ではなく深く学ぶことで、長期的にメリットを最大限享受できると考えていて、実践しています。

より良い方向へ変化していく会社

── Q. はてなはどんな会社ですか?

入社してまず思ったのは「情報が広く共有されているな」ということでした。チーム内に閉じている情報はほぼなく、誰でもアクセスすることができますし、売上に関する共有会も毎月行われています。

それ以外では、はてなが好きな人が集まっていると感じます。「はてなが好き」ははてなバリューズの一つです。はてなが好きな人たちが集まって、はてなを一緒に良くしていきたいとみんなが思っています。はてなスタッフそれぞれの行動もそれに基づいており、より良い会社へと変化していく会社だと思います。


はてなのスマートフォンアプリ開発は挑戦の連続です。誰にとっても身近なスマートフォンですが、開発環境も利用者にとっての位置付けも日々変容しています。より良いアプリの提供を目指し、今ある技術だけでなく、これから先の技術に積極的な仲間を募集しています。ご連絡をお待ちしております!

iOS、Androidアプリエンジニア職 転職・中途採用 – 採用情報
iOS、Androidアプリエンジニア職の新卒採用 – 採用情報

はてなでは、今の技術・この先の技術に積極的な仲間を募集しています

はてなで働くエンジニアにアンケート カテゴリーの記事一覧 – Hatena Developer Blog

異常なオープンネス文化が特徴的 | はてなで働く nabeop にアンケート [#11]

はてなで働くエンジニアにアンケートシリーズ第11回は、システムプラットフォーム部のSRE、id:nabeopに話を聞きました。

なんとなくpをつけてみました
求人があると聞いて飛びついた
サービス横断でスムーズな開発運用を
新しい技術を取り込む「斬り込み隊長」
バディ単位で困りごとを共有
リモートでの知見共有に課題意識
知見共有の時間を設けて議論の場へ
技術の裏にある考え方を知る
オープンネス文化はミッションに通じる

な…

リモートワーク下で積極的に音声会話を | はてなで働く hogashi にアンケート [#10]

こんにちは、Hatena Developer Blog編集部です。「はてなで働くエンジニアにアンケート」シリーズ、今回ははてなブログチームのWebアプリケーションエンジニア、id:hogashiに話を聞きました。

id:hogashiにアンケート
はてなidとその由来を教えてください
いつどんなきっかけで入社されましたか?
現在の仕事を教えてください
チーム内の立ち位置を教えてください