Scala の検索結果:

夏インターンでPHPStanのバグを直してコントリビュートした話

… specific scalar values and calls array_sum internally. It misses out on various properties of the type system, like working with IntegerRangeType. I'd much rather be if for ConstantArrayType objects, like [$one, $two, $three], it tried to …

ScalaMatsuri 2023 に登壇しました!

…方ははじめまして。 Scala エンジニアの Javakky です! 今回は、 ScalaMatsuri 2023 侍スポンサー & メインセッション登壇を行いましたのでそのレポートになります。 昨年は Open Mic Conference のみの参加だったので、メインセッションは非常に緊張したと共にとても楽しかったです。 inside.pixiv.blog スポンサード 例年 PHPerKaigi や RubyKaigi にスポンサードしている弊社ですが、今年から侍スポン…

当たり前で不可欠な存在、ピクシブの決済サービスチームに業務インタビューしてみました!

…ムでは pixiv-scalafix-rule の開発など、OSSリポジトリの管理やツール導入などを行っています。最近では決済手段の追加など大きめなプロジェクトにも参加するようになってきました。 youta:2021年5月中途入社のエンジニアです。運用中に発生した問題への対応や新規の決済手段の追加などを行っています。直近ではクレジットカード決済の3Dセキュア2.0への対応を行いました。 takenoko:2022年10月中途入社のエンジニアです。自身の決済に対する知識とピクシ…

JJUG オフラインイベント参加記

…方ははじめまして。 Scala エンジニアの Javakky です! 今回は、いつも通り Scala …… ではなく Java の話題です! 先月に行われた JJUG のオフラインイベントに一般参加 (≠登壇) してきたのでそのレポートをお送りします。 JavaOne & Devoxx報告会 2022 まず紹介するのは 11/11 (金) に日本オラクル株式会社さんの本社で行われた JavaOne と Devoxx の報告会です。 jjug.doorkeeper.jp このイ…

Scala Linter (Scalafix) 入門

…方ははじめまして! Scala エンジニアの Javakky です。 本日は Scala Advent Calendar 2022 5日目ということで、僕が普段利用している Linter である、 Scalafix についてお話ししていこうと思います。 qiita.com Linter とは? Linter とは、コードチェックや解析をしてくれるツールのことです。 コンパイラは言語仕様に則った実行可能な形式になっているかをチェックしてくれますが、 Linter ではより詳細に…

Scala プロジェクトでの Mockito 活用事例

…方ははじめまして。 Scala エンジニアの Javakky です。 今回は、弊チームで行われた Mockito の導入レポートについて代筆していこうと思います! Mockito とは? Mockito は Java 向けのモックフレームワークです。 site.mockito.org テスト文脈におけるモックとは、特定のオブジェクトなどの振る舞いを差し替えたダミーのことです。モックを利用することでテスト対象以外の依存をなるべく排してテストができるようになります。 モックフレー…

GitLab の Merge Request でテストカバレッジを可視化した

…方ははじめまして。 Scala エンジニア Javakky です。 今回は、 Scala のテストカバレッジツールである scoverage の導入方法と、 GitLab を使った可視化について見ていきます。 scoverage とは scoverage は Scala 向けのテストカバレッジ計測ツールです。 sbt 用のプラグインも用意されており、 coverage タスクによってカバレッジを計測することができます。 github.com github.com 弊チームでは…

【Scala】任意の値からメソッドチェーンを生やすメソッドを車輪の再発明した話

…方ははじめまして。 Scala エンジニアの Javakky です! 今回は、 Scala の標準ライブラリにある pipe / tap というメソッドを求めて旅した過程を書いていこうと思います。 pipe / tap とは? Scala Standard Library 2.13.6 - scala.util.ChainingOpsで定義されているメソッドで、任意の値をメソッドチェーンのソースとして扱えるすごいやつです。 pipe pipe メソッドは任意の値を受け取り、処…

エンジニア方針討論会の取り組み

…まして。ピクシブで Scala エンジニアをしている Javakky です。 今回は、弊チームで行なっているエンジニアの意思決定・相談会の取り組みについて紹介していこうと思います。 実装・設計・方針討論会 今年の2月からチーム内ではじめた取り組みとして、エンジニア全体への共有事項や意思決定を行う討論会を週1で行なっています。 この会でよく話されるトピックとしては、 開発体験向上のためのツール導入 プロダクトの設計方針・コーディング規約の提案 特定エラーに対する対応方針 などが…

沖縄高専 企業合同LT大会の登壇レポート

