この記事は Eureka Advent Calendar 2020 の25日目の記事です。

こんにちは、エウレカでCTOをしている kaneshin です。2020年はCOVID-19🦠の流行からはじまり、リモートワークの推進👨‍💻👩‍💻、外出自粛🚷と緊急事態宣言📣、海外渡航の制限🛫といった世の中の生活様式が著しく変化し、本日は間もなくこのような一年も終わりを迎えようとするアドベントカレンダー最終日となるクリスマス🎄です。毎年アンカーをつとめている最終日の Eureka Advent Calendar ですが、今年もエウレカのエンジニア組織の振り返りと、来年からのエンジニア組織の戦略について紹介をします。

はじめに

エウレカは、恋活・婚活マッチングアプリ「Pairs」の運用とオンライン結婚相談所「Pairsエンゲージ」の展開をしています。(Pairsは以下「ペアーズ」と表記します)

ペアーズは運用されて8年が経過し、9年目に突入しました。出会い系という認識から長い歳月を掛けて安心・安全なマッチングアプリとしてマッチング市場を牽引し、今ではこのようなクリエイティブを世の中に出すことができるところまでマッチング市場が成長しています。

マイペースに、マイペアーズ。

個人的にも、COVID-19による影響で社内インフラやリモートワーク対応に時間を充てたりもしましたが、変化していく上で感じとれた開発系統やプロセスの良し悪しの学びが非常に大きかったです。

エンジニア組織の在り方

エンジニア組織に限らないですが、とある組織というのは目的となるミッションに基づいて行動し、目標となる結果を最大化させていくことが重要です。


この記事は Go 2 Advent Calendar 2020 の25日目の記事です。

こんにちは、こんばんは。久しぶりにGoの記事を書いている kaneshin です。今年はフロントエンドをコーディングする機会が多かったためGoに触れる機会があまりありませんでしたが、人間がやるべきでない運用タスクを見掛けるとすぐにGoを用いてコード生成をしたくなります。

今までの経験では筋の悪いコード生成もふんだんに負債として残してきましたが、無かったら困ることも多かっただろうとポジティブに考えることにしています。

さて、今回はそのコード生成について難しく考えないでとりあえず書いてみようと思えるレベルで紹介しようと思います。

TL;DR

  • 記事中盤にGo公式のコード生成を一例にした画像があるので参照してください
  • 記事後半に簡 …


こんにちは、株式会社エウレカでCTOをしている kaneshin です。

この記事は CTOA Advent Calendar 2020 の21日目の記事です。エンジニア組織におけるキャリア設計について、今までの私の経験を踏まえて考察してきたスキルの礎の部分について、いろいろな方にお話しする機会が増えたこともあり、今年の締め括りとしてエンジニア組織のキャリア戦略について一本書こうと思い、本記事を書いています。

はじめに

株式会社エウレカは、恋活・婚活マッチングアプリ「Pairs」の運用とオンライン結婚相談所「Pairsエンゲージ」の展開をしています。私は2012年にエンジニアとして入社し、当時ローンチしたばかりのPairsチームへの配属となりました。(Pairsは以下「ペアーズ」と表記します)

入社当時は出 …


シェルではパイプを利用して標準入力から文字列を読み込み、標準出力へ出力することが多いですが、CLIではオプションや引数でファイル名を渡し、直接ファイルを読み込むこともあります。

Go言語でそのようなパターンをサポートするときに皆さんどうやって書いているのか気になったので、自分のテンプレを紹介します。

結論

意図はわかったからコード見せろという人向け👾

var r io.Reader
switch filename {
case "", "-":
r = os.Stdin
default:
f, err := os.Open(filename)
if err != nil {
return err
}
defer f.Close()
r …


この記事は eureka Advent Calendar 2019 25日目の記事です。

昨日は Jun Ernesto Okumura の『YouTubeの推薦アルゴリズムの変遷を追う〜深層学習から強化学習まで〜』でした。

推薦アルゴリズムの領域となる技術面の知識は、これからエンジニアリングに関わる人が知っておくことにより技術の幅が広がるファンダメンタルな知識となると思っているので、数式は理解しなくとも概念として機械学習・深層学習は学んでおいて損はないと領域だと思っています。ぜひ一読してみてください。

改めてこんにちは、エウレカCTOの kaneshin です。推薦アルゴリズムに負けじと自己紹介をするならば、大学では最適化問題の非線形分野を研究していました。

最近は趣味で家の湿度や温度を一覧す …


Original Gopher by Renée French

この記事は Go Advent Calendar 2019 19日目の記事です。

こんにちは、こんばんは。CTO の kaneshin です。エンジニア組織のマネジメントに多く時間を割いていますが、技術的な方面では Go と GCP を掛け合わせて Nature Remo + Go + Cloud Functions + BQ を駆使して、部屋の温度・湿度・照度や人体センターの検知を趣味で少しずつ開発しています。

クラウドサービスをはじめとしたマネージドサービスが主流な界隈にとって、今までアプリケーションの責務として実装していたところをマネージドサービスに責務を委譲することができたりするので、アプリケーションを複雑に実装しなくて済むようになっていますし、保守・運用の観点からもそのような設計方針を …


この記事は Nuxt.js Advent Calendar 2019 18日目の記事です。

こんにちは、こんばんは。CTO の kaneshin です。エンジニア組織のマネジメントに多く時間を割いていますが、技術的な方面では Go と GCP を掛け合わせて個人的なダッシュボードや API 連携を実現しています。

今月は Nature Remo + Go + Cloud Functions + BQ を駆使して、部屋の温度・湿度・照度や人体センターの検知における通知であったり、ダッシュボードを作成して自己満に浸っています。

さて、本日はそんなダッシュボードを Nuxt.js で作成して Google App Engine にデプロイしているので、アプリケーション作成からホスティングするデプロイの …


この記事は Engineering Manager Advent Calendar 2019 9日目の記事です。

こんにちは、こんばんは。CTO の kaneshin です。エウレカで CTO に就任してから3年が経過し、エンジニア組織や技術戦略について日々精錬と精進をしていかなければというのを毎日のように思いを馳せています。年末年始にはテクノロジーやマネジメント関連の積読の消化が捗りそうです。

さて、そんなエウレカのエンジニア組織について2019年の振り返りをした記事を初日の eureka Advent Calendar 2019 に書いています。

この記事中の終わりにキャリアについて言及しています。

個々人のエンジニアもそれにあわせて成長できるような組織にしていかなければ、3〜5年後も生き残っていけないなと考えています。このご時世、エンジニアのキャリアはあってないようなものなので、その状況でも『エウレカにいたからこそ成長できた』と感じられるエンジニア組織を構築していきたいと思います。

手に職があるエンジニアは食い逸れることはそうそう無いと思いますが、スキルを伸ばし拡げ続けるという観点で成長しなければ、身につけたスキルだけで食い続けなければならないです。

そうならないよう、エンジニアリングマネージャーは継続的な専門スキルが身につけられるようなキャリアの指針をエンジニアと話しをしていく必要があると思っています。

ところでキャリアって何?

世の中には CTO, VPoE, Tech Lead, Architect, Data Scientist, Engineering Manager, Project Manager, Product Manager, etc… という様々な職種(ロール)があります。

わかりやすく伝えようとすれば、それらのロールをキャリアとして伝えると思います。ただし、『あなたは〇〇がキャリアとして向いています』と伝えたとしても、自分と相手とではその職種の守備範囲の認識が違う可能性があります。そのため、『A, B, C があなたは得意なので、〇〇がキャリアとして向いている。〇〇の責務は D, E, F がある』のように具体的な Responsiblity に着目して伝えていくのが良いでしょう。

キャリアなんてあってないようなもの

さて、引用文の中に『このご時世、キャリアなんてあってないようなもの』ということも記載しています。キャリアという用語は上で述べたようにとても曖昧で認識齟齬が発生しやすい用語です。

キャリアとしてロールを伝えるよりは職責の範囲(=スキル)を共通認識するためにフィードバックをするのと、そのスキルが所属する会社や事業に依存しないファンダメンタルなスキルを持ち、継続的に発揮ができるスキルになっているかが重要です。そのため、『キャリアなんてあってないようなもの』の次に『どこの会社や事業に移っても仕事をこなすことができるスキル』を有してもらい、その結果としてキャリアを形成していってもらえればと思っています。

スキルの評価をキャリアの指針とする

それでは実際にスキルを身につけることからキャリアにつなげる考えをどのようなアプローチで理解をし、そこから理解をしてもらうことが大事になります。

これらを語るときに『一過性と継続性』を軸にして会話をすることがよくあります。

スキルの評価基準の鉄則

評価は『何をやったか』ではなくて『継続的に行動している(行動できる)ことに対して、どのような成果出したのか』を評価のポイントとしてしっかりとフィードバックを行うことが大事です。


この記事は eureka Advent Calendar 2019 1日目の記事です。

こんにちは、エウレカCTOの @kaneshin です。今年も Advent Calendar の時期となったので、今年の振り返りと来年以降に向けたエンジニア組織のあり方に思考を深くしている日々です。

さて、初日の Advent Calendar ですが、エウレカでの Go の歴史について書こうと思っていたのですが、今年のエンジニア組織の振り返りをしようと思います。

組織の動きについて

エンジニア組織に限らないですが、『組織』というのはミッションに基づいた『やるべきこと』の具体化と共にそれを達成すべく実行可能領域を拡げることや、その領域内で最適値を最大化していくために形が変わるものです。


技術書の祭典である技術書典もついて #7 ですね。今回は golang.tokyo へ記事を寄稿しました。

記事の内容ですが、セキュアコーディングについて書かせてもらっています。
内容は難しい話ではなく、Goに限らない、開発者としてセキュアコーディングに関するプラクティスを紹介をしています。
セキュアコーディングはサービスを守るためには必須スキルで、開発者としてあるべき姿だと思っています。
巷ではbcryptやら平文やらで賑わっていますが、「認証の不備」の項目でbcryptでの認証を記載しています。

ぜひブースに立ち寄って手に取ってみてください!表紙がかわいいのが目印です!

Secure Coding Practices in Go

1. はじめに
2. セキュアコーディングプラクティスとは
3. インジェクション (OWASP A1)
4. 認証の不備 (OWASP A2)
5. 不十分なロギングとモニタリング (OWASP A10)
6. おわりに

2. セキュアコーディングプラクティスとは

内容を頭出しすると、このようなことを書いています。

セキュアコーディングプラクティスにはCERT(Computer Emergency Response Team)の「Top 10 Secure Coding Practices」やOWASP(Open Web Application Security Project)の「OWASP Secure Coding Practices」が代表的にあげられます。

kaneshin

Hi, I’m kaneshin. I’m currently working as a software engineer based in Tokyo, Japan.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store