タグ

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

タグの絞り込みを解除

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

  • 資料公開:「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 開発に採用する上で

    Go は Web 開発に向いているか? 最も向いている領域は「CLI ツール」「ミドルウェア」「マイクロサービス」だと思っている。なぜならそれらはコードベースを比較的小さく抑えることを前提としているからだ。 Go は大きなコードベースを抱えやすい設計の言語になっていない。 ミドルウェアとマイクロサービスに関しては小さく作ることが正義。 CLI ツールに関しては単一責務なツールであれば小さくなるが,複数を束ねるツールであっても Web サービス開発に比べれば考えることは少なくて済む。 Web 業界における「一般的な Web 開発」,すなわちモノリスを基とした中規模以上の開発にははっきりと 向いていない と言うべきだろう。 フラットパッケージは正義か? 私が SNS で何度か言及した以下の記事がある。 フラットパッケージ戦略は,確かに Go文化圏においては一定の支持を集めている。Go

    強い思想: 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

    ■ご案内■ 連載の背景/作成できるアプリケーション/進め方をご理解頂く上でも【環境構築編】 をご一読頂けると幸いです。 【環境構築編】 【Next.js編】 【Go編】  👈いまここです 【AWS編】 これからも頑張ってハンズオン系の記事を書いていきたいと思っているので、いいねっと思って頂けたらLGTM押していただけると励みになります! 環境構築 サンプルアプリの環境構築方法は【環境構築編】に記載しているので、そちらをご参照ください。 クリーンアーキテクチャ風なディレクトリ設計 以下の記事を参考にしつつクリーンアーキテクチャ風なディレクトリ設計をしてみました。 各階層間をインターフェースを利用して、システムの各部分を疎結合化しております。 # 簡単のため一部ファイルは割愛しています go-graphql-jwt-api/ ├── build/ │ ├── db/ │ └── dock

    【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
  • 【Go, AWS】DockerfileをECRへPushする(M1)

    はじめに 業務で使用して少し詰まった箇所があるので、忘備録の為に記事にします。 今回はECRへPushするところまでです。(長くなるので2つに分けました) 続きはこちら。 【Go, AWS】ECS(Fargate)でGoを動かす(M1) Fargate起動して動作確認までやっています。 前提 Docker、ECR、ECSの概要についてはここでは説明しないので、よく分からない方は公式のドキュメントを参照してください。 環境 go 1.17 macOS 12.0.1 M1チップ 手順 ECRのリポジトリを作成する。 ECRへPushする。 2-1.ターミナルからAWS CLIを使ってレジストリに対して Docker クライアントを認証します。 2-2.Dockerfileをbuildする。 2-3.ECRへPushする用にbuildしたimageにtagをつける。 2-4.ECRへAWS CL

    【Go, AWS】DockerfileをECRへPushする(M1)
  • 【Go, AWS】ECS(Fargate)でGoを動かす(M1)

    はじめに 【Go, AWSDockerfileをECRへPushする(M1)の続きです。 今回はFargateで動かすところまでやります。 前提 Docker、ECR、ECSの概要についてはここでは説明しないので、よく分からない方は公式のドキュメントを参照してください。 Dockerfileやmain.goの中身は前回のこちらの記事に書いてあります。 【Go, AWSDockerfileをECRへPushする(M1) 環境 go 1.17 macOS 12.0.1 M1チップ 手順 ECSクラスターを作成する。 タスク定義を作成する。 サービスを作成する。 解説 手順を解説していきます。 1. ECSクラスターを作成する。 ECSのクラスターに入り、「クラスターの作成」ボタンをタップします。 クラスターテンプレートの選択をします。今回はネットワーキングのみを選択。 クラスター名の入力と

    【Go, AWS】ECS(Fargate)でGoを動かす(M1)
  • sentry-goを実装してみる - wheatandcatの開発ブログ

    GAEのエラーは、デフォルトでGCPのロギングに出力されますが、ずっと追い辛いと思っていたのでsentry-go導入してエラー監視できるようにしてみました。 github.com Pull Request github.com 実装 Sentryはアプリのエラー監視でも使用していますがGo言語もサポートしていたので、こちらを採用しました。 Go | Sentry Documentation 実装的には上記のドキュメント通りでOKです。 ペペロミアではフレームワークにGinを採用しているので、以下のドキュメントの通り実装しました。 Gin | Sentry Documentation まず、main関数に以下を追加 ■app.go func main() { err := sentry.Init(sentry.ClientOptions{ Dsn: os.Getenv("SENTRY_DNS

    sentry-goを実装してみる - wheatandcatの開発ブログ
  • Sentry で Go 製アプリケーションのエラーを楽に管理する - JX通信社エンジニアブログ

    *1 こんにちは、サーバーサイドエンジニアの @kimihiro_n です。 今回はSentryというエラー集約管理システムをGo言語で扱う場合の知見を共有したいと思います。 Sentry とは Sentryはエラーの集約管理を行うためのシステムで、作成したアプリケーション内で発生したエラーを一括で収集して見やすく管理することができます。 sentry.io 類似のエラーをグルーピングして発生頻度を確認したり、エラーの発生状況をSlackのようなチャットツールに通知してくれたりします。 予期しないエラーが発生したとき、生のログを見なくてもSlackやWebのUIで確認出来るのはとても便利です。 バックエンドからフロントエンドまで幅広い言語に対応しているためシステムのエラーを一括で集約が可能です。 JX通信社ではエラー管理ツールとしてSentryを広く利用しており100を超えるシステムが登録

    Sentry で Go 製アプリケーションのエラーを楽に管理する - JX通信社エンジニアブログ
  • AWS SDK for Go v2のAPIをモックして単体テストを実行する | DevelopersIO

    しばたです。 前の記事でAWS SDK for Go v2を使ったツールを作った話をしましたが、このツールのテストを書くにあたり結構ハマったので共有したいと思います。 Developer Guide AWS SDK for Go v2のAPIをモックする方法自体は以下のDeveloper Guideにふつうに載っています。 後から改めて見る分には「せやな。」って感じで理解できるのですが、最初にこのドキュメントを見た際は 私のGo言語に対する理解が不足していた *1 AWS SDK for Go v1とv2でやり方が微妙に異なり、ネット上には両バージョンの手法が混在するため情報の取捨選択に手間取った という状態でかなり混乱し理解に手間取りました。 モックに必要なことを一つ一つ整理していけばそこまで難いことは無かったと今では思いますが、もう少し丁寧な説明があっても良いのかなと思うところでありま

    AWS SDK for Go v2のAPIをモックして単体テストを実行する | DevelopersIO
    lax34
    lax34 2023/05/02
  • Redirecting

  • Goのクリーンアーキテクチャで参考になりそうなもの

    はじめに Goでクリーンアーキテクチャっぽく実装したいモチベーションがあり、そのためにはコードを読むのが一番だと思ったので、参考にしていったリポジトリをまとめてみます。 観点としては スター数が比較的多いもの(400以上) READMEにアーキティクチャについての考えが明記されているもの を中心にピックアップしました。 Goの実装で参考にしたリポジトリ Goとは関係ないかもしれないが参考にしたリポジトリ おわりに 何かの参考になれば幸いです。

    Goのクリーンアーキテクチャで参考になりそうなもの
  • blank-go: Go で動く AWS Lambda 関数に入門しよう - kakakakakku blog

    AWS Lambda 関数を Go ランタイムで動かす Hello World レベルの初学者コンテンツを探していて,ドキュメントにも載っている blank-go プロジェクトがお手軽に使えて良かったので紹介したいと思う❗️初学者に教えるときに使えるぞ〜 \( 'ω')/ github.com ちなみに AWS Lambda に入門するための blank-xxx は Go 以外にも Node.js / Python / Java など多くある❗️ docs.aws.amazon.com blank-go 紹介 blank-go では AWS CLI を使って Go ランタイムで動く AWS Lambda 関数をデプロイできる.実装としては,Amazon SQS のイベント情報(実際に Amazon SQS キューと連携するのではなく event.json を渡す)や AWS Lambda

    blank-go: Go で動く AWS Lambda 関数に入門しよう - kakakakakku blog
  • Learn Go with Tests: テスト駆動開発を体験しながら Go を学ぼう - kakakakakku blog

    TDD(テスト駆動開発)を体験しながら Go を学べる学習コンテンツ「Learn Go with Tests」を紹介する❗️全てのコンテンツを実施してみて,非常に良かったのでまとめることにした💡 Go に入門できる TDD のサイクル (Red / Green / Refactor) を体験できる コンテンツは "35種類" もある 無料で学べる GitBook (GitHub) に公開されている 日語対応 英語版 📚 quii.gitbook.io 日語版 📚 andmorefine.gitbook.io コンテンツ一覧 なんと「35種類」もコンテンツがある❗️ Go fundamentals 🚢 21種類 Install GoGo をインストールする) Hello, world(Hello, World) Integers(整数) Iteration(反復、繰り返し) A

    Learn Go with Tests: テスト駆動開発を体験しながら Go を学ぼう - kakakakakku blog