…まして。ピクシブで Scala エンジニアとして働いている Javakky です。 今回は、6月28日に 沖縄工業高等専門学校 ICT委員会さんと行った企業合同LT大会の登壇レポートをお送りします。 本日はICT委員会でLT大会が開催されます!コロナ禍での開催のため、オンラインにはなってしまいますが皆さんの発表が楽しみですね👀#ictLT— 沖縄高専ICT委員会 (@NITOC_ICT) 2022年6月28日 本日はICT委員会主催で合同LT大会を開催致しました。ちゅらデータ…

pixiv と OSS と わたし

…まして。ピクシブで Scala エンジニアをしている Javakky です。 今回は、僕がピクシブ株式会社で働く中で、 OSS と関わるようになったきっかけについて話したいと思います。 入社 と OSS 私は、2020年の 5月に内定者アルバイトとしてピクシブ株式会社へ入社後、1年ほど ピクシブ百科事典 の開発に関わっていました。 ピクシブ百科事典は 2009年から運営されている息が長いサービスで、レガシーな部分も多かったこともあり、ちょうどテストなどの改修が盛んに行われてい…

Scala でテストを分類して外部の API を叩く

…まして。ピクシブで Scala エンジニアとして働いている Javakky です。この記事では、当プロジェクトを担当してくれた piyo さんに代わってお送りさせていただきます。 今回は、「外部の API を実際に叩いて確認するテストも欲しいよね」というモチベーションからテストを分類して実行分けを行った話についてレポートしていきます。 検討した手法 前提として、弊チームでは Scala + sbt + Play Framework という構成で開発を行なっており、テストには …

Play プロジェクトに Swagger UI を導入した話

…の方ははじめまして。Scala エンジニアの Javakky です。 なぜ Swagger を導入するのか? 弊チームの提供している API のドキュメントはこれまで Notion で管理していました。Notionはチームのナレッジ共有として大変便利なのですが、この用途ではデプロイ後に手動で書き換えが必要だったり、変更履歴が見づらかったりといった問題点がありました。 また、各環境でエラー対応を行う場合には、 curl を利用した呼び出しをおこなっていました。 社内の他チームで…

2年目エンジニアが行った技術選定のプロセスを公開します!

…まして。ピクシブで Scala エンジニアとして働いている Javakky です。 突然ですが、ピクシブのエンジニア職組織で行っている「プロセス評価」とはご存知でしょうか? 現在では少し異なりますが、過去の活動についての記事はこちら ↓↓↓ inside.pixiv.blog ピクシブのエンジニア職組織、「エンジニアギルド」では全エンジニアがチームの垣根を越えて開発や意思決定のプロセスを交換しあう「ギルド 1on1 面談」というものがあります。 この面談は毎月の初週ごろに、所…

ScalaMatsuri 2022 に参加してきました!

…たははじめまして。 Scala エンジニアの Javakky です。 今回は去る 3/19 (土)、 3/20 (日) に行われた ScalaMatsuri 2022 の参加レポートをお送りしていきたいと思います! ScalaMatsuri とは? ScalaMatsuri はアジア最大級の Scala カンファレンスです。 scalamatsuri.org カンファレンスは 2日間に分けて行われます。 Day1 では事前応募で集められたセッションから選考で選ばれたものが発表…

Scalafix (Linter) のルール開発をした話

… です。 今回は、 Scala の Linter であり自動リファクタリングツールでもある Scalafix について、ルール開発の流れについて話していこうと思います。 github.com Scalafix とは? Scalafix は Scala の Linter として有名なツールの一つです。 このツールの大きな特徴として、発見した修正箇所を自動で書き換えることができる。というものになっています。 イメージとしては、 IntelliJ のコードインスペクションのクイック…

環境を GitLab CI に移行してビルドを高速化した話

…まして。ピクシブで Scala エンジニアとして働いている Javakky です。 今回はビルド高速化 / デプロイの利便化のためビルド環境を Jenkins から GitLab に移行しましたので、そのレポートをお送りしていきたいと思います。 弊社のデプロイについて まずは、弊チームリポジトリの動作環境とデプロイの流れがどうなっていたかを見ていきます。 弊チームの利用する環境としては、本番環境 (サーバー)、ステージング環境 (サーバー)、共用開発環境 (サーバー)、個人用…

Google Cloud Secret Manager を使って機密情報の保存をセキュアにした話

…する 弊チームでは Scala を使っており、Google Cloud のサービスは Java 向けの SDK が用意されているのでそちらを利用しました。 libraryDependencies += "com.google.cloud" % "google-cloud-secretmanager" % "2.1.3" Google Cloud に認証する 弊チームのシステムは本番環境 (サーバー)・検証環境 (サーバー)・開発環境 (ローカル) の3つの環境で動作しているた…

Scala で Writer モナドを利用して警告処理を実装した話

…(user) .asScala.toList .map(_.asScala.toList) .map { // リストに入った文字列に要素順ごとに名前をつける case _ :: feature :: Nil => // 権限オブジェクトを生成する // Feature.resolve() は `Option` を返すので、対応が必要 Permission(Feature.resolve(feature)) } } } 設計案 案1: 存在しないロールは無視しちゃえ! DBか…

GitLab を利用したプロジェクトに Scala Steward を導入して依存関係を継続的に更新する仕組みを作った話

…背景 私の部署では Scala というプログラミング言語と sbt というビルドツールを利用して開発が行われています。突然ですが、当時の依存関係設定を抜粋してきたので見てみましょう。 dependencies DB 周りの依存関係だけでも見事に波線が出てしまっています。 もちろん、DB周りが特殊というわけではなく、多くの依存関係で最新ではない箇所がありました。 そんな中、ある脆弱性が話題になります。 www.jpcert.or.jp 当然弊社も他人事ではなく、急ぎ検証やライブ…

Scala を利用した社内向けサービスの管理画面に Casbin を導入しました!

…今回利用した環境は Scala 2.13、Play Framework 2.8、 MySQL 5.7 となっております。 まずは、 build.sbt に必要な依存関係を追加していきます。 jCasbin:Casbin の Java 実装です。 Scala 実装はなさそうだったため、こちらを利用しました。 JDBC Adapter for jCasbin:jCasbin で設定したポリシーを、 jdbc を利用して DB ヘ保存するためのアダプターです。 project.se…

来たれ!ピクシブ福岡エンジニア!

…peScript, Scalaという感じですね。 moriken: 課題解決エンジニアをしています、morikenです。 自分はshocotaさんの大学の後輩で、福岡オフィスができた時にshocotaさんに誘われて入社しました。入社して最初はpixiv chatstoryのAndroid, iOSのアプリ開発、Webフロントエンドの開発を行っていました。 現在はpixivisionをメインで開発しつつ、他プロジェクトの技術選定を行うなどしています。 好きなのはフロントエンドで…

放置しがちな社内システムこそ式年遷宮していこう

…か 2014年8月にScala (Play Framework)で書かれたpployでしたが、PlayのアップデートやScalaのアップデートに対応できておらず、開発環境の構築も面倒になっていました。 pployを通してデプロイしているアプリケーションが増えていき、「ログをストリーミングしている間に別の人がページのリクエストを待たされる」という問題が報告されるようになりました。 社内の何人かが調査に協力してくれたのですが、けっこう時間がかかっていたので、「これだったらフルスク…

pixivの基盤ノウハウ大公開!PHPカンファレンス2017登壇レポート

…紹介しました。 まとめ ピクシブ株式会社では今後も日々の開発で得られた知見をカンファレンスや技術イベントなどでコミュニティに積極的に共有していきます。 ピクシブ東京オフィスおよび福岡オフィスではpixiv Nightやpixiv Technology Talksとして定期的に技術イベントを開催しています。 また、ピクシブ株式会社ではPHPのみならず、Ruby, Go, Scalaなどのさまざまな技術領域で共に活躍するエンジニアを募集しています。詳しくは採用情報をご覧ください。

Swagger+JSON SchemaでAPIの型をテストして開発サイクルをスピードアップさせた話

…では2015年に僕がScalaのサービスでSwaggerを導入して以来、RailsでもPHPでも、スマホアプリ用のAPIはほぼ必ずSwaggerを使っています。 クライアントサイドの人がリクエストパラメータを確認する用途が主なので、 リクエストパラメータ部分は丁寧に記述しても、レスポンス形式は労力に見合わないので記述していない ケースが多いです。 RailsアプリではGrape-SwaggerのアプリとSwagger::Blocksのアプリがあります。僕は以前はGrape-S…

ピクシブのプロダクトと技術 ─ 福岡オフィスオープン記念祭 基調講演

…安全に記述するためにScalaを使っています。 このように、普通にやるべきところは普通にやって、普通じゃないところはエンジニアが頭を使って解決する。僕らはそういう技術選択をして、サービスづくりをしています。 チャレンジしていくことを大切にする サービスづくりですが。ビジネス職が1人ぐらいいて、エンジニアが2人〜5人ぐらいいるような小さなチームで、サービスづくりをすすめています。自分たちがちゃんと見られる範囲でチームに分かれて、担当するという体制で進めています。 僕らの第一目標…