Sansan Tech Blog

Sansanのものづくりを支えるメンバーの技術やデザイン、プロダクトマネジメントの情報を発信

新卒さん達とプロジェクト管理をボドゲで勉強してみた

Sansan事業部 プロダクト開発部の宮崎です。

今年4月、我がプロダクト開発部にも3名の新卒社員が入社しました。 そしてそのうち1名が我が顧客データHubチームにJoinしてくれました。 そんなわけで(どんなわけ?)私がメンターになることになりました。

メンターになったからにはお勉強のネタを考えなくてはならないのですがここで悩みが…何にしようかな…

色々と学んでほしいけれど…

エンジニアとして仕事をしていくうえで学んでほしいと思うものはたくさんあるものの、全部は無理なのである程度取捨選択していかねばなりません。

が、いざ何を?となるとなかなか選ぶのが難しいもので。

正直、技術的なものはランチ勉強会で盛んにいろいろなものが行われていますし業務の中で調べて実践していく中である程度賄えるかなと思ったので、そうじゃないものにしようかと思いました。

じゃあ、プロジェクト管理かな

エンジニアとして切っても切れないもの、それがプロジェクトです。

複数のメンバーが(たとえ1人でも)チームを組んで、ある目的(リニューアル/新機能追加)の達成のために日々を過ごしていきます。 メンバーとして参画すると初めのうちは細かいタスクを割り振られることが多いため、プロジェクト全体を見て何かを考える機会がどうしても少なくなります。 とはいえ、知らなくていいのか? というとそれもまた違うわけでして。

どうやって勉強してもらうか?

本を読んで…とかも考えたものの、私が眠くなりそうだったより実践的なものがいいかなと思い探しているとこんなものが見つかりました。

プロジェクトテーマパーク

jellyjellycafe.com

続きを読む

SwiftLint × Sider + SwiftFormat で Swift らしくリファクタする

はじめまして。 Sansan iOS アプリエンジニアの中川です。

私は 2014 年新卒として Join し、4 年間はサーバーサイドエンジニアでしたが、直近のスマホアプリ利用率の増加や新コンセプトを体現するためのプロダクトリニューアルでモバイルエンジニアの需要が高まったため、転向しました。

iOS アプリを開発するのは就職活動のために萌えキャラクター育成ゲームを作った以来なので、 6 年ぶりでした。余談ですが、Sansan での面接時にこのゲームのコンセプトを取締役の一人に熱弁していたのを思い出しました。今、思い返すと黒歴史でしかないですね…

今回の記事では、こんな自分が Sansan iOS アプリ開発の現場に飛び込んで、感じたこと、やってきたことをご紹介しようと思います。

コードベースに秩序がない

Sansan の iOS アプリは 2014/01/08 にバージョン 1.0.0 がリリースされ、今日まで運用保守されてきた 6 年目を迎えるアプリです。プロダクトの成長に伴い、アプリに関わるチームの体制やそのメンバーも千変万化していました。

そんな状況なので、コードベースもその時々で関わっていたメンバーが思い思いの設計やコーディングをしており、とある箇所は Cocoa MVC だったり、また別の箇所では RxSwift を利用した MVVM だったり、責務の分離が画面によって違っていたりと同じアプリなのに設計が統一されておらず、私のような新規メンバーがキャッチアップするには大変難度が高い状態になっていました。また、コーディングのフォーマットも場所によってまちまちでいざコードを書く際にどれを指針にして書いたら良いのか分からず、直近で変更されたコードのフォーマットを参考にして、頑張って書いてました。

秩序をもたらすにどうしたらよいか?

このままではプロダクトやチームの成長にコードベースがついていけなくなり、いつかは破綻してしまい、リライトする必要が出てきます。これはエンジニアとしては負債を一括で返せるので嬉しいですが、会社やプロダクトを利用するエンドユーザーにとっては長期間、新機能の提供や既存機能の改善が止まることになるので、利用率の低下につながります。ここで踏みとどまってもらえれば、良いですが、解約になってしまえば、会社としての損失になります。

そのため、運用保守しているアプリはリライトではなく、日々の開発の中での継続的なリファクタが大事になります。*1この継続的なリファクタを自然とメンバーが行えるような仕組みづくりに、今回取り組んでみました。

Sansan での事例

前置きが長くなりましたが、現在、 Sansan で行っている事例を 2 つご紹介します。各ツールの導入方法については割愛し、どのように運用しているのかに焦点を置きます。

*1:リライトやリファクタについての説明は下記の記事がわかりやすくまとまっているので、知らなかった方は読んでみると理解が深まります。

buildersbox.corp-sansan.com

続きを読む

インターン前後で変わったこと

Sansan事業部 プロダクト開発部の水野です。
最近カワウソとクアッカワラビーの画像を見て癒されてます。
今年の4月に入社しました。現在入社して2か月です。
入社前の2018年8月に、二週間Sansanでインターンをしました。
今回はそのインターンで変わった自分のエンジニアとして考え方やコードとの向き合い方について話します。

続きを読む

Google I/O 2019 に参加してきました。(前編)

Eight 事業部の辰濱です。
2019/5/7-9 にカリフォルニア州 Mountain View で開催された Google I/O 2019 に参加してきました。
f:id:tatsuhama:20190514011555j:plain

記事が長くなりそうなので、前編・後編に分けて投稿します。
前編では主に Google I/O の全体感、後半ではセッション内容について紹介します。

続きを読む

状態を扱うモナド(後編)

前回のおさらい

どうも、改めましてプロダクト開発部の自称社内関数型担当の福田です。社内でのHaskellの本を読む勉強会を運営しています。

前回は状態を扱う関数を状態計算と定義し、小さな状態計算を連鎖できるような構造を持たせるための定義を行いました。「これで安心安全に状態計算が行える!」と喜び勇んで数多の状態計算を実装しまくるところですが、今回は少し目線を変えた定義を行うことで一風変わった状態計算の表現になる逆状態モナドを紹介します。 前回に比べてHaskellの文法要素も増えるので遅延評価に倣って逆状態モナドが必要になったときに以下を読むことをお勧めします*1

*1:必要になることがなければHaskellの学習コストも払う必要はありませんのでご安心ください

続きを読む

インド学生新卒採用プロジェクト

CTO の 藤倉 です。

ここ数年、スタートアップ界隈では国外の学生さんを新卒エンジニアとして採用する企業が増えているように思います。また、国内のコミュニティや勉強会でも実際に外国出身の方に会うことも増えてきました。
当社の事業成長や、国外への展開を考えるに、開発チームとしても外国籍の新卒エンジニアを増やしていくべきなのではないかと思っています。

インドは、新卒エンジニア採用が盛り上がっている国として無視できないようなので、最近のインド人学生にはどんな人たちがいるのか、実際にお会いしてみたいと思いインドを視察してきました。

f:id:sigemoto:20190513215830j:plain

大学訪問

今回の訪印では、実際にインドの学生さんたちに会って話をして、彼らが学んでいることやエンジニアスキル、人柄などを体感することを目的としました。学生さんに会うのであれば大学を直撃しようということで、優秀な学生さんが多いと言われている三校を訪問しました。

それぞれの学校では、大学側にも協力をしてもらって学生さんを集めてもらいました。その前提として、大学側からは、一般的な日本での就業についてとか、Sansan という会社の紹介を多くの学生向けにしてほしいと依頼されました。私としてもより多くの学生さんに出会えるのであればと思い、大人数に向けたプレゼンテーションと、そこから数を絞った少数の学生さんと座談会をするという二本立ての予定を組んでもらうことにしました。

初日に訪問をしたのは New Horizon College of Engineering という大学です。ここは、New Horizon Educational Institution の中でもエンジニアリングに特化した学部を持ち、情報工学やコンピューターサイエンスだけでなく、機械工学や自動車工学なども扱っています。大学に到着して、プレゼンテーションの準備をしましょうと、大学関係者の方に案内してもらい、驚きました。私が想像していた以上に大きな会場と、参加学生の数です。

f:id:sigemoto:20190513211544j:plain

およそ 300 名くらいの学生が集まっているよ、とのことでした。いわゆる講堂にあたる場所のようです。インド人学生の規模の大きさと、彼らの日本での就業に対する興味の強さを感じます。ここでは大学の方が生徒の皆さんにイベントの趣旨の説明と、合わせて私を歓迎するセレモニーをしてくださり、その後、一時間程度のプレゼンをしました。休憩を挟み、30 名程度の学生さんとの座談会です。

学校では情報工学やプログラミングの基礎から、プロジェクトベースのカリキュラムを行い、実際のソフトウェアを開発する経験をしているとのこと。また、一部の学生は授業だけでは飽き足らず、友達と数名のチームを組んで自主的に開発しているなど、学習に対する意欲も高いようです。この辺りは総じて、日本の大学生と大きな差はないように思いました。開発をしているものも、ブロックチェーンのフレームワークを自分で開発してスマートコントラクトのような架空のサービスを作っていたり、機械学習を使ってオンラインゲームの勝率に関わる決定因子を分析してみたりと様々です。新しい技術に触れてみたいという好奇心をもって身近なものを題材に開発している様も、どこの国でも変わらないのだなぁと、親近感を覚えます。

f:id:sigemoto:20190513212908j:plain

他にも Jain University や BMS College of Engineering という大学で同様の企画を実施していただきました。最終的には、総勢 500 名以上にプレゼンをして、80 名くらいと個別に話をすることができました。

インドの就職事情

今回の訪印で出会った学生さんたちは、みんな熱意を持ってソフトウェア開発を学んでいました。日本で同じくらいの熱量をもった大勢の学生さんに会おうと思ったらかなり大変だろうと思います。インドの人口が日本の 10 倍以上いるからなのか、規模においては日本を圧倒しているようです。その彼らが、アメリカや日本をはじめとして、外国での就業を強く希望しています。彼らは先進的な国の中で、モダンなソフトウェア開発を経験したいと思っているのです。そのためには、プログラミング技術だけではなく、設計やテスト、開発プロセスに至るまで興味を持って日々勉強しています。

この状況は、同じエンジニアとして頼もしく感じます。インド人学生のみならず、世界各国の学生にとってチャンスが広がる時代になってきているのは良いことです。それと同時に、日本の学生にとっては、世界中の優秀な人材が就職活動のライバルになり、厳しい競争を強いられるとも言えます。

まとめ

Sansan では、優秀な大学生インターンを探すべく、インドでの活動を進める計画を開始します。多くの優秀な仲間と、世界に通用するプロダクト開発をしていきたいと思います。
もちろん、日本国内でも募集しています。サマーインターンの募集も開始したので、ご興味のある学生の方はぜひご応募ください。

hrmos.co
hrmos.co

© Sansan, Inc.