ランサーズ等のサービスを開発・運用する中で得た知識やノウハウを紹介しています。

Labels:  イベント/登壇 投稿者:adachin

Lancers Tech Nightの取り組みとは!?

ランサーズ Advent Calendar 2019 3日目の記事となります。

SREチームの@adachin0817です。最近はTerraformやったりAWS Fargateに挑戦してます。あっという間に2019年も終わりですね。皆様は今年の目標など達成できましたでしょうか!私はリバウンドしてしまったので来年は気合い入れて別人になろうと思います。さてさて今回は「Lancers Tech Night」という社内エンジニアイベントついてご紹介できていなかったので、雰囲気や取り組みについてブログできればと思います。

Lancers Tech Nightとは

ランサーズをテックカンパニーにしたいため、お昼は「Lunchers(ランチャーズ)」という外部のエンジニアさんをお呼びしてLTしながらランチを食べるというイベントを定期的に行っています。(以下アーカイブを参考に)

https://engineer.blog.lancers.jp/category/event/lunchers/

また、「Lancers Tech Night(ランサーズ テック ナイト)」では不定期で社内のエンジニアをランダムで選び、金曜日にLT大会を実施しています。目的としては以下の3つになります。

  • ランサーズをテックカンパニーにするため
  • エンジニア同士のコミュニケーション活性化
  • 技術のシェアにより技術力アップ

前回の様子(2019/07/12)

技術的なお話から、マネジメントまで内容は幅広く、普段業務では見れない姿を見ることができました。
そして先月行われたLancers Tech Night #2についてレポートもしてきましたので以下ご覧になってみてください!
※一部資料は公開していないものもありますのでご了承ください


Lancers Tech Night #2

reactとreduxを使った簡単なアプリ作りました
@Kakki0310

構成について紹介
・TypeScript
・jsしか使ってない
・mainのコンポーネントは管理画面全体の部分
・reduxまで表示させる
・実際にpostを作るには
・formをreactの形式を使っている
・投稿ボタンと2つのフォームがある
・post.jsでそれぞれの関数を定義して、どういうアクションが行われたのかを組み込める
・delete postは投稿を削除している。
・この形はランサーズでも使われている
・reactはCakePHPのctpファイルの表側のようなイメージ
・reduxは裏側の処理をしているイメージ

増税対応開発の教訓
@吉本くん

技術よりも個人の反省点
・日付が考慮されていない
・税率はconfig設定
・増税対応って?
・税を扱うクラスを作成
・日付を元に税率を算出
・税率、日付はprivate
・これにより呼び出し元の全差し替えができる

起こったこと
・対応漏れによる不具合
・振込手数料のタイミング、表示上の金額ずれ
・仕様による不具合など

原因
・ロジックの分散
・規模が大きい
・手数料の計算メソッドの分散
・漏れが発生する、テストしにくい
・既存に継ぎ足し
・既存メソッドに振る舞いを追加
・個別最適
・複雑テスト漏れ
計画変更
・複数のマイルストーンごとに異なる税率
・後片付け漏れ
・差し替え対応引数なしでも動作するnull許容
・日付必須でも $date = null
・一つのズレで一日コミュニケーションしながら進めるので気をつけないといけない

学んだこと
・システム全体において、結合テストしたがエラーの見逃し
・コードで保証ができることをしないといけない
・既存に追加する形でも考えて作り直さないといけない
・未使用変数がバグに繋がっているなどを学んだ

最近やっていること
・PHPによるデザインパターンをやりなおしている
・クラス、依存関係
・Clean Architecture
・SOLID原則
・DI依存関係の逆転
・一方向の依存性

やってみたいこと
・クリーンアーキテクチャ実践 Go
・マイクロサービス
・フロントアーキテクチャ Flux

ドメイン駆動開発の手法をかじった上でLでざパターンについて考える
@manamin0521m

導入
・増田論
・DDDのイベントもある
・メリット
・どのようにロジックが書いてあるか明確
・影響範囲を特定のドメインオブジェクトやパッケージに閉じ込めやすくなる
・三層の記述が完結でわかりやすくなる
・View Controller Model

ドメインとは
・概念である
・概念はオブジェクトの集合体である
・レンタル料金の計算
・before ビジネスルールが見えない
・after classが増える
・流れが見やすい

詳細
・業務の関心事をヒト・モノ・コトいう3分類に分ける
・業務の関心事にドメインを切る
・画面やデータベースの都合からは独立して、業務ロジックを整理
・良くないコードだと?
・判定のロジックが複数のclassに重複してしまう
・1つ変更するのに全部変えないといけない
・画面やデータベースの影響範囲が大きくなる
・バグなどが起きるので、テストが必要

Lデザインパターン(Lancersデザインパターン)
・肥大化したモデルの責務を分けるため
・コードを実務のサービス文言にしている

詳しく
・細かくオブジェクトを作ると、条件分岐や前提条件をコントローラーで書かなくてよくなる
・役割は入出力のみに集中できる
・一方、現状だとテーブルとオブジェクトが一対一のものがほとんどで、各テーブルを細かく区切ったり
・テーブル同士をまとめるという作用が強くなっている

発展
・DDD化するには
・値オブジェクト (Value)
・コレクションオブジェクト(配列)
・区分オブジェクト(条件分岐)

まとめ
・設計に時間がかかるけど

・拡張しやすく、ミスが起こりにくい
・詳しい人が土台を整えてからじゃないと取り掛かるのが難しいけど
・ドメインオブジェクトが増えてくるとやりやすくなりそう
・既存の大量のコードと両立させるのが難しいけど
・コアなドメインから少しずつやっていくと良さそう

僕が作りたい世界と現状の問題点
@0xb5951

方向性
・どうやって体をなくしていくか
・最近の熱い話
・この世界めんどくさい
・やりたいことはいっぱいある
・時間が足りない
・寿命を延ばしたい
・強いタンパク質を作る
・ペインは解決されない

Human Augmentation
・ハードウェアで実現する
・ソフトウェアで実現する
・体の機能を切り出す
・思考パターン、声、目、手など
・切り出した機能にスパイスをかける
・他人の思考パターンと混ぜてみる
・喉の発生域を超えた領域での声
・人間にフィードバックする
・体を空間に溶かす
・瞬間移動もできる

熱い例
・HADO
・ARスポーツ
・ゴーストエンジニアリング
・IOA
・テクノロジーやメディアは人間の体の拡張である
・マーシャル・マクルーハン
・問題はかなり多い
・ゴーストをどう管理できるか
・広義での精神体
・攻殻機動隊に近い

自分の形をどうやって保つか
・サルトル
・実在は本質に先立つ
・ソフトウェアの重さをどうやってなくすか
・物理的な依存点が存在する

ER図について実際に考えて作ってみる
@sayanet

マリオーカートのER図について考える
・ランチをER図おもしろい取り組み
・エンティティロード湿布
・ランサーズのER図考えるの面白そう
・人によってやり方は違う
・必要な要素をピックアップ
・マリオーカートのランキングを取りたい
・ホワイトボードでやるといい
・不要なものを削除する
・ビデオ屋だとどんなER図が作れるのかみんなで考えてみよう

社内LANで学ぶネットワーク / 将棋のAIの歴史
@yakitori009

社内LAN MAPの共有
・各ポートのタグVLAN割り当て
・経路制御(ルーティング)

MAC(Media Access Control address)アドレスとは
・ネットワーク機器のハードウェアに一意に割り当てられる物理アドレス
・OSI参照モデルの第二層(データリンク層)にあたる

サブネットマスクの仕組み
・IPアドレスからネットワークアドレスを取得するときに使う

プライベートIPアドレスとは
・企業ネットワークに存在する端末が自由に使用できるIPアドレスのこと

コンピュータ将棋の登場と進化
・1980年代 初心者
・1990年代前半 12~14級
・1990年代後半 アマチュア初段
・2000年代 アマチュア2段以上
・各ボードゲームの局面数と強さ
・計算量の削減
・枝切り
・選択的探索手法
・開発者の棋力が反映される

Bonanzaの登場
・DeepBlueのチェスアルゴリズムの論文を将棋に応用
・プロ棋士と初対局(2007年)
・渡辺 竜王の勝利
・Bonanza亜種の登場(2009年)
・Bonanza作者の保木さんがOSSを公開
・ボンクラーズ
・Ponanza

まとめ
・コンピュータ将棋の強さ
・疲れない、間違えない、うっかりしたミスがない
・恐れない、緊張しない


まとめ

長くなりましたが、いかがだったでしょうか!?ランサーズエンジニアの環境や雰囲気など少しでも伝われば幸いです。技術力を高めたいエンジニアが弊社にはたくさんいますし、学びたいと思う方には最高かと思います。今後は他社さんを巻き込んでLT大会などもやっていければと思いますし、少しでもランサーズで働いてみたいと思ったエンジニアさん、ぜひ下記のWantedlyから話を聞いてみませんか!?

ランサーズではサービスを成長させてくれるエンジニア、デザイナーを募集しています!
ご興味がある方は、以下URLよりご応募ください。


【中途採用】
サービスリードエンジニア
テックリード(アーキテクト)
フロントエンドエンジニア
サーバーサイドエンジニア
業務エンジニア(社内システム基盤・基幹システム)

【インターン・学生バイト】
19新卒対象サマーインターン
エンジニアインターン

その他採用情報

関連記事

thumbnail
プログラミング言語Go読書会#13(7.11-8)[2017/06/21]

どうも、ameshoです。 先日Lancersで開催された「Go 読書会 #13」の記録をQiitaに書きました。 http://qiita.com/amesho/items/d7085e4bb8ea3073d1fc よろしくお願いします。

PHPカンファレンス2018に登壇しました

SREチームの金澤です。 Lancers(ランサーズ) Advent Calendar 2018 16日目の記事になります。 2018/12/15(土)に、PHPカンファレンス2018に登壇させていただきました。 登壇内容 ランサーズのCakePHP1.3 → …

thumbnail
プログラミング言語Go読書会#6(3.5.5-4.3)[2017/04/19]

どうも、ameshoです。 先日Lancersで開催された「Go 読書会 #6」の記録をQiitaに書きました。 http://qiita.com/amesho/items/43ea6d2675b6c8784a0c よろしくお願いします。