サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
大谷翔平
labs.septeni.co.jp
こんにちは。生田です。 この記事は FLINTERSのカレンダー | Advent Calendar 2022 - Qiita の21日目の記事です。 今回は、GANMA! の管理画面で Create React App から Vite へ移行した話をご紹介します。 背景 GANMA! の管理画面は React で書かれており、プロジェクトはCreate React Appでセットアップされていました。 Create React App は React で Web アプリ作るときにビルドツールやリントツールなどのセットアップを1コマンドでやってくれる便利なツールです。 HMR なんかも何も設定せずにnpm startをすればよしなに動いてくれます。 機能も多くしばらくは困ることなく使っていました。 しかし、ある程度の期間利用しているととある不満が出てきました。 それは開発サーバーの起動が遅
こんにちは。河内です。 Kubernates の manifest や CI の設定などなど、仕事の中で YAMLを書く機会は結構あるかと思います。 YAML にも若干の構造化機能があるものの限定的であり、例えばCIで複雑なジョブ構成を定義しようとすると、巻物のように長いYAMLファイルができたりします。 長いYAMLファイルはメンテナンス性が悪く、扱っていてなかなか辛いものがあります。 一方 jsonnet は JSON を吐き出せる data templating language です。 jsonnet.org ここでは、お手元にある長い YAML の代わりに jsonnet を使うことで、快適な生活を手に入れるための移行パスについて説明します。 JSON は両方のサブセット 移行でのポイントが2点あります。 ポイント1: JSON は jsonnet とみなせる ポイント2: JS
こんにちは、清水(@_smzst)です。直近の業務でマルチテナントな DB でアプリケーションでのスイッチロール機能を実現するために Amazon Cognito や表題にある Row Level Security について技術検証や設計検討を行っていました。 今回はこの Row Level Security について PostgreSQL での例を挙げて挙動を確認しながら、実際に導入するにあたって必要な知識や注意点までを網羅します。本記事が安全で堅牢なアプリケーション構築の一助となれば幸いです。 1. マルチテナントとは 2. Row Level Security とは 3. 実際に試してみる 3-1. 実現するための SQL 3-2. RLS 有効化前 3-3. RLS 有効化後 4. 補足 4-1. クエリのパフォーマンスについて 4-2. ユーザーとロールの管理について 4-3.
こんにちは。菅野です。 今年も暗号資産界隈は話題に事欠かないですね! その仕組みを支えているのはブロックチェーンです。 最近もAmazonやGoogleが注力している分野の一つです。 そして2021年に最もホットで技術的に魅力なブロックチェーンといえばSolanaでしょう! Solanaって? solana.com 詳しくはググってほしいのですが、簡単に言うと トランザクションのスループットがとても高い ゆえにトランザクション手数料も安く済む Rustでスマートコントラクト(Solanaではプログラムと呼ぶ)が書ける のような技術的な特徴があります。 私はEthereumやEOSのスマートコントラクトを作って遊んだことがあります。 でも、EthereumはSolidityというあまり馴染みのない言語で書く必要があり、EOSはwasmにコンパイルすることでRustで書くことが出来ましたがRu
こんにちは。FLINTERSでTech Adviserをしています、OE(@OE_uia)です。 Scala 3.0.0が2021年5月14日にリリースされたことを受けて、いつアップデートするか検討中の方も多いかと思います。 実際、今FLINTERSではScala製プロダクトのScala 3.0.0へのバージョンアップを試みており、今回はその進捗をブログ記事化しました。 TL;DR Play Frameworkやplay-jsonを利用したプロジェクトでも、一部はScala 3.0.0にアップデート出来ることを確認しました。 Scala 3化を完遂するにはやや時期尚早な感があるものの、今回試してみてScala 2.13とScala 3の互換性に関する知見がたまり、OSSへの貢献もできました。 scala3-migrate-pluginで依存しているライブラリのScala 3対応状況について
こんにちは。河内です。 Logica はデータ操作のための論理プログラミング言語で、Google のオープンソースプロダクトです。 今年の4月に Google Open Source Blog でも紹介されています。 opensource.googleblog.com Logica のターゲットユーザとして次の3つの人物像が挙げられています。 論理プログラミングをすでにやっていて、より計算力が欲しい人 SQLを使っていて、リーダビリティに満足していない人 論理プログラミングを学びたいと思っていて、ビッグデータにそれを適用したい人 この分類でいうと私は2番目の「SQLに満足していない人」です。長いこと付き合ってきていますが、CTEを多数含むある程度長いクエリになると、どうしても読み解くのに時間がかかるんですよね。 logica では readability が上がるということで期待が高まりま
こんにちは。河内です。 最近はデータ基盤の構築も取り組んでいたりします。 社内では他の DWH が使われている事例がありますが、今回の基盤ではデータソースとの親和性や価格面などを考慮し BigQuery で行くことにしました。 BigQuery 上で多くのデータを順次変換してデータを生成するために何らかのワークフローエンジンが必要でした。 社内の他のシステムではワークフローエンジンとして Digdag を採用している例が多いですが、このシステムでは Kubernetes 上でサービスを運用しているため、当初(2020年12月)は Argo Workflow 上でクエリを順次実行することを構想していました。構想中に Dataform が Google に買収され、無料で使えるようになったというニュースが飛び込んできたため、触って感触が良いことを確かめた後、Dataform を使っていくことに
こんにちは。菅野です。 最近はスマホアプリ全盛期ですね。誰しもが毎日たくさんのアプリを使っていると思います。 アプリでしかサービスを展開していないものもたくさんあったりします。 そのアプリを開発するときには、バックエンド側はFirebaseのようなmBaaSを利用するのが一番手軽だと思います。 ただ、mBaaSが用意するデータベースの中にはちょっと特殊なものもありますよね。別のサービスに乗り換えたくなったときとかに困るのでは?と思ったりもします。 あと、DBはRDBであることが要件の場合も少し悩ましいです。 そこで、mBaaSに頼らずに手軽にアプリのデータ置き場を作成できるか試してみるためにPrismaを使ってGraphQLのバックエンドを作成してみたので紹介します。 Prismaとは www.prisma.io Prismaとはnode.jsのORMです。特徴はGraphQLとの親和性の
こんにちは、株式会社FLINTERSで企画職 (Product Owner、ProductManager、ProjectManager、雑用係などの総称)として働く加藤と申します。 私は、主に、インターネット広告代理店などデジタルマーケティングを実践されている企業へ、Yahoo!やGoogle、Facebookなどの広告媒体が提供するAPIなどを活用した、業務用のアプリケーションを開発提供するお仕事に携わっております。 ただいまFLINTERSでは、ブログ投稿強化月間ということで、前回のブログ ドメイン駆動設計(DDD)との格闘 - 突然DDD実践チームにPOとして参加することになったら - FLINTERS Engineer's Blogに続き、ドメイン駆動設計(DDD)を実践するチームに企画職として参加する時の心得について書いていきたいと思います。 この投稿の内容 第2回となる今回は、
こんにちは、株式会社FLINTERSで企画職 (Product Owner、ProductManager、ProjectManager、雑用係などの総称)として働く加藤と申します。 私は、主に、インターネット広告代理店などデジタルマーケティングを実践されている企業へ、Yahoo!やGoogle、Facebookなどの広告媒体が提供するAPIなどを活用した、業務用のアプリケーションを開発提供するお仕事に携わっております。 私の勤める会社は、株式会社セプテーニ・オリジナルから、2021年1月4日をもちまして、 株式会社FLINTERS(読み:フリンターズ)に社名変更し、「FLINT=火打ち石」を語源として、「未来につながる火を灯そう」をミッションに掲げて気持ち新たに頑張っております。ただいまFLINTERSでは、ブログ投稿強化月間ということで、私も恥ずかしながら駄文を投稿させていただきます。
こんにちは。業務効率化と組織論が好きな新卒 3 年目の清水(@_smzst)です。「エンジニアリング組織論への招待」を読んで、これまでの自身の経験と紐づいて強烈な学びと納得感が得られたのでぜひみなさんにも知って欲しいと思いまとめてみました。 今回は第 1 章の「思考のリファクタリング」に絞っています。もし、この内容がいいなと思ったらぜひ書籍を手にとってみてください。きっと役に立つはずです。 エンジニアリング組織論を通して組織やチーム全体が共通の認識を持ち、お互いの弱みを補い強みを引き出し合う共同体としてより大きな力を発揮する… このブログがそのきっかけとなればいいなと思っています。 エンジニアリング組織論への招待 ~不確実性に向き合う思考と組織のリファクタリング 作者:広木 大地技術評論社Amazon 「エンジニアリング」とは? 不確実性を減らしていくには 論理的思考の盲点 経験主義と仮説
こんにちは。CTOの河内です。 多くのプロジェクトがスタート時はそうである通り、我々のプロジェクトもAPI仕様がありませんでした。 最初は規模が小さく問題として認識されていなかったのですが、規模が大きくなり、また開発者の入れ替わりを経験するごとに、「この API って何返してくるの?」という問いに答えられる人が段々といなくなってきました。 「ソースが仕様だ」とサーバの実装を読めばもちろん答えられるのですが、ソースコードを読み解く時間がかかるため効率的ではありません。 また、サーバ実装が唯一の情報源となるため、ロジックが何かおかしいと感じても、それが仕様なのかバグなのか判断できない状態でした。 API仕様を先に定義し、通信上の疑問にはAPI仕様で答えられるようにしたかったのです。 これは一般的な課題で、日本CTO協会が2019年12月に公開した DX Criteria DX Criteria
こんにちは。中途6ヶ月の生田です。 現在は GANMA! というサービスの管理画面開発でWebフロントエンドを担当しています。 今回は実業務で直面した以下の課題について、キャンプ1期間にどう対処していったかをご紹介します。 TypeScriptでエラー処理をいい感じにしたいが例外機構によってthrowされるオブジェクトがanyで辛いのでEither2のようなものを返り値として対処してみる ◇ 目次 ◇ 目次 ◇ 前提 ◇ 課題 TypeScriptではcatch時におけるthrowされたデータはany ◇ 方針 説明用設定 案1. 呼び出す側で型を指定する 案2. throwableな処理をラップしてEitherのような返り値で表現する ◇ 実装編 1. TypeScriptでEitherのようなものを実現する 1-a. Result<T, U>のように書ける 1-b. Result型は利
これは Datadog Advent Calendar 2019 13日目の記事です。 門脇(@blac_k_ey)です。 PYXISのデータ基盤チームでSREっぽいことを行っている傍ら、インフラチームとして横断的なインフラの管理・運用を行っています。 モチベーション 最近PYXISチームではモニタリングツールとしてDatadogの採用が進んでいます。 PYXISのインフラは主にAWSを利用しており、DatadogのAWS Integrationを導入することで各種サービスのメトリクスを取得することが可能になります。 ここで課題になるのが弊社のAWSのアカウント構成です。 PYXISチームのAWSアカウント管理は以下のような構成になっています。 このように、基幹となるAWSアカウントからAssumeRoleを使って、各プロジェクトで利用しているAWSアカウントにログインするという形を取って
こんにちは。菅野です。 近頃はビットコインなどの暗号通貨の話題を目にすることが多くなっていますよね。 ブロックチェーンという言葉を聞いたことがないエンジニアはいないと思います。 もうブロックチェーンを使ったDApp1のひとつやふたつくらいは作っているのではないでしょうか。 ところでDAppとは何ですか? ちなみに私は今年になって初めてそれを知りました。 分散型アプリケーションDApp DAppとはDecentralized Applicationの略で、サービスを提供する管理サーバーがある普通のアプリとは違う、非中央集権型のアプリです。 なぜ今DAppなのかというと、高機能なスマートコントラクトを実装したEthereum等が登場したことに関係しています。スマートコントラクトを利用することで簡単にDAppを作成できて、お金のやり取りまで簡単に組み込めるためDAppの数が増えています。 プラン
こんにちは!GANMA! DevOps エンジニア兼、技術広報の青山です。 2019年もあと僅かですが、みなさん如何お過ごしでしょうか? 先日開催いたしました「GraalVM for Scala ワークショップ by Oracle & セプテーニ・オリジナル」の模様をお伝えします! shinjuku-geek-lounge.connpass.com なお、当日のスライドとワークショップ資料はご厚意により公開されておりますので、ご興味のある方はこちらも合わせてご参照ください。 GraalVM Overview Compact version from scalaconfjp www.slideshare.net github.com 講演パート Thomas Wuerthinger 氏 ワークショップパート 懇親会後、有志で集合写真撮影 まとめ 私自身もスタッフ作業と並行してワークショップに
この記事は Scala Advent Calendar 2019 の6日目です。 こんにちは。最近はPYXISのデータ基盤チームでSREっぽいことしている 門脇(@blac_k_ey)です。 TETRIS99の次はポケモンに進捗を奪われる日々を送っています。 締め切りギリギリまで ポケモンで忙しかった 「これ書きたい!」というテーマが思いつかなかったので、個人的に最近のScala開発でお世話になっているライブラリやツールなどを紹介していこうと思います。 詳細はあまり書かず、「ここが好き!」ぐらいのお気持ち表明ぐらいの文章でしかないので、ゆるく暖かい気持ちで読んでくれたら幸いです。 Ammonite リッチなScalaREPL、Scalaスクリプト。 自分のScala生活が豊かになっている大きな要因のひとつ。 Magic Importsを使って、ライブラリをちょっと試したいときにササッと使え
こんにちは、中途三年目の堀越です。 近頃、Scalaのコミュニティにおいて Functional Programming による実装テクニックを紹介する記事や発表を見たり聞いたりすることは珍しいことではなくなってきました。弊社にもたくさんの関数型ニキ*1が在籍しており、わたしも日々影響を受けています。 ということで、本日はわたしが所属するチームでの日々の Scala 開発における取組みや戦略をサンプルコード*2と合わせて紹介していきます。 高カインド型によるEffect型の抽象化 私達はドメイン駆動設計を実践しています。なのでドメインロジックはドメインの関心事に集中できるのが理想です。ドメイン層を抽象化し、特定の実行環境や技術的関心事に依存しない戦略として 高カインド型 を用いてEffect型を抽象化します。 インターフェース定義 例えば Repository のインターフェイスのは以下の
こんにちは。セプテーニ・オリジナルの池田です。 先日サイバーエージェントさん、ビズリーチさん、チャットワークさん、そしてセプテーニ・オリジナルの4社で、「Scala秋祭り」を開催しました!! 【増席】Scala秋祭り - connpass 今年6月に開催されたScalaMatsuri2019にて、各社ブースが近く一緒にイベントしましょうとのことで話しをしまして、今回開催する運びになりました。 ▲ 当日の様子 ▲ Scala秋祭りケータリング Scala秋祭りでは、各社からScalaに関わる発表、LT、懇親会を行い今回100人規模のイベントになりました。 発表テーマはこちらです。 各社からの発表 Scala における継続モナドの実装と活用 From Tagless-Final to Typed-Final: Program Transformations in the Final Style
中途三年目、堀越です。 つい先日、仲良くさせていただいているエンジニアのコミュニティで箱根へ2泊3日の開発合宿へ行ってきました。 何した? プライベートで仲良くさせていただいている外部のエンジニア3人でチームを組み、 Slack の Bot を開発しました。 speakerdeck.com Webサーバーが必要でしたので、わたしは主にインフラを担当しました。具体的なミッションは下記です。 Webサーバーの実行環境構築を Heroku に構築する デプロイ環境を整備する GitHub のリポジトリに Heroku ボタンを配置してデプロイできるようにする Docker を使ってデプロイできるようにする master ブランチに更新が入ったら自動デプロイする 今回の内容 ということでやったことをアウトプットしようかなという内容です。Heroku が公開している node のサンプルアプリケーシ
こんにちは、中途で入社してからちょうど丸 1 年がたちました田邊(@emaggame)です。最近は React + TypeScript を利用したフロントエンドや Scala による Web API 開発もそこそこに、Akka Stream によるデータ収集や BigQuery での集計といったこともしており、毎日たのしく過ごしています。 BigQuery、最近さわり始めていろいろできるんだなあと今さらながら感動しているところです。本エントリではちょっとした Tips として、複数の配列を含むレコードをフラット化する方法についてご紹介します。 背景とやりたいこと お題として、ここでは架空のブログサービスを利用しているとしましょう。サービス側からは以下のような JSON 形式のレポートが得られる API が提供されています。 { "id": 1, "start_date": "2018-1
こんにちは。エンジニアの菅野です。 みなさんはAIと聞いてどういうものを思い浮かべますか? あまり自分とは関わりが無いなと思う方もいるかも知れません。 でも写真をいい感じに補正する写真アプリや部屋をいい感じの状態にしてくれるエアコン等があり、知らず知らずの間に既にお世話になっていたりするものです。 仕事においてもExcelにはいい感じにグラフを作る機能があったりして、確実にAIは活用できる段階になっていると思います。 もしAIが人の仕事を奪ってやってくれるなら、遊ぶのもAIに任せたいと思いませんか? 思いますよね! やってみましょう。 ゲームをAIにやらせて時短 ちょうどSteamでやらないまま積み上げてるゲームがいくつかあるので、そいつをAIにやらせればプレイする手間が省ける気がしたので早速AIにゲームをやらせようと思います。 ゲーム×機械学習だと強化学習でやるのが一般的です。 多数の試
こんにちは、丸山です。 前回フロントエンドの状態管理を考える一つの方法としてFluxを見てみました。 今回はThe Elm Architectureについて見ていきたいと思います。 The Elm Architectureとは 公式ガイドによればThe Elm Architectureは関数型プログラミング言語であるElmでアプリケーションを構築する際に使われるパターンで、 モジュール性やコードの再利用性、テストのしやすさなどに優れているということです。 Fluxの時と同じように、まずThe Elm Architectureの要素を見ていきます。 Model アプリケーションの状態 Update 状態を更新する方法 View HTMLとして状態を閲覧する方法 The Elm Architectureは以上の3つの要素から構成されます。 次に実際にコードを見て、これらがどう使われているのかを
中途三年目、堀越です。 Ansible で GitLab CI/CD 上にデプロイジョブを実装しましたのでそのアウトプットです。 www.ansible.com はじめに もともとSSHしつつポチポチとシェルを叩いて Play Framework をデプロイしていたのですが、自動化しましょうという話を開発チームでしました。 Ansible とか使ったら便利そうという意見があり、以前から関心があったということで便乗して担当させていただく運びとなった次第です。 旧デプロイ環境 踏み台サーバーにシェルスクリプトが配置してあり、叩いてみると下記の処理が一連して実行される仕組みになっていました。WEBサーバーは production と development の2つの環境が存在していました。*1 踏み台サーバーにて コード最新化 git fetch, checkout, pull などする*2 パ
こんにちは、門脇(@blac_k_ey)です。 Tetris99に進捗を奪われるのが趣味です。 … 最近、アプリケーションログ周りを整えるお仕事をしておりまして、 その中で logstash-logback-encoder というライブラリを触りました。 使い心地がとても良かったので、今回はScalaアプリケーションでこれを利用する方法をご紹介したいと思います。 logstash-logback-encoderとは JSONでログを出力することの嬉しさ 前置き logstash-logback-encoderを使うための設定 ライブラリ依存を追加する Logbackを設定する logstash-logback-encoder を使ってログを出力する Hello, Logging with JSON! JSONに静的なフィールドを追加する フィールドを動的に追加する StructuredAr
こんにちは。Scalaのプログラミングができる河内です。 共著という形で取り組んでいた実践Scala入門が、先日、技術評論社から発売されました。 なお、同僚の青山さん、技術顧問の麻植さんも共著者として名を連ねています。 gihyo.jp 私が執筆に関わろうと思ったのは、大げさな表現になりますが、幸せなエンジニア生活を送れる人が少しでも増えるように願っているからです。 書籍を通じてScalaの普及を手助けすることが、良い環境でプログラミングする人を増やし、幸せを増やすことにつながると思ったのです。 バグが少ないプログラムを書きやすい点、やりたいことが素早く実現できる点でScalaはバランスが取れていると思います。 式中心で合成しやすい構文や型チェックはバグの少なさに貢献しますし、Javaの各種ライブラリやJVM用ツールがそのまま使える点や優れたIDEの存在はやりたいことを素早く実現するのに役
こんにちは。セプテーニ・オリジナルの池田です。 弊社は3年前よりScalaMatsuriに将軍スポンサーとして協賛しており、毎年「技術読本」をノベルティとして配布しております。 今年で3冊目となりました! ▲ 左から2016年、2017年、2018年度の技術読本 この技術読本は有志で作成しており、セプテーニ・オリジナルのエンジニアが興味のある技術分野について知見を詰め込んだ本になります。 これまでScalaMatruriや新宿 Geek Loungeなどで配布していましたが、より多くの方に読んで頂きたくPDFを公開します。 【2018年度版】セプテーニ技術読本 今年の技術読本の内容 関数型Scalaでの関心の分離を考慮したエラーハンドリング 日本語プログラミングとScala SBT NATIVE PACKAGERを駆使してPlayFrameworkのデプロイ作業を軽減したい Dotty で
S3にあるファイルを加工したり中間結果のファイルを保存したりTreasureDataに格納するような処理を書いていったときに発生したエラーメモ。 digdag version 0.9.24 github.com サーバーモードでdownload_fileオプションが使えない プロジェクトディレクトリ内にダウンロードしたはずのファイルが次のタスクで消え去った ファイルに保存せずにスクリプトを書いてDigdag.envを使ってクエリ結果を変数に保持させて対応 別の方法も(参考 digdagのtd>のdownload_file) プロジェクト外のディレクトリを参照できない SQLファイル動的に生成してtdオペレータに渡すようなタスクを作った 生成したファイルをプロジェクトディレクトリに保存するようにしたが次のタスクでNo such file or directoryになり参照できず(ローカルモー
セプオリの下村です(@s10myk4) 3/16 ~ 3/18の初の3日間開催された ScalaMatsuri2018に参加してきました! 弊社では、カンファレンス、アンカンファレンスでの登壇やオーガナイズ含め 5人のメンバーが登壇しました。 ※ Twitterから画像やコメントのリンクを拝借しております。 もし問題がある場合は対応いたしますので、お手数ですが@s10myk4までご連絡いただけますと幸いです。 カンファレンス Purely Functional Play Framework Application(@AoiroAoino) purely_functional_play_framework_application from Naoki Aoyama www.slideshare.net #ScalaMatsuri B会場 Purely Functional Play Fram
次のページ
このページを最初にブックマークしてみませんか?
『FLINTERS Engineer's Blog』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く