タグ

ブックマーク / buildersbox.corp-sansan.com (14)

  • 今さら聞けないビジュアルリグレッションテストをChromaticで始める - Sansan Tech Blog

    Bill One Entry*1グループの秋山です。 1. はじめに 2010年代前半に登場したReactVue.jsに代表される宣言的UI実装は、大規模なSPAの構築を可能にしました。その一方、フロントエンド領域に新たなアーキテクチャが導入されたことで、それまでWebアプリケーション開発で定石とされたテスト手法を適用しづらいケースが増え、新たなベストプラクティスが求められるようになりました。 その要請に応える形で、2010年代後半にはフロントエンドのテスト手法に緩やかなパラダイムシフトがありました。この記事ではそのパラダイムシフトを振り返りながら、フロントエンドで必要なテストについて考察し、最後にChromaticを用いたビジュアルリグレッションテストを紹介します。 2. Testing Pyramid と フロントエンド テストを語る際によく持ち出されるメタファとして、Testing

    今さら聞けないビジュアルリグレッションテストをChromaticで始める - Sansan Tech Blog
  • 変更に強いコンポーネント設計の方針と規約(Webフロントエンド) - Sansan Tech Blog

    技術部 データ戦略部 Newsグループの木田です。 最近、初めて自作キーボードに挑戦しました。ちょうど2枚目のモニターも買ったので、モニター2台と自作キーボードで快適に記事を書いています。 予めお断りしておきますが、この記事は元々、社内向けに設計方針や規約・ツールなどについて共有するために書いたものでした。最近、他チームの参考資料として役立ったこともあり、社外向けに手を加えて公開する運びとなりました。 はじめに 機構改革・人事異動情報(β) とは ⚛️ Atomic Design に従う ⚛️ Atomic Design とは ⚛️ Molecules と Organisms の分け方 ⚛️ コンポーネントの設計方法 📝 規約 📝 Component と Container を分ける 📝 データの繋ぎ込みは Organisms 以上で行う 💡 Tips 💡 Atoms はタグ

    変更に強いコンポーネント設計の方針と規約(Webフロントエンド) - Sansan Tech Blog
  • 【ネットワークの統計解析】第4回 代表的なネットワークのモデルを俯瞰する (2) - Sansan Tech Blog

    こんにちは.そして,あけましておめでとうございます. Sansan DSOC 研究開発部の黒木裕鷹です. 8月下旬からはじめたこの連載も,はやいもので第4回となりました. 結構な文量をそこそこのペースで書いているような気もしますが,仕事もちゃんとしているつもりです(笑) さて,この連載では,自分の勉強・復習も兼ねて,ネットワークデータにまつわる統計解析を気の向くままに紹介しています. 前回の記事では,特に複雑ネットワークを中心として,1980から2000年代に盛んに開発されてきた手法を紹介しました. 今回からはいよいよ,ネットワークデータに対する深層学習 (Graph Neural Network; GNN) やノードの表現学習 (node embedding) を俯瞰していきたいと思います. ただし,少しボリュームが出てしまうのでさらに2回に分け,GNNの大部分は次回記事に回します. そ

    【ネットワークの統計解析】第4回 代表的なネットワークのモデルを俯瞰する (2) - Sansan Tech Blog
  • 新規事業開発での技術選定の意思と意図 (バックエンド編) - Sansan Tech Blog

    こんにちは、新規事業開発室に所属するソフトウェアエンジニアの加藤です。私は関西支店でBill Oneという新規サービスの開発に携わっています。 弊社にはSansanのカタチという企業理念があり、働く人々が体現すべきValuesの1つに「意思と意図をもって判断する」があります。ソフトウェアエンジニアとして、意志と意図をもって利用する技術を選定することは当然かもしれませんが、細部までそれを徹底するのは難しいこともあります。稿では、私たちが使用している技術やライブラリを振り返って、どんな意志と意図があるかを確認していきたいと思います。 などと硬めのことを書きましたが、他所のチームでは普通に使われているライブラリを意外と知らなかったりするので、似たような記事を読みたいなと思って、技術選定を公開してみる次第です。まずはバックエンド編です。 前提 私たちのチームで開発しているBill Oneは今年の

    新規事業開発での技術選定の意思と意図 (バックエンド編) - Sansan Tech Blog
  • レガシーシステムをこえて - Sansan Tech Blog

    Sansanプロダクト開発部・基盤チームの加畑です。法人向け名刺管理サービスSansan(以下、Sansan)の開発をしています。 これまでに、レガシーシステムの改善を主題とした記事を2つ書きました。レガシーシステムのおそうじでは、レガシーシステムを改善するプロジェクトの担当者としての経験をご紹介しました。レガシーシステムとつきあうでは、少し視点を広げ、ソフトウェアや開発組織の拡大に応じたレガシー化の変遷について考察し、組織としてどのように取り組むべきかの一考察を紹介しました。 ソフトウェア(システム)は質的に複雑性をはらんでおり、変更が生じるかぎりにおいて、メンテナンス性の低下、いわゆるレガシー化と呼ばれる現象は避けられません。レガシーなシステムは事業の視点からみても技術的負債としてメンテナンスコストとして「利息」を払い続けることになります。それを避けるためには継続的に改善していく必要

    レガシーシステムをこえて - Sansan Tech Blog
  • 「Go言語でつくるインタプリタ」をRustで実装しました。 - Sansan Tech Blog

    はじめに こんにちは。DSOC 研究開発部 Architect Group Data Direction Teamの有山です。 気温が上がってきて夏っぽくなってきましたね。毎年夏用にTシャツを集めるのが趣味なのですが、今年は個人的にブームが再燃してるGOODENOUGH*1を古着で集めようかなと考えています。 ところで皆さんは普段何の言語を書いていますか? Data Direction Groupでは主にPythonを使用していますが、ある時から四則演算の計算順序やif文の条件分岐はどうして正しく動くのだろうと疑問に思うようになり、実際に正しく動かしているシステムを理解してみたくなりました。色々検討した結果、「Go言語で作るインタプリタ」というが内容的にも分量的にもちょうどよく、これを読み進めることにしました。 初めは読みながらコードを写経していましたが、複雑なロジックについては理解した

    「Go言語でつくるインタプリタ」をRustで実装しました。 - Sansan Tech Blog
  • 【Intern CV Report】Trainsによる実験管理 - Sansan Tech Blog

    こんにちは,DSOC 研究開発部 インターン生の内田です.先日プチ卒業旅行として伊豆の温泉旅館に行ってきました.伊豆といえば バナナワニ園 ですよね,異論は認めません.バナナワニ園のワニたちは基的に動かないので思わず「休日の俺じゃん」って呟いてしまいました. さて,今回はCVとは直接関係ないですが,多くの人が頭を悩ませている実験管理に関する話題です. 機械学習と実験管理 機械学習,特に深層学習を用いたプロジェクトにおいては,精度を引き出すためにハイパーパラメータが非常に重要です.一口にハイパーパラメータといっても,モデルサイズや学習率,バッチサイズなど挙げるとキリがありません. 最適なハイパーパラメータを定めるには,Grid Searchなりでパラメータを探索し,精度などと共にロギングする必要があります.バナナワニ園のワニのように怠惰な私にとって,パラメータや結果をマメに記録しておくこと

    【Intern CV Report】Trainsによる実験管理 - Sansan Tech Blog
  • Wikipediaを元にした日本語の名寄せデータセットを作成しました - Sansan Tech Blog

    こんにちは、DSOC 研究開発部の奥田です。以前の私のブログ記事ではコーギーの動画を見ていると書きましたが、とうとうコーギーを家族として迎え入れ、現在生後6ヶ月の子犬と暮らしております。 さて私たちDSOCでは、SansanやEightの価値を高めるために様々な自然言語処理のタスクに取り組んでおります。例えばニュース記事からの固有表現抽出では、私たちのサービスに特化した固有表現を対象に研究開発しています。その他にも様々あるなかで、特に重要かつ困難とされているものの一つに「名寄せ」というタスクがあります。AI人工知能と呼ばれるものが発達した現代においても、人間には当たり前にできるタスクが機械には難しいことがまだまだ存在します。 今回は、その「名寄せ」というタスクにおける日語でのデータセットを作成してみました。これをきっかけに、日語での名寄せというタスクの研究が進み分野が活性化することを

    Wikipediaを元にした日本語の名寄せデータセットを作成しました - Sansan Tech Blog
  • 技術力を底上げする、Sansanの社内勉強会補助制度 - Sansan Tech Blog

    Sansan事業部プロダクト開発部の基盤チームに所属する佐藤です。Sansanでは社員が自発的に開催する社内勉強会で会社からの支援を受けることができ、月に50種類以上の勉強会が開催されています*1。各勉強会は単発のものもありますが、週に1回、1~2ヶ月継続して開催されているものが多く、中には1年半以上続いている勉強会もあります。 今回は、社内勉強会を支える制度「Geek Seek Workshop」について紹介しつつ、社内で行われている勉強会から分野や目的の異なるものをピックアップして紹介し、Sansan社内の勉強会の雰囲気や参加によるメリットを参加者の立場から多面的に伝えたいと思います。人事制度に携わる人間ではありませんが、制度を用いた社内の技術力向上のアイデアの種になれれば嬉しいです。 Geek Seek Workshop 1人あたり1000円の補助が出る 申請のハードルが低いから開催

    技術力を底上げする、Sansanの社内勉強会補助制度 - Sansan Tech Blog
  • DBMSをGoで実装してみた - Sansan Tech Blog

    こんにちは。プロダクト開発部の荒川 id:ad-sho-loko です。突然ですが、皆さんはこんな疑問を持ったことはありませんか? データベースの内部実装はどうなっているのか? トランザクションとはどのようなアルゴリズムで実現されているのか? NoSQLが遅いのはなぜか? 古典的なデータベースとは内部的にどのように違うの? データベースを何かしらの形で利用しているのにも関わらず、意外と内部の仕組みを理解していない場合が多いかと思います。僕もそうです。*1 しかし、エンジニアたるもの、その仕組みを知ることは非常に重要です。僕もデータベースについて勉強しようといくつかのやサイトを調べていたのですが、なかでもCMU(カーネギーメロン大学)のDatabase System Groupがアップロードしている講義が最も勉強になりました。 www.youtube.com そしてブログでは、上記の講義

    DBMSをGoで実装してみた - Sansan Tech Blog
  • GAEアプリの開発フローにCloud BuildでのCI/CDをいい感じに組み込む - Sansan Tech Blog

    関西支店で新規事業開発室に所属する加藤です。私のチームでは、Google Cloud Platform (GCP) で主にGoogle App Engine (GAE) を使ってシステムを構築しています。 GAEはコマンド1つで簡単にデプロイできますが、チームの開発者が増えるにつれて、デプロイ用の設定を共有するのが大変になってきました。 デプロイにも時間がかかって、リリース作業に負荷を感じるようになりました。 そこで、GAEアプリケーションの開発フローに、Cloud BuildによるContinuous Integration (CI) / Continuous Delivery (CD) を組み込み、デプロイを自動化しました。 公式ドキュメントや各種ブログに個別の方法は記載されていますが、開発フローに組み込もうとした時にいくつか考えることがあったので、まとめておきます。 前提 Googl

    GAEアプリの開発フローにCloud BuildでのCI/CDをいい感じに組み込む - Sansan Tech Blog
  • AWS ECS & TerraformによるSansanの統合監視運用とその仕組み - Sansan Tech Blog

    はじめに IcingaとMunin Zabbixへの移行 環境構築 Zabbixの監視内容 監視のリリース方法 リソース配分 バージョンの固定化 監視システムにおけるツラミ Zabbixの独自仕様に消耗する Zabbixの仕様にインフラ構成を追従している リリース手順の複雑化 サービスの成長に合わせたサイジングやチューニング おわりに はじめに Sansan株式会社プロダクト開発部インフラチームの岡です。 事業欲求に応じ優先度と軽重が決められたタスクに向き合いつつ、チームへの依頼事項に対し日々柔軟に対応するよう努めています。 また、Sansanサービス全般のインフラ運用・保守を行いつつも、併せて運用業務の撲滅に取り組んでいます。 今回は、Sansanサービスにおける監視ツールの導入経緯からインフラ構成、監視の設計方針、リリース方法、構成におけるツラミ等をお伝えできればと思います。 I

    AWS ECS & TerraformによるSansanの統合監視運用とその仕組み - Sansan Tech Blog
  • ソースコードで理解するクリーンアーキテクチャ - Sansan Tech Blog

    はじめに こんにちは。プロダクト開発部の荒川です。 これまで最年少を謳っていましたが、ついに新卒の子にその座を奪われてしまいました。とても残念です。 さて今回のテーマは、皆さんお馴染みクリーンアーキテクチャ(Clean Architecture)です。 クリーンアーキテクチャは一時期流行し、その流れに乗って私もある程度の理解はしていました。 しかし、それはあくまでも感覚的な理解であって、他人に説明や良さを語れるレベルまで自分の中で落としこめていませんでした。 そこでより具体性のあるソースコードを読み込むことで、アーキテクチャへの理解を深めたいと思います。 クリーンアーキテクチャとは? クリーンアーキテクチャの定義や解説に関しては、ネット上にいくらでも公開されているので、このエントリでは詳しく話しません。 私自身が勉強に使った書籍やサイトを記事末尾の「参照」に掲載しているので、そちらを参考に

    ソースコードで理解するクリーンアーキテクチャ - Sansan Tech Blog
  • Webアプリケーションにおける正しいキャッシュ戦略 - Sansan Tech Blog

    こんにちは。プロダクト開発部のサーバサイドエンジニアの荒川です。普段はSansanのスマホアプリのAPIの開発をしています。 今回扱うテーマは皆さん大好きキャッシュ(Cache) です。 Webアプリケーションを開発するエンジニアである以上、キャッシュの存在からは逃れられないでしょう。 例えばパフォーマンスを向上させる手段として、キャッシュを仕込むことは往々にしてあるかと思います。 キャッシュを使えばパフォーマンスが向上しそう、というイメージも強いため安易に選択する戦略になりがちですが、正しく扱うことは質的に難しいです。 しかしキャッシュを上手に使えば、ユーザ体験を圧倒的に向上させることができます。 そんな諸刃の剣キャッシュ💰について考慮するべきこと、その戦略を改めてまとめてみました。 今回の対象 今回の対象は、アプリケーションレベルでのキャッシュ戦略を取り扱います。 いわゆるキャッシ

    Webアプリケーションにおける正しいキャッシュ戦略 - Sansan Tech Blog
  • 1