ブックマーク / future-architect.github.io (15)

  • Testcontainersを用いてテスト実行前の docker compose up を無くし、Goで並列テストする | フューチャー技術ブログ

    Testcontainersを用いてテスト実行前の docker compose up を無くし、Goで並列テストする 春の入門祭り2024の1記事目です。 はじめにTIG真野です。 Testcontainers を用いて、単体テスト実行前に docker compose up -d 無しで、PostgreSQLにアクセスする単体テストを行う、入門記事です。 恩恵は次のような開発者体感の向上が個人的にあります。 テストを実行するうえで、別プロセスのサービスを起動しておく必要があるといった前提条件を考えなくても済むため、テストを行うビジネスロジックに集中できる docker compose up -d 打たないだけだが、テストに必要なコンテナを考慮しなくても済む 停止し忘れて、別のリポジトリの開発するときに混乱しなくても済む 並列テストしやすくなるので、テストの実行速度が向上する Goにおい

    Testcontainersを用いてテスト実行前の docker compose up を無くし、Goで並列テストする | フューチャー技術ブログ
  • 2024年Gitワークフロー再考 | フューチャー技術ブログ

    春の入門祭り2024の2記事目です。 Gitは、出自としては1週間で作られたLinuxカーネルのための分散バージョン管理システムでした。当時のワークフローに合わせてパッチをテキスト化してメールに添付できるような機能だったりが備わっています。 一方で、現代のGitは、デファクトスタンダードなバージョン管理システムになりLinuxカーネル以外のアプリケーション開発で利用されています。分散バージョン管理ではあるものの、サーバー・クライアント型の使われ方をしていて、GitHubGitLabを核にして、ローカルで作ったブランチをpushして、Pull Requestの形にして管理しています。少なくとも周りで見る限りでは、それ以外の使われ方の方が少なくなってきてます。そんなこんなで求められている使われ方が変わってきていて、それに合わせた機能がぼちぼち増えています。それを活用することで、ウェブ画面上で

  • Prompt Flowでプロンプト評価の管理を行う | フューチャー技術ブログ

    今回はこのような表を自動で得られるようにすることを目標とします。 LLMには、追加学習による精度の改善だけでなく、入力するプロンプトの改善による精度向上の余地があります。 今回は、通常の機械学習の実験管理とは異なり、LLM, プロンプトの2変数のうち、LLMを固定します。仮に精度が向上した場合、それが「LLMを改善したから」なのか「プロンプトを改善したから」なのかが分からなくなってしまうからです。 プロンプトの評価プロンプトの評価に必要なもの以下の4つが全て揃えば大体どんな評価もできます。 最低限*印の項目があればそれなりの評価ができます。 質問文* LLMの回答* 理想の回答 コンテキスト プロンプトの評価指標例プロンプトの評価指標は、原則「プロジェクト・タスクによりけり」です。 ここでは評価指標を定めるための参考として、いくつか事例を集めたので以下にご紹介します。 事例(1): Pro

    Prompt Flowでプロンプト評価の管理を行う | フューチャー技術ブログ
  • RedmineとGitLabの連携プラグインを開発しました! | フューチャー技術ブログ

    はじめにこんにちは、TIGコアテクノロジーユニットの高橋・小松です。 RedmineGitLabリポジトリを連携するRedmine GitLab Adapter Pluginを開発しましたので紹介させていただきます。 もともとRedmineにはGitリポジトリを登録する機能があります。この機能でRedmineのチケットに修正内容を紐づけて管理したり、特定のコメントを付けることでRedmineチケットのステータスを変更する、というようなことが可能です。 バージョン管理システムとの連携 — Redmine.JP 便利な機能ではあるのですが構成上の課題やGitLabのバージョンアップに伴う問題点が出てきたため、GitLab APIを用いた形でGitLabリポジトリ連携用のアダプタを作りました。 構成上の課題Gitリポジトリ登録機能ですが、Redmineサーバ上で直接Gitリポジトリを読み取るこ

    RedmineとGitLabの連携プラグインを開発しました! | フューチャー技術ブログ
  • JavaのDockerイメージ何選ぶ? | フューチャー技術ブログ

    Javaアドベントカレンダーにエントリーした記事になります。 Javaのイメージを作る上で、どのDockerイメージをベースに選べばいいのか、というのを軽く調べ始めたら、選択肢がたくさんでてきたので、ちょっと突っ込んで調べてみました。 以前、仕事Pythonコンテナをデプロイする人向けのDockerfile (1): オールマイティ編で書いたOS名とかは今回は紹介しませんので、busterとかalpineとかwindowsservercoreってなによ?というお話はそちらの記事を参照してください。一点アップデートがあるのは、Debian 11がリリースされて、イメージとしてbullseyeというのが追加された点ですね。あとはfocal=Ubuntu 20.04LTSというのを覚えてもらえれば。 JDK周りのニュースOracle JDKが無償配布をやめて、無償利用としてはOpenJDKを、

    JavaのDockerイメージ何選ぶ? | フューチャー技術ブログ
  • OpenAPI GeneratorでPython Web API構築 | フューチャー技術ブログ

    この記事はPython Advent Calendar 2022 カレンダー2の3日目です。昨日はtttakehさんのじゃんけん画像を分類してみたでした。 はじめにこんにちは。TIG DXユニットの村上です! さて、私の所属しているプロジェクトではバックエンドシステムに主にGo言語を用いており、Go言語によるWeb APIを構築しています。 例えばLambdaGoを使ったサーバーレスWebAPI開発実践入門など、Future Tech Blogには多くのノウハウが投稿されていますので是非ご覧になっていただければと思います。 今回はGo言語ではなくPythonでWeb APIを構築しました。その際にOpenAPI Generatorが便利だったのでご共有します。 OpenAPI GeneratorOpenAPI GeneratorはAPIリクエストやレスポンスの内容を定義し、それを元にプロ

    OpenAPI GeneratorでPython Web API構築 | フューチャー技術ブログ
  • スキーマのバージョン管理と互換性の話 | フューチャー技術ブログ

    はじめにはじめまして、TIGの原木です。サービス間通信とIDL(インタフェース記述言語)連載の4目です。 気が付けば、バージョンの話0ばかりしています。 この記事ではスキーマのバージョン管理と互換性について話します。 “スキーマ”が指し示す言葉と課題一般的にスキーマのバージョン管理という話が出た場合、次のどちらかを想像する人が多いのではないでしょうか。 データベースのスキーマ(DB内のデータ構造)の変更をどうやってバージョン管理していくか サービス間通信で使用するデータフォーマット(ex. gRPCのprotobuf)をどうやってバージョン管理していくか データ構造が変わったことによりソフトウェアの改修が発生するとわかった瞬間、この問題に直面して「どうしよう…」と悩まれた経験を持つ方は数知れずいらっしゃるかなと思います。 両者において、スキーマのバージョン管理が課題だと意識するタイミング

    スキーマのバージョン管理と互換性の話 | フューチャー技術ブログ
  • Terraformerとしてコードを書いて思うこと | フューチャー技術ブログ

    こんにちは。TIGの伊藤です。この記事は秋のブログ週間2021の3日目です。 はじめに私は普段会社でクラウドをまたいでTerraformを日々書いたり、メンバーに教えたりしています。もはや俗に言うプログラミング言語を書かずにここまで全振りしてきたくらいなので、比較的自信を持ってコードを書いて仕事をしています。 特にここ最近はほぼ1からコード設計をして運用まで持っていくこともあり、「より腐りにくい、より息の長いコード」というものを考えるようになりました。Terraformだからこその「定期メンテを簡易にするためには」「より簡単に変更するためには」をひたすら突き詰めていった結果、アツい気持ちが生まれ、今回は筆を取っています。 そんな私のアツい気持ちをしたためた今回の記事ですが、可能な限り例も添えつつ、いくつか解説できればと思います。公式にも実は載っているような内容もあったりしますが、日語の記

    Terraformerとしてコードを書いて思うこと | フューチャー技術ブログ
  • OpenAPIにおけるundefinedとnullの設計 | フューチャー技術ブログ

    はじめにOpenAPI仕様に則ってREST APIの設計をする際に、値が存在しないという状態をどのように表現するかというお話です。 undefinedとはまずはじめに、ここでundefinedと言っているのは、OpenAPIの仕様において、リクエスト/レスポンスのデータ型を定義するSchema Objectのプロパティの1つであるrequiredが指定されていない状態を指します。 OpenAPIにおけるrequiredの定義を確認してみましょう。 OpenAPIの仕様を参照すると、Schema ObjectはJSON Schemaの仕様に従うと記載されています。 The Schema Object allows the definition of input and output data types. These types can be objects, but also primit

    OpenAPIにおけるundefinedとnullの設計 | フューチャー技術ブログ
  • Java17対応版!Javaコーディング規約の紹介 | フューチャー技術ブログ

    フューチャーのGitHubリポジトリで公開しているJavaコーディング規約をJava 17に対応させたのでその宣伝記事です。 Future Enterprise Coding Standards | Javaコーディング規約 Java 17先日の2021年9月14日にJava 17がリリースされました。 Java 17は長期サポートされる(LTS)バージョンです。前回のLTSのJava 11からすると、3年ぶりのLTS版のリリースとなります。 Java 12からJava 17の新機能前回のLTS版から追加されたみてJava 17まででどんな機能が追加されたのかを簡単にまとめると以下です(これら以外にもあります)。 switch式とswitch新構文 テキストブロック レコード パターンマッチング シールクラス 次のページが大変参考になります。 Oracle Help Center | Ja

    Java17対応版!Javaコーディング規約の紹介 | フューチャー技術ブログ
  • サーバーアプリ開発環境(Python/FastAPI) | フューチャー技術ブログ

    Pythonでお仕事する前提で、現在のところで自分が最適と考えるチーム開発のための環境整備についてまとめてみました。今までももろもろ散発的に記事に書いたりしていたのですが、Poetryで環境を作ってみたのと、過去のもろもろの情報がまとまったものが個人的にも欲しかったのでまとめました。前提としては次の通りです。 パッケージ管理や開発環境整備でPoetryを使う 今時はコードフォーマッター、静的チェックは当たり前ですよね? コマンドでテスト実行、コードチェックとか実行とかができる(CI/CD等を考えて) VSCodeでもコマンドで実行しているのと同じコードチェックが可能(ここコンフリクトすると困る) デプロイはDockerイメージ コンテナのデプロイ環境でコンテナに割り当てられたCPU能力を比較的引き出せて、スケールさせたら線形にパフォーマンスアップできるようなasyncioを前提とした環境構

    サーバーアプリ開発環境(Python/FastAPI) | フューチャー技術ブログ
  • Cypress入門~初心者でも簡単にE2Eテストが作れる~ | フューチャー技術ブログ

    はじめにこんにちは。踊るエンジニア、木戸俊輔です。 2021年4月で社会人2年目になりましたが、総出社回数は3回です。コロナで外出できないのは残念ですが、自宅で安全に業務に取り組むことができる現代の環境には感謝ですね。 さて、皆さんは普段どのようにE2Eテストを行っていますか? 忍耐強く手動でポチポチ画面を触って…というのはなかなかにしんどいですよね。自動化ツールを使って楽したいけど難しくてよくわからない、という方もいらっしゃると思います。 記事では、テスト自動化ツールを全く使ったことのなかった私が、テスト自動化ツールであるCypressの導入から基的な使い方までをご紹介していきます。 対象: Webサービスのテスト自動化に興味がある人 自動テスト初心者 Cypressを触ってみたい人 テストは大事当たり前ですが、システムを納品/リリースする際、動作や性能のテストは必須です。もしテスト

    Cypress入門~初心者でも簡単にE2Eテストが作れる~ | フューチャー技術ブログ
  • Airflow Breeze を利用してローカルで Airflow を起動する | フューチャー技術ブログ

    概要TIG の多賀です。 OSS として Airflow へ貢献するにあたり、ローカルでの実行やテストの環境整備が必要になります。また、 Airflow を利用するにあたってもローカルでの動作確認をしたいケースは多いかと思います。 Airflow では、 Airflow Breeze と呼ばれる環境が整備され、公式より提供されています。当記事では、 Airflow Breeze について概要を記載し、 Airflow への OSS 貢献の入り口となれば良いと考えています。 Airflow Breeze とはAirflow Breeze とは、ローカルで Airflow を簡単に実行できるように整備された環境を指します。実態はコンテナベースで構築され、Docker Compose が利用されています。 airflow/AirflowBreeze_logo.png at master · ap

    Airflow Breeze を利用してローカルで Airflow を起動する | フューチャー技術ブログ
  • Goのデバッグ環境 on VSCode | フューチャー技術ブログ

    はじめにこんにちは。TIG/DXユニットの富山です。 私の使用するテキストエディタはVim一択でしたが、最近はVSCode浮気気味です(言わずもがな Vimプラグインは入れています) 今回はVSCodeGo言語用のデバッグ環境をテーマします! 環境構築前提条件: VSCodeがインストール済であること Goがインストール済であること Step 1:プラグインのインストールGoogleが公開しているVSCode用のGoプラグインである、Go for Visual Studio Codeをインストールします(2020年6月に開発管理がMicrosoftからGoogleGo開発チームへ移管されました)。 インストールが終わったら、Goプラグインに必要な各種ツールをインストールしていきます。 コマンドパレットを開く(Windows: Ctrl + Shift + p / Mac: Comma

    Goのデバッグ環境 on VSCode | フューチャー技術ブログ
  • GoとSuffixArray | フューチャー技術ブログ

    フューチャー夏休みの自由研究連載の5回目です。 はじめにTIG の辻です。 Go は標準ライブラリが充実しているとよく言われます。標準ライブラリだけで、HTTP サーバを作れたり、暗号化処理や、JSON や CSV といったデータ形式を扱うことができます。go list std | grep -v vendor | wc -l としてパッケージ数を見てみると、約 200 ものパッケージが存在することがわかります。記事では、その多くの Go の標準ライブラリの中でも、個人的に面白いなと思ったライブラリを紹介したいと思います。suffixarray パッケージです。 suffixarray パッケージは Suffix Array を扱うライブラリです。suffixarray パッケージの魅力を感じるには、まず Suffix Array とは何か? を知る必要があるでしょう。 Suffix A

    GoとSuffixArray | フューチャー技術ブログ
  • 1