タグ

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

  • Go1.21:slicesパッケージのチートシート | フューチャー技術ブログ

    The Gopher character is based on the Go mascot designed by Renée French. Gopherのイラストはegonelbre/gophersを利用しました。 はじめに記事はGo1.21連載の記事です。 こんにちは。TIG/EXユニット所属宮永です。 先日、第一回日遺産検定に晴れて合格し、日遺産ソムリエになりました。夏の旅行先をまだお決めでない方は、日遺産公式サイトを参考にして、日各地の魅力的なスポットを訪れてみてはいかがでしょうか。 日遺産については公式サイトの説明が非常にわかりやすいのでご覧になってください。 さて、記事のメインテーマとは異なる事柄を挟みましたが、ここからはGo1.21に追加されたslicesパッケージの解説を行います。 Go1.21のアップデート内容に関しては、すでに多くの解説記事が公開されてい

    Go1.21:slicesパッケージのチートシート | フューチャー技術ブログ
  • Go 1.21 リリース連載 contextパッケージに追加されるWithoutCancelでクライアントとの切断に備えてみる | フューチャー技術ブログ

    Go 1.21 リリース連載 contextパッケージに追加されるWithoutCancelでクライアントとの切断に備えてみる はじめにこんにちは。TIG DX ユニット所属、金欠コンサルタントの藤井です。先日、Google Pixel 7aを購入しました。これまでiPhone 7 Plusを使っていたので、使用スマホの時代が7年ほど進みました。Googleは検索エンジンからAI、スマホまで作っていてすごいですね。 ということで今回は、Google発のプログラミング言語であるところのGoの1.21がリリースされることを記念した、Go 1.21 連載 の記事を書きます。 記事では、いくつか変更の入った、contextパッケージについて記載していきます。 contextそのものについては、フューチャー技術ブログにおいても数多く解説されていますので、詳細な説明は割愛します。数例記載しますので、

    Go 1.21 リリース連載 contextパッケージに追加されるWithoutCancelでクライアントとの切断に備えてみる | フューチャー技術ブログ
    W53SA
    W53SA 2023/08/23
  • 「実践Redis入門」所感 ~「E.G.コンバット」の観点から語る~ | フューチャー技術ブログ

    積読を消化しようというテーマの、読書感想文連載 の2冊目です。 導入『自分たちは、クラウドネイティブじゃなくてマネージドネイティブなんだよ…』 TIGの原木です。 最近、冒頭のような開発者の嘆きを人づてに聞く機会があり、今も脳裏に残り続けています。 昨今のITシステムにおいて、クラウドサービスは欠かせないものとなっています。しかしユーザー、そして開発者として大きな利便性を享受する裏で、クラウドサービスによって巧妙に隠蔽された裏のソフトウェアを意識する機会は減り続けているのではないでしょうか? Webサービスにおいて、RedisやMemcachedに代表されるキャッシュサーバーもそのようなソフトウェアの1つです。 キャッシュサーバーは、Webアプリケーションなどデータの読み込みや保存を効率化するために欠かせない存在ですが、同じデータストアであるRDBMSなどと比較していま一歩隠れた存在だと思

    「実践Redis入門」所感 ~「E.G.コンバット」の観点から語る~ | フューチャー技術ブログ
    W53SA
    W53SA 2023/02/22
  • AGPLが適する場所、適さない場所 | フューチャー技術ブログ

    前回翻訳したAGPLを理解する: もっとも誤解されたライセンスでは、実体以上に強いライセンスであると思われているケースについての紹介がありました。 もちろん、使い方次第ではアプリケーションコードの開示が必要になってしまうケースもあるかと思います。前回のエントリーはわかりやすい切り口で書いてくれていますが、いくつか、やはりプロダクトコード側へ制約が出るケースが考えられるので、その点についてまとめてみます。 AGPLの特徴を2行でまとめると以下の通りかと思います ネットワーク越しに利用することも配布とみなし、AGPLで書かれたアプリケーションのソースにアクセスする権利が伝わる ネットワーク越しの利用することはリンクではないため、ネットワークで通信するアプリケーションのライセンスをAGPLにする必要はない 配布とリンクがごっちゃにされるのが、よくされる誤解の原因かと思います。もしネットワークアク

    AGPLが適する場所、適さない場所 | フューチャー技術ブログ
    W53SA
    W53SA 2023/01/26
  • lib/pq から jackc/pgx への移行 | フューチャー技術ブログ

    ライブリッツの筒井です。 GoのORマッパー連載、おまけ記事です。 特に示し合わせた訳では無いのですが、RDBは全員がPostgreSQLを使っていましたね。 さて、今回の連載記事のいくつかでも言及されていた、jackc/pgx について簡単に紹介します。 GoとPoatgreSQLでCOPY GORM v1 と v2 のソースコードリーディングしてみた GoでのPostgreSQLドライバは lib/pq が定番でしたが、現在その開発は消極的で今後機能が追加されることはめったに無いそうです。 https://github.com/lib/pq#status 一方 pgx は現在も活発に開発がなされており、GORM v2にも採用されています。 使い方の比較lib/pq (およびdatabase/sql)と pgx の使い方を比較していきます。 pgxはドライバだけでなく database/

    lib/pq から jackc/pgx への移行 | フューチャー技術ブログ
    W53SA
    W53SA 2022/10/10
  • パスワードレスな認証を実現する認証ミドルウェアのhanko | フューチャー技術ブログ

    名前からすると日の古き良き(悪名高い)デバイス認証方式のあれのように見えますが、パスワードレスな認証(passkey)を実現するOSSのプロダクトです。Go製でライセンスはAGPL3です。なかなか面白そうなので動かしてみました。 https://www.hanko.io/ このhankoのメンバーが運営しているpasskeys.ioというウェブサイトもあり、パスワードレスなログインを広めていこう!という啓蒙サイトになっています。 https://www.passkeys.io/ この↑のサイトの存在を知らなかったのですが、@takuan_oshoさんからタレコミをいただきました。ありがとうございます。 動かし方READMEに書いてある通りにdocker composeで一通り必要なものを起動します。 $ docker compose -f deploy/docker-compose/qu

    パスワードレスな認証を実現する認証ミドルウェアのhanko | フューチャー技術ブログ
    W53SA
    W53SA 2022/09/02
  • gRPCがフロントエンド通信の第一の選択肢になる時代がやってきたかも? | フューチャー技術ブログ

    Go 1.19が8/2に早々にリリースされました。個人的にはGo 1.19よりも楽しみだったのが、サービス間通信とIDL(インタフェース記述言語)連載の中でご紹介したgRPCGo実装の新星、Connectのアップデートでした。そしてそれはやってきました。 詳しい内容は↑の記事を見ていただくとして、Connectがその開発元ブログの紹介記事で宣言していたのが次の2つのことでした。 Go 1.19が出たらconnect-goは1.0にして以後後方互換性を守るよ connect-webを出すよ 前者はまだ0.3だったのですが、connect-webはリリースされました。歴史のあるフロントエンドのコードジェネレータはTypeScript対応が後付けだったりするのですが、TypeScriptがファーストシチズンかつ、ネイティブというコードジェネレータなので、開発はかなりやりやすくなることが期待され

    gRPCがフロントエンド通信の第一の選択肢になる時代がやってきたかも? | フューチャー技術ブログ
    W53SA
    W53SA 2022/08/19
  • Lambda Function URLs をGoでお試し。実行時間の上限(タイムアウト)やWeb API構築周りで気になること | フューチャー技術ブログ

    Lambda Function URLs をGoでお試し。実行時間の上限(タイムアウト)やWeb API構築周りで気になること はじめにTIG DXユニット真野です。2022/04/06にGAになったと発表された、Lambda Function URLsは、AWS Lambdaに直接HTTPSエンドポイントを追加できるというもので、API Gateway(やALB)無しでWeb APIやサイトを構築できると話題になりました。 Announcing AWS Lambda Function URLs: Built-in HTTPS Endpoints for Single-Function Microservices (4/14公開の日語訳)AWS Lambda Function URLs の提供開始: 単一機能のマイクロサービス向けの組み込み HTTPS エンドポイント 私も業務でAPI

    Lambda Function URLs をGoでお試し。実行時間の上限(タイムアウト)やWeb API構築周りで気になること | フューチャー技術ブログ
    W53SA
    W53SA 2022/05/11
  • Goのおすすめのフレームワークはnet/http | フューチャー技術ブログ

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

    Goのおすすめのフレームワークはnet/http | フューチャー技術ブログ
    W53SA
    W53SA 2022/04/11
  • Buildpacksのビルダーをスクラッチから作ってみる | フューチャー技術ブログ

    TIGの渋川です。 CNCF連載の第4回は、CNCFのSandboxプロジェクトBuildpacksについて紹介します。 https://buildpacks.io BuildpacksとはHerokuがオリジナルで作ったビルドツールです。HerokuのオリジナルはHerokuのプラットフォーム用のビルドツールだったと思いますが(使ったことはない)、CNCF版はコンテナイメージを作成します。オリジナル版とはいろいろ違いがあり、区別をつけるためにCloud Native Buildpacks(略してCNB)と呼称されているようです。 ツールの方針としては、ビルド設定ファイルのようなものを作らなくても(実行情報のみを書いたファイル、project.tomlは書ける)ソースコードを与えるだけで、Dockerfileなどを使わずにDockerimageが作れます。 使い方は簡単で、作業フォルダで

    Buildpacksのビルダーをスクラッチから作ってみる | フューチャー技術ブログ
    W53SA
    W53SA 2022/01/19
  • 仕事でPythonコンテナをデプロイする人向けのDockerfile (1): オールマイティ編 | フューチャー技術ブログ

    BusterとかStretchという名前が見慣れない方もいるかもしれませんが、これはLinuxディストリビューションとしてシェアの大きなDebianのコードネームです。 Debianバージョンが少し古いStretchの方がちょびっとサイズが小さかったりはしますが、まあ実用的にはサポートが長い方がいいですよね。slimを使ってGCCとかのコンパイラを自前でダウンロードしている記事とかもたまに見かける気がしますが、マルチステージビルドであれば、そんなにケチケチしなくていいのと、パッケージダウンロードは逐次処理なので遅く、処理系が入ったイメージのダウンロードの方が高速です。並列で処理されるし、一度イメージをダウンロードしてしまえば、なんどもビルドして試すときに効率が良いです。また、多くのケースでネイティブのライブラリも最初から入っており、ビルドでトラブルに遭遇することはかなり減るでしょう。 Py

    仕事でPythonコンテナをデプロイする人向けのDockerfile (1): オールマイティ編 | フューチャー技術ブログ
    W53SA
    W53SA 2022/01/19
  • あなたのGoアプリ/ライブラリのパッケージ構成もっとシンプルでよくない? | フューチャー技術ブログ

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

    あなたのGoアプリ/ライブラリのパッケージ構成もっとシンプルでよくない? | フューチャー技術ブログ
  • Goのテストに入門してみよう! | フューチャー技術ブログ

    2020/08/15更新: 「テストの失敗をレポートしたい」と「サブテストの一部のみ実施したい」の章を追加 はじめにTIG の辻です。今回は春の入門祭りということで Go のテストに入門してみよう!という記事です。 書いた背景ですが Go の標準ライブラリのコードリーディング会で testing パッケージにチャレンジしてみましたが、難しすぎてわからん。そもそも Go のテストって何ができるんだっけ?という話になり、基的な内容をなるべく具体例をまじえながらまとめました。 ざっとどんなことができるんだろう、という index になれば幸いです。 TipsGo に組み込まれているテストの仕組みの中に、ベンチマークに関するテストと Example テストというサンプルコード用のテストも含まれているのですが、この 2 つは対象外にします。基礎的と思われる内容から順に並べてみました。 はじめに T

    Goのテストに入門してみよう! | フューチャー技術ブログ
  • SQLファイルから型安全なコードを生成するsqlc | フューチャー技術ブログ

    TIGの辻です。GoのORマッパー連載8日目です。記事では sqlc を紹介します。早速ですが、結論から行きましょう。 sqlc まとめ SQLファイルからデータベースにアクセスできる型安全なGoのコードを生成するライブラリ 構造体のモデルの手書き実装不要 複数テーブルをJOINしたときのマッパー実装不要 生成されるコードは不要なリフレクションなし SQLをがんがん書きたい、でも面倒なマッパー構造体は書きたくない、という開発者にとっては大きな味方になります。 sqlc の紹介 sqlc はSQLファイルからGoのアプリケーションコードを生成するライブラリです。2020/2に v1.0.0 をリリースし、着々とスターを伸ばしています。2021/08現在は v1.8.0 をリリースしています。資料で生成しているコードも v1.8.0 を用いています。 https://star-histor

    SQLファイルから型安全なコードを生成するsqlc | フューチャー技術ブログ
    W53SA
    W53SA 2021/10/31
  • どうしてHTML5が廃止されたのか | フューチャー技術ブログ

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

    どうしてHTML5が廃止されたのか | フューチャー技術ブログ
    W53SA
    W53SA 2021/06/21
  • 一周回って、人間が読み書きする設定ファイルはJSONが良いと思った | フューチャー技術ブログ

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

    一周回って、人間が読み書きする設定ファイルはJSONが良いと思った | フューチャー技術ブログ
    W53SA
    W53SA 2021/01/21
  • 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: Com

    Goのデバッグ環境 on VSCode | フューチャー技術ブログ
  • 人生を豊かにする文字列diff入門 | フューチャー技術ブログ

    春の入門祭りの8日目です。 文字列の新旧の違いを表現する時によくdiffをとるとか言いますよね。そこで実行されるのが差分アルゴリズムです。差分のアルゴリズムって結構知れば知るほど難しいやつです。「より良い差分」という基準が、状況によって変わるからです。ヒューリスティックなやつです。例えば、HTMLの説明の文章を書いていたとします。タイトルをテーブルに書き換えてみたとします。 どちらも間違ってはおらず、この差分を元にパッチを当てたりも可能です。ただ、読んだ時の読みやすさが違います。 これはもちろん前者と答える人の方が多いでしょう。だって、タグという意味の塊が維持されていますからね。 これは究極的にはわかりやすいdiffというのは「意味」を理解しないと作れないということを意味します。これがdiffは簡単なようで難しいと書いた理由です。もちろん、ほどほどの工数で、ほどほどの見た目のdiffも作成

    人生を豊かにする文字列diff入門 | フューチャー技術ブログ
    W53SA
    W53SA 2020/06/13
  • Goを学ぶときにつまずきやすいポイントFAQ | フューチャー技術ブログ

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

    Goを学ぶときにつまずきやすいポイントFAQ | フューチャー技術ブログ
    W53SA
    W53SA 2020/02/10
  • 仕事ですぐに使えるTypeScript — 仕事ですぐに使えるTypeScript ドキュメント

    注釈 ドキュメントは、まだ未完成ですが、ウェブフロントエンドの開発を学ぶときに、JavaScriptを経由せずに、最初からTypeScriptで学んでいく社内向けコンテンツとして作成されはじめました。基の文法部分以外はまだ執筆されていない章もいくつもあります。書かれている章もまだまだ内容が追加される可能性がありますし、環境の変化で内容の変更が入る可能性もあります。 書籍の原稿はGitHub上で管理しております。もしTypoを見つけてくださった方がいらっしゃいましたら、 GitHub上で連絡 をお願いします 1 。reSTファイルだけ修正してもらえれば、HTML/PDFの生成までは不要です。フィードバックなども歓迎しております。 1 https://github.com/future-architect/typescript-guide/pulls