タグ

関連タグで絞り込む (217)

タグの絞り込みを解除

goに関するlax34のブックマーク (227)

  • OAuth 2.0 / OIDCを理解するために、自分でGoで実装してみた

    OAuth 2.0 / OIDCを理解するために、自分でGoで実装してみました。 以下のハンズオンに従って実装していただくと、OAuth認可コードフローとOIDCの一連の流れの理解が深まると思います。 概要 OAuth 2.0は、ユーザーの認証情報を直接アプリに渡すことなく、外部サービスを通じて安全に認可を行うためのプロトコルです 。特にWebやモバイルアプリ開発では、認証と認可を分離しセキュアに委譲する手段として広く利用されています。OpenID Connect (OIDC)はOAuth2.0を拡張してユーザーのアイデンティティ情報を扱う仕組みで、OIDCではIDトークンと呼ばれるJWT形式のトークン(署名付き)が発行され、これによってクライアントはユーザーを識別できます。OAuth2.0単体ではユーザー個人を表すトークンは発行されませんが、OIDCではscopeにopenidを含めるこ

    OAuth 2.0 / OIDCを理解するために、自分でGoで実装してみた
  • Goの進化に乗り遅れるな!modernizeパッケージでコードを現代化するリファクタリング入門

    「modernize」パッケージとは? 「modernize」パッケージは、Go のツール群の中でも特に注目すべき解析器(アナライザー)です。gopls(Go 言語サーバー)に統合されており、既存のコードを最新の言語機能や標準ライブラリの改善点に沿って自動的にリファクタリングするための提案を行ってくれます。たとえば、古い if/else 構文による条件分岐を、Go 1.21 で追加された組み込みの min/max 関数に置き換えるなど、コードをよりシンプルで読みやすい形に更新できます。 さらに、modernize パッケージには、提案された変更を一括で適用できるコマンドラインツールも用意されています。たとえば、以下のコマンドを実行することで、テスト対象のコードに対してすべての現代化修正を一括で適用できます。 go run golang.org/x/tools/gopls/internal/

    Goの進化に乗り遅れるな!modernizeパッケージでコードを現代化するリファクタリング入門
  • GoからLocalStackを使ってみた

    はじめに GoからLocalStackを使ってみたので、具体的な設定方法や動作確認用ソースコードを紹介します。 記事の構成 記事の構成は以下の通りです。 LocalStackとは - LocalStackとは何か、無料版と有料版の違い、メリットを説明します。 1. LocalStackコンテナ立ち上げる - Dockerを使ってLocalStackを起動し、AWS CLIで接続を確認します。 2. GoからLocalStackに接続する - Goプロジェクトを作成し、aws-sdk-go-v2を使ってLocalStackに接続します。 3. GoからLocalStackを作成・破棄する - testcontainers-goを使ってGoのコード内でLocalStackを起動・破棄します。 LocalStackとは? 概要 LocalStackは、AWSのサービスをローカル環境でエミュレー

    GoからLocalStackを使ってみた
  • もしもいま、Goをイチから学ぶならどうしたい? 松木雅幸 / Songmuさんが考える学習ロードマップ - Findy Engineer Lab

    めまぐるしく変化するテックの世界。技術を身に着けるうえで学ぶべきポイントや学習環境なども年々変わっています。 そこで「もしもいまの環境で、テックのことをイチから学び直すことになったら、自分はどんな風に勉強したいか」というIFストーリーを通じて、技術との向き合い方を考え直してみる企画「テック転生」。 今回は、株式会社ヘンリー VPoE・松木雅幸(Songmu)さんに“自分だったらこう進めたい、Goの学習ロードマップ”を伺いました。 学び始める前に Songmuです。今ではGoが得意なエンジニアとしてご存知いただいているかもしれませんが、そんな私がもし記憶を失い、改めてGoをイチから学び直すとすればどうするでしょうか。 そもそも、2025年にGoを学ぶ必要があるかどうかを検討しなくてはいけません。 そのために、Goがどのような言語で、自分にマッチするかどうかを知りたいところです。プログラミング

    もしもいま、Goをイチから学ぶならどうしたい? 松木雅幸 / Songmuさんが考える学習ロードマップ - Findy Engineer Lab
  • 【Go】 WEBフレームワークなしで開発する TODO API ハンズオン

    このハンズオンでは、GoのWebフレームワークを使用せずに認証付きTodoアプリのAPIを開発していきます。 また、このAPIのアーキテクチャには、クリーンアーキテクチャやドメイン駆動設計の考えを適用させています。 マニアックな技術は特に扱っておらず、初学者の方が基的なAPI開発を体験するためのハンズオンとなっています。反対に、すでにGoでの開発に慣れ親しんでいる方であればハンズオンで得られるものは少ないかもしれません。 アーキテクチャや設計手法、テスト、開発環境、認証、ORM....など色々な技術を網羅しています。また、概念や使用技術の説明に加え、公式ドキュメントや参考になる記事も逐一掲載しているので、つまづくことなくハンズオンを進められるように書いているつもりです。 このハンズオンでは、以下のような技術を扱います。 ・Docker,Docker composeによる環境構築 ・Gi

    【Go】 WEBフレームワークなしで開発する TODO API ハンズオン
  • 【Go言語】Goで学ぶOAuth認証 - Qiita

    はじめに 今回は、現代のWeb開発で必要不可欠なOAuth認証をGo言語で実装していこうと思います! 初学者の方でもしっかり理解していただくために基的な概念から実際の実装フローまで解説させていただきます。 まずは、基概念から見ていきましょう。 OAuthの基概念 OAuth 複数のWebサービスを連携して動作させるために使われる仕組み 通常、Webサービスを利用するためは、個別にユーザーIDとパスワードを入力してユーザーを認証する必要がありますが、OAuthを利用することで、IDやパスワードを入力することなく、アプリケーション間の連携が可能 OAuthを理解していく上で重要な用語があるので押さえていきましょう。 クライアント OAuthを使用してユーザーの認証を行うアプリケーション(今回だと自分のGoアプリケーション) リソースオーナー 保護されたリソース(例:個人情報)へのアクセス

    【Go言語】Goで学ぶOAuth認証 - Qiita
  • インテグレーションテストをもっと楽に!Testcontainers はじめました - Qiita

    はじめに この記事は TRIAL&RetailAI Advent Calendar 2024 の21日目の記事です。昨日は Ryusei Ito さんの Helmを「完全に理解した」 という記事でした。Helm入門者にとって「完全に理解した」に到達するための良い手引きとなるのではないでしょうか。よろしければ「いいね」をお願いします! 自己紹介 Retail AI にてバックエンドエンジニアをしています。主にGoAPIを書いています。 今年のアドベントカレンダーも、そして2024年も残りわずかとなってきました。今年の個人的なハイライトは父になったことで、子育ての素晴らしさ・大変さを日々実感しています。世の中のお父さん・お母さんの皆さん、毎日当にお疲れ様です! どんな記事? さて、題に入っていきます。この記事では Testcontainers を紹介します。特別新しいツールというわけでも

    インテグレーションテストをもっと楽に!Testcontainers はじめました - Qiita
  • Goで認可サーバーことはじめ - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? はじめに 朝デジ事業センター開発部、兼CTO室の金子(theoden9014)です。 近年のWebでは、OAuth 2.0の登場により認証と認可の分離が一般化し、それぞれ高度に進化していき、複雑化しています。 特に昨今はパスキーの登場により、パスワードレス認証が徐々に主流となりつつあり、認証認可はさらに複雑化しています。 今回は認証認可のベースとなるOAuth 2.0について、Go言語を利用し、簡易的な認可サーバーの実装についてご紹介します。 認証認可の全体像を把握する上でOAuth 2.0はとても重要な技術です。 簡易的な実装を通して

  • Go初学者へのコードレビューでよくあったコメント20選

    はじめに こんにちは、ソーシャルベッティング事業海外ベッティング事業部の山崎です。 記事では、Effective GoGoogle のスタイルガイド、Code Review Commentsといった公式資料、Future Architectの記事などを参考に、Go を初めて触る開発者を対象にした汎用的なレビューコメントの 20 選を紹介します。 大きく以下の4つのセクションに分けました 言語仕様に関わる内容 標準パッケージの使い方 エラーの扱い方 単体テスト Linter の活用について 可能な限り lint で自動化して人の手が加わる前に静的解析でできればベターです。 特にこの記事で紹介するような汎用的なコメントについてはいくつか反映できる lint もあると認知しております。 そのような設定の lint config サンプルをまとめようとも思いましたが、実際に運用まで至って

    Go初学者へのコードレビューでよくあったコメント20選
  • 資料公開:「Golangを使ったバックエンドの実装入門」で DevelopersIO 2024に登壇しました #devio2024 | DevelopersIO

    ども、もこ(札幌オフィス)です。 日開催のClassmethod Odyssey (DevelopersIO 2024) で登壇いたしましたので、資料とソースコードを公開します。 資料 ソースコード DEMOでお見せしたコードは下記にて公開しております。 https://github.com/mokocm/go-task-backend 所感 gRPC、なんとなく難易度が高そうなイメージがありますが、Protocol Bufferとの親和性も高く、非常に洗礼されたエコシステムとなっているため、是非これきっかけで興味を持っていただけると幸いです!

    資料公開:「Golangを使ったバックエンドの実装入門」で DevelopersIO 2024に登壇しました #devio2024 | DevelopersIO
  • Golang開発者のためのクリーンアーキテクチャ

    はじめに クリーンアーキテクチャは、ソフトウェア設計の分野で非常に重要な概念です。 しかし、その理解は容易ではなく、明確な正解が存在するわけではありません。 多くの人が異なる解釈を持ち、他の設計思想と混在していることもあります。 この記事では、自分なりの視点からクリーンアーキテクチャを解釈し、その整理した内容を共有します。 このアーキテクチャの目的は、システムの各層を独立させ、変更に強く、テストしやすい設計を実現することです。 この記事では、クリーンアーキテクチャの基概念、Golangでの実装方法、およびディレクトリ構成について詳しく説明します。 なお、この記事では個人的な見解を述べており、必ずしも正解を書いているわけではありません。もし誤りがあれば、ぜひご指摘いただけると幸いです。 クリーンアーキテクチャの基概念 クリーンアーキテクチャの元となったのは、ロバート・C・マーチン(通称「

    Golang開発者のためのクリーンアーキテクチャ
  • 強い思想: Go を Web 開発に採用する上で

    フラットパッケージは正義か? 私が SNS で何度か言及した以下の記事がある。 フラットパッケージ戦略は,確かに Go文化圏においては一定の支持を集めている。Go の公式リポジトリや有名ライブラリなんかも,Java などの言語に比べたらずっとパッケージ階層が浅く,ネストしていないものが多いと思う。 しかし,それも 「コードベースを小さく保つ」 を大前提としていることを忘れてはならない。 DDD やクリーンアーキテクチャといった言葉が飛び交うぐらいの規模であれば,パッケージを切ることに関して後ろめたさを感じる必要はない。 むしろ,大きなコードベースが誕生することが開発初期から簡単に予見できるような状況で, YAGNI という言葉に甘んじて設計を放棄するのは極めて悪手であると私は断言する。身を以て失敗を経験した私の口から伝えたい。

    強い思想: Go を Web 開発に採用する上で
  • Go1.21 New Features

    Go1.21 が 2023年8月9日(JST) にリリースされ、そのリリースノートやブログが公開されています。この記事では前回の Go1.20 New Features に引き続き、Go1.21 の新機能の中から気になった機能を解説していきます。 spec Go1.20 までは、メジャーリリースの一番最初のバージョンの末尾にパッチバージョンが付いておらず、次のバージョンからはパッチバージョンが付くようになっていました。 例えば Go1.20 の最初のバージョンは go1.20 で、次のバージョンからは go1.20.1, go1.20.2, ... のようにパッチバージョンがついていました。 Go1.21 からは、一番最初のバージョンが go1.21.0 のようにパッチバージョンの .0 が付くようになります。 import している package を初期化する順序が Spec に明記さ

    Go1.21 New Features
  • 🪵 Go1.21 log/slogパッケージ超入門

    はじめに 2023年8月9日(日の場合)Go1.21がリリースされました🎉。Go1.21ではさまざまな変更点や追加機能が加わります。その中でもGo標準ライブラリに導入される構造化ロギングパッケージlog/slog(以下、slog)を楽しみにしている方は多いのではないでしょうか? 稿では、slogを実際に触りつつ、機能の解説をしていきます。 TL;DR 稿の概要をスライドにもまとめているので、ご参考にして下さい。 従来のlogパッケージについて slogの説明に入る前に、Go標準のlogパッケージについて簡単に紹介する。logパッケージを用いると、 io.Writer インターフェースを実装する任意の型にログメッセージを書き込むことができる。しかし以下のような制限があった。 ログレベルをサポートしていない ログレベルはほとんどのログパッケージの定番機能の一つだが、logパッケージには

    🪵 Go1.21 log/slogパッケージ超入門
  • Goの新しい構造化ロガーを体験しよう | gihyo.jp

    logパッケージ Goには標準ライブラリとしてlogパッケージが提供されています。logパッケージで行えることはそう多くはありません。たとえば、デフォルトではログは標準エラー出力に出力されますが、log.SetOutput関数で出力先を変更できます。また、利用する関数によってログを出力した後の挙動をコントロールできます。たとえば、log.Print関数はログを出力するだけですが、log.Fatal関数はログ出力後にos.Exit(1)を呼び出します。log.Panicはログ出力後に出力したログと同じ文言を引数としてパニックを発生させます。 logパッケージでは、ログとともに関連するデータを出力したい場合は、log.Printf関数を用います。次のように、書式を指定して出力します。 log.Printf("request_url=%s request_method=%s", r.URL, r

    Goの新しい構造化ロガーを体験しよう | gihyo.jp
  • Gopher道場の動画コンテンツを完全に公開しました

    はじめに Gopher道場は、tenntennがメルペイ在職時に始まったGoを学ぶ人のための学習の場です。tenntennがメルペイを退職後、著作権周りの整理などが行われ、Go Conferenceなどを運営する一般社団法人Gophers Japanに運営が移管されました。メルペイのみなさまありがとうございました。 動画コンテンツを完全に公開しました 移管にあたり、Gopher道場のSlackに入った方にだけ公開していた動画コンテンツを一般公開することにしました。以下の再生リストからご覧いただけます。 なお、資料はこちらの古いスライドではなく、プログラミング言語Go完全入門をご覧ください。 古い資料はアップデートされませんが、プログラミング言語Go完全入門は今後もアップデートをしていきます。 動画は10時間以上あり、以下の内容を扱っています。 Goに触れる 基構文 型と関数 パッケージ

    Gopher道場の動画コンテンツを完全に公開しました
  • 並行処理の基礎を学ぼう - Enablement Workshop for Gophers

    はじめに 2023年5月10日に開催されたEnablement Workshop for Gophersで「並行処理の基礎を学ぼう」というタイトルで講義を行ないました。 Enablement Workshop for Gophersは、ナレッジワークが学生向けに提供する手を動かしながら基礎を学ぶ"Enablement"の機会です。 今回のテーマは2023年6月21日〜23日に行われるEnablement Internship for Gophersに合わせて『並行処理』です。 具体的には主に以下のような並行処理の基礎や最近または今後のアップデートについてお話しました。 ゴールーチンとチャネル syncパッケージ コンテキスト 講義の様子はYouTubeで公開されています。 ゴールーチンとチャネル Goの有名な特徴の1つとしてゴールーチンとチャネルを用いた並行処理があります。 講義では、ゴー

    並行処理の基礎を学ぼう - Enablement Workshop for Gophers
  • 【Go編】Next.js × Go × AWSでJWT認証付きGraphQLアプリとCI/CDを構築してみよう - Qiita

    # 簡単のため一部ファイルは割愛しています go-graphql-jwt-api/ ├── build/ │ ├── db/ │ └── docker/ │ ├── cmd/ │ └── main.go │ ├── pkg/ │ ├── adapter/ │ │ └── http/ │ │ ├── handler/ │ │ │      ├── graph_handler.go │ │ │ └── login_handler.go │ │ │ │ │ ├── middleware/ │ │ │     └── auht_middleware.go │ │ │ │ │ ├── resolver/ │ │ │      ├── mutation.resolvers.go │ │ │ └── query.resolvers.go │ │ │ │ │ └── route/ │ │   └── ro

    【Go編】Next.js × Go × AWSでJWT認証付きGraphQLアプリとCI/CDを構築してみよう - Qiita
  • Goとエラーハンドリング慣習について

    エラー返値が無用な条件 関数ないしメソッドの実装がオンメモリ操作のみで完結 将来も(メモリ以外の)I/O操作は追加されることがない 逆にいうと上記の条件のいずれかが達成できない可能性がある関数やメソッドはエラー返値を付与すべき。 返値エラー型はerrorで統一する 返すエラーがerrorインターフェース型でなければそのエラーは正常にハンドリングできません。またerrorインターフェースを満たす別の返値型で返してerrorインターフェース型で受け取るのも後述のトラブルの元です。 Goの実装方針に「インターフェースで利用するものもコンストラクター相当では構造体ポインタで返す」というものがありますがコンストラクタを呼ぶ側は元型にアクセスすることが多いのでこういう方針になっています。が、エラー値に関しては元型を意識せずに利用可能にするという役割があって、この実装方針は当てはまりません。 エラーチェ

    Goとエラーハンドリング慣習について
  • Amazon ECSでGoのEchoサーバを立ち上げる | RE:ENGINES

    はじめに コンテナをマネジメントする様々なサービスが登場し、コンテナを利用する敷居が下がってきています。今回はその中でも特に設定が簡単だと思われるAmazon ECSでGoのEchoサーバを立ち上げる方法を紹介します。 全体の流れ ECSで独自イメージのコンテナを立ち上げるには、以下の4つの手順が最低限必要です。 ECSで使用するロールをIAMで作成する VPCを作成する(defaultのVPCは使わない) ECRにDockerイメージをプッシュする ECSでコンテナを立ち上げる まずはこれらのサービスについて簡単に説明します。 サービスの概要 それぞれのサービスで何ができるかについて簡単に説明します。 IAM(Identity and Access Management) IAMはリソースに紐付ける事ができる権限設定を管理するためのサービスです。 IAMには「グループ」、「ユーザ」、「ロ

    Amazon ECSでGoのEchoサーバを立ち上げる | RE:ENGINES