タグ

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

  • Pulumiで始めるIaC入門 | フューチャー技術ブログ

    はじめにTechnology Inovation Group(TIG)所属の筋肉エンジニアの渡邉です。 春の入門連載2023 8日目を担当します。 普段はクラウドインフラを中心に業務を行なっていますが、インフラリソースを管理するにあたってはIaC(主にTerraform)を使用しています。春の入門ということで、改めてIaCのメリット・デメリットについて整理してみました。また、PulumiというIaCツールに入門してみたので、皆さんと一緒にPulumiについて理解していきたいと思います。 IaC(Infrastructure as Code)とはIaC (Infrastructure as Code)とは、ネットワーク、サーバ、データベースなどのインフラリソースをコードによって管理しプロビジョニングできることを言います。 クラウドを利用している場合、マネジメントコンソールからボタンポチポチで

    Pulumiで始めるIaC入門 | フューチャー技術ブログ
  • Makefile覚書: Goアプリ開発に役立ちそうな基礎知識 | フューチャー技術ブログ

    はじめにTIG真野です。育休明けです。 フューチャー社内のタスクランナーはmakeやTaskなど複数の流派があり、チームによって使い分けられています。個人的にはmakeで良いんじゃないかと思っていますが、Taskも良いですよね。 makeは細かい記法をいつも忘れる+調べるとC言語向けの情報が出てきて脳内変換に手間を感じたため、makeを用いてWebバックエンドアプリをGoで開発するということをテーマに、役立ちそうな情報をまとめます。 なお、今記事におけるmakeは、GNU Makeを指します。バージョンは以下で動かしています。 MakefileのためのEditorConfigMakefileのインデントはハードタブである必要があります。誤りを防ぐためにもEditorConfigを設定しておくと良いでしょう。 makeは通常、Makefileという名称をデフォルトで認識しますが、同一フォルダ

    Makefile覚書: Goアプリ開発に役立ちそうな基礎知識 | フューチャー技術ブログ
  • プログラマーのためのCPU入門 | フューチャー技術ブログ

    まあ後半のインテルのモデルになると同じCPUでも熱設計で性能が大きく変わったり、ブースト時の性能だったり、いろいろあるのであくまでも数字は目安ですが、無視できないほど大きくなっているのがわかります。特に、Ryzenが元気なここ5-6年の競争による進化がすごいです。 なぜ5-6倍も性能が上がったのか、というのをすぐに言葉できちんと説明できる人はあまりいないと思います。最近、更新がなくなってしまい、Facebook(なぜか友達にしていただいた)上でも活動がみられなくて、悲しいのですが、後藤弘茂のWeekly海外ニュースの連載をずっと読んでいた人であれば、「命令デコーダーが増えたのね」とかなんとなく強くなった部分のイメージがつくとは思いますが、そのなぜ、というのに、実験付きで数値の根拠も含めてわかりやすく説明してくれているのが書です。 CPU実験がおもしろい書は、豊富な図で(LambdaNo

    プログラマーのためのCPU入門 | フューチャー技術ブログ
  • MailSlurperを使って6桁のコードの送信コードのテストをする | フューチャー技術ブログ

    以前、認証ミドルウェアのhankoの紹介の中で、hankoがテストで使っているMailSlurperというメールサーバーが面白いという紹介をしました。 https://future-architect.github.io/articles/20220902a/ テストにおいては、モックは使うものの、モックを差し込むレイヤーはソースコードレベルではなくて、インフラレベルで仕掛ける方がいいよ、というのはほぼコンセンサスとなっていると思います。 RDBを使うには、DockerでさっとPostgreSQLを差し込む フロントエンドからのHTTPの外部サービスを使うには、Mock Service WorkerとかCypressのinterceptを使う もちろん、フレームワークでH2とかSQLiteとかのローカルで簡単に使えるDBMSをサポートしているならそれを使うのも手ですが、ともかく、コードレベ

  • Terraformのベストなプラクティスってなんだろうか | フューチャー技術ブログ

    はじめにこんにちは、TIG DXユニット 1の木村です。 入社以降ずっと触ってきたTerraformですが、巷ではWorkspace派だったり、module派だったり、ディレクトリ完全分離派だったり、様々な流派(プラクティス)が乱立しているのを目にします。私自身ベストな構成を模索していく中で辿り着いた結論は、ケースバイケースで全てのデザインパターンに対応できる万能なものは存在しないのかな (当たり障りないですね..)ということです。 そんなわけで、様々なTerraformの流派を紹介し、各流派がどのようなパターンに向いているのか(はたまた不向きなのか)の個人的見解をまとめてみました。 ※記事中のサンプルコードはすべて Terraform 0.12、 provider google cloud で解説してます Terraformとは?当社過去記事に解説があります。Terraformの概要や

    Terraformのベストなプラクティスってなんだろうか | フューチャー技術ブログ
  • Go 1.17のtesting新機能 | フューチャー技術ブログ

    TIGの伊藤真彦です。 この記事はGo1.17連載の3記事目です。 Go1.17からのtestingにおける新機能Go1.17のリリースノートにこのような記載があります。 testing Added a new testing flag -shuffle which controls the execution order of tests and benchmarks. The new T.Setenv and B.Setenv methods support setting an environment variable for the duration of the test or benchmark. テストとベンチマークの実行順序を制御する新しいテストフラグ-shuffleを追加しました。 新しいT.SetenvおよびB.Setenvメソッドは、テストまたはベンチマークの期間中の

    Go 1.17のtesting新機能 | フューチャー技術ブログ
  • Go 1.17連載が始まります: コンパイラとgo mod | フューチャー技術ブログ

    また毎回恒例のGo 1.17リリースパーティも開催予定です。ぜひご参加ください。 コンパイラ関数呼び出しが5%高速化1.16の時に予告されていたレジスタベースの関数呼び出しが入りました。呼び出し速度が5%、バイナリサイズが2%改善されました。特にコードの変更なく恩恵に授かれます。 あとはpanic時のスタックトレースの表示が改善され、今まで16進数で表示されていたのが改善されたらしいのですが、よくわかりませんでした。16進数は出なくなりましたが、試したが、…となるだけでした。 クロージャを含む関数がインライン展開されるようにもなりました。これもコード修正必要なく、パフォーマンスアップにつながる可能性があります。 なお、unsafeで怪しく引数を触ったりするとトラブルが発生する可能性がありますが、通常のGoの使用方法では問題になることはなさそうです。 build constraintのコメン

    Go 1.17連載が始まります: コンパイラとgo mod | フューチャー技術ブログ
  • 100%型安全なgolangORM「ent」を使ってみた | フューチャー技術ブログ

    はじめにgolang ORM連載の2記事目となります。TIGの宮崎将太です。 突然ですがみなさん、ORMは何を使用していますか? golangだとGORMがデファクトスタンダードの位置を勝ち取りつつあり、当社でも特に理由がない限りはGORMを使用するケースが多い印象です。 今回は新たな可能性としてFacebook社謹製のent/entを検証します。個人的なORM経験としてはRuby on RailsのActiveRecordから始まり、当社謹製のUroboroSQLというORMからGORMまで割と多めに触れているので、大体どのORMでも気になる機能を中心に作りながら検証します。 entとは 公式から引用してくると以下の通りとのこと。 データベーススキーマをグラフ構造として簡単にモデル化 スキーマをプログラムのGoコードとして定義 コード生成に基づく静的型付け データベースクエリおよびグラフ

    100%型安全なgolangORM「ent」を使ってみた | フューチャー技術ブログ
  • Goのおすすめのフレームワークはnet/http | フューチャー技術ブログ

    僕としてはGoのおすすめのフレームワークを聞かれたら、標準ライブラリのnet/httpと答えるようにしています。というよりも、Goの他のフレームワークと呼ばれているものは、このnet/httpのラッパーでしかないからです。 Goでアプリケーションを作成する場合のイメージは次の通り。battery includedなアプローチは他の言語でもたまにありますが、ついてくる機能が今時のものが多くて、標準ライブラリで済むことが多いです。ウェブ開発についてもそんな感じです。 PythonとかRubyとかもそうですが、言語組み込みのウェブサーバー機能はテスト用で番運用には機能が足りない、性能が足りない、ということから「プロダクションに耐えうるフレームワークを別に入れないと」と思う人も多いんじゃないかな、と思いますが、Goの場合は組み込みのサーバーで問題なかったりします。Node.jsに近いかも?世間に

    Goのおすすめのフレームワークはnet/http | フューチャー技術ブログ
  • どうしてHTML5が廃止されたのか | フューチャー技術ブログ

    フロントエンド連載の5記事目です。 HTML5が2021年の1月に廃止されました。 Webエンジニアとしてバリバリ活躍されてる方やエグゼクティブテックリードのような肩書きを持つ方にとっては「何をいまさら」という話題かと思います。 しかしながら、今年も新人さん入ってきてくださったので、プログラミングを学習中にHTML5という文字列に悩まされないように、そもそもHTML5とは何かや、廃止された経緯をまとめてみます。 HTML5とはWebサイトを作るときに必ず書くことになるHTML。Webサイトのコンテンツ、つまり中身や構造を作るために使うマークアップ言語です。 そして、その最近版として10年ほど前に登場したHTML5。当時は Webニュースなどで盛んに特集が組まれていましたが、このHTML5がついこないだ、2021年1月28日に廃止されました。 広義のHTML5 / 狭義のHTML5HTML5

    どうしてHTML5が廃止されたのか | フューチャー技術ブログ
    azumakuniyuki
    azumakuniyuki 2021/06/21
    “HTMLを書いてるときにわからないことがあったとき、HTML Living Standardの仕様書を読むと確実、ということを認識してもらえれば幸い。”
  • HTTP検索条件、GETにするか?POSTにするか? | フューチャー技術ブログ

    はじめにTIG DXユニット 1真野です。 RESTfullとかRESTishな方針でWebA PIの横断検索を設計する際にチーム内で方針について議論したやり取りの備忘記事です。 注意としてB2C向けなWeb APIを提供するというよりは、主に企業間または企業内部で使われるようなAPIの設計のバイアスがあります。LSUDs(Large Set of Unknown Developers)かSSKDs(Small Set of Known Developers)で言えば、確実にSSKDs脳で記事が書かれています。 REST API広く使われているため日語記事も多数です。実践RESTful HTTP - InfoQ や、0からREST APIについて調べてみた など良さそうな記事が沢山でてくるの読むと良いでしょう。一般的な設計方法はやや古いですがWeb API: The Good Parts

    HTTP検索条件、GETにするか?POSTにするか? | フューチャー技術ブログ
  • あなたのGoアプリ/ライブラリのパッケージ構成もっとシンプルでよくない? | フューチャー技術ブログ

    2023.10.5追記: Goチームからプロジェクトの目的に応じたディレクトリ構造についてのドキュメントが公式に公開されています。 https://go.dev/doc/modules/layout Goプロジェクトのフォルダ構成どうしよう、とググると見つかるStandard Go Project Layout。とはいえ、これはかなりコード量を増やしてしまう恐れがありますので、導入する場合のデメリットも考えておく方が良いです。 特に、プログラマーは、最初にみたプログラミング言語のフォルダ構成を親だと思う特性があり、Javaや.NETに影響されるとかなり細かくフォルダを切りたくなったり、package privateなど細かく可視性を制御しようとしたりして、なおかつ「privateのテストってどうすべきなんですか?」とか議論を始めたりもしますが、Go先生によればこれぐらいは1パッケージにフ

    あなたのGoアプリ/ライブラリのパッケージ構成もっとシンプルでよくない? | フューチャー技術ブログ
  • JavaプログラマーのためのGo言語入門 | フューチャー技術ブログ

    JavaプログラマーのためのGo言語入門こちらはJava to Go in-depth tutorialの日語訳です 原文の著者に許諾を得て翻訳・公開いたします。 このチュートリアルは、JavaプログラマーがすばやくGo言語にキャッチアップできるようにすることを目的としています。 目次 Hello stack 主な違い シンタックス(文法) 定数 構造体 ポインタ スライス 値の作成 メソッドとインターフェース エラー PanicとRecover ゴルーチンとチャネル Hello server Hello stack 1まずはじめに簡単な例を見ていきましょう。この例ではシンプルな抽象データ型をGoで実装しています。 // collectionパッケージはstring型を格納できるスタックを実装している package collection // Stackのゼロ値はすぐに使用できる空のス

    JavaプログラマーのためのGo言語入門 | フューチャー技術ブログ
  • Go Conferenceの📛を作る | フューチャー技術ブログ

    フューチャーアドベントカレンダーの3日目のエントリーです。昨日はrkyymmt@githubさんによる私のコンピュータ遍歴でした。 Go Conference 2019 Autumnでは、弊社フューチャーがTofu On Fireスポンサーを努めさせていただきました。Go Conference Fukuokaが参加者に名札を配っており(トップ写真左側)、それが羨ましく、東京のイベントでも配布したい!と思ったので、名札提供に手をあげさせていただきました。どうせ配るなら、外国の人が喜びそうなGenuine Tofu on Fireの実物をお土産にしてもらえばいいかな、ということで、このようになりました。また、個人の名前と、Connpassのアバター画像(≒Twitterのアイコン)が入っているオフ会にはぴったりな名札なので、ぜひとも他のイベントでも身につけていただければと思っています。 この名

    Go Conferenceの📛を作る | フューチャー技術ブログ
  • 一周回って、人間が読み書きする設定ファイルはJSONが良いと思った | フューチャー技術ブログ

    最近GoでCLIツールを作っていますが、JSONが良いとなんとなく思っています。 続編も公開しました(追記:2019年10月2日)。 CUEを試して見る 設定ファイルフォーマット近年、設定ファイルを書くプレーンテキストのフォーマットとしては次のようなものが多いかと思われます。 XML 多くのプログラミング言語において標準ライブラリで扱える(ただしNode.jsにはない) XMLスキーマ、XSLTなどの周辺ツールも揃っているが、記述が冗長になりがちで、敬遠されがち。 ini QtやPythonの標準ライブラリで扱える 深い階層や配列を扱うのが苦手 JSON ほとんどのプログラミング言語で標準ライブラリに入っている 特にフロントエンドJavaScriptでは追加のライブラリを利用する必要がなく、速度も早く、gzipすればファイルサイズもかなり小さくなる。T 閉じかっこが必要、コメントがつけら

    一周回って、人間が読み書きする設定ファイルはJSONが良いと思った | フューチャー技術ブログ
  • Goを学ぶときにつまずきやすいポイントFAQ | フューチャー技術ブログ

    他の言語になれた人が、初めてGoを書いた時にわかりにくいな、と思った部分はどういうところがあるのか、難しいポイントはどこか、という情報を自分の経験や、会社の内外の人に聞いたりしてまとめてみました。まだまだたくさんあるのですが、多すぎるのでまずはこんなところで。コンテナで開発することがこれからますます増えていくと思われますし、その時にコンテナとの相性が抜群なGoをこれから使い始める人もどんどん増えていくと思います。 Goは特に言語のコアをシンプルに、何かを実現するときはそのシンプルな機能を組み合わせて実現しよう、というコンセプトです。つまり、他の言語で実現したいこと・できていることに比べて、Goは組み合わせ(イディオム)でカバーする領域が広くなります。そのあたりのとっかかりになる情報を提供することが、これからGoを触る人にとってつまずきを減らすことになると思います。 Go Conferenc

    Goを学ぶときにつまずきやすいポイントFAQ | フューチャー技術ブログ
    azumakuniyuki
    azumakuniyuki 2019/07/14
    改めて読んだんやけど要所が簡潔ですごい参考になる
  • データベースマイグレーション ~OracleからPostgreSQLへ~ ー第1回ー | フューチャー技術ブログ

    1. 初めにこんにちは。Technology Innovation Groupの岸田です。 データベースシステムに対しては、高い信頼性・可用性・安定性が求められることから、データベースとしては、Oracle Database(以降はOracleと記載)やMicrosoft SQL Serverなどの商用製品が採用されてきました。 十数年前より、商用データベースの高いコストに不満を持つ企業において、OSSデータベースに注目が集まってきており、近年では基幹システムにおいてもOSSデータベースが採用されるケースも多くなっています。 このような背景から技術者としてもOSSデータベースのスキルは非常に求められている状況かと思います。 元々高額なライセンス料に加え、仮想基盤における課金体系の問題や2016年のOracle Database Standard Edition Oneの廃止などにより、基盤

    データベースマイグレーション ~OracleからPostgreSQLへ~ ー第1回ー | フューチャー技術ブログ
  • 1