並び順

ブックマーク数

期間指定

  • から
  • まで

1 - 40 件 / 230件

新着順 人気順

Go言語の検索結果1 - 40 件 / 230件

  • Goで作ったシステムをRubyでリプレイスすることを検討してみた

    はじめに 弊社にはGoで作ったシステムが存在しますが、作られてから数年が経過して、メンテナンスも十分にできていない状況でした。 そこで、このシステムをリファクタリングして生産性を上げようという結論になりました。 リファクタリングにあたり、Goのままで行くのか、弊社でよく使われているRubyで行くのかを検討してみましたので、その過程を紹介したいと思います。 Rubyでリプレイスしようと思った理由 Goで動いてて言語やライブラリのバージョンアップなどメンテナンスがされてない部分はありますが、 そこを解消すればGoのままで行った方が良いのでは?と思うかもしれません。 しかし、あえてRubyでリプレイスしようと思うに至ったのは以下の点があります。 Rubyの方が開発速度があがりそう Goのリファクタリングをするのに時間がかかりそう Goのリファクタリングと機能追加でコード修正箇所が被るとスケジュー

      Goで作ったシステムをRubyでリプレイスすることを検討してみた
    • ぼくのかんがえたさいきょうのGo HTTPサーバー起動方法

      これまで何度か HTTP Server の Graceful Shutdown について記事を書きました。 Go 言語で Graceful Restart をする Go 言語で Graceful Restart をするときに取りこぼしを少なくする Go1.8 の Graceful Shutdown と go-gracedown の対応 最終的に Go 1.8 で Server.Shutdown が導入され、この件は解決を見ました。 しかし、最近「あれ?本当に正しく Server.Shutdown 使えている?」と疑問に思い、少し考えてみました。 というか ↑ の記事もまだ考慮が足りない気がする。 ぼくのかんがえたさいきょうの Go HTTP サーバー起動方法 とりあえず完成形のコード。 package main import ( "context" "log" "net/http" "os

      • ScalaにGoroutineがやってくる!非同期処理ライブラリOxで遊んだ - Lambdaカクテル

        Channelスタイルの並行処理の記述を(もちろん型安全に)可能にするライブラリOxについて調べて試してみた。結論から言うと書き味がめちゃくちゃ良くて面白い。 ソースコードも置いておく。 github.com Ox Oxとは、sttpなどの開発でお馴染のSoftwareMillによって開発されているScala用の非同期ライブラリである。まだ非常に若く、活発に開発されている。 github.com Oxの特徴は、というか目的といっても差し支えないのだが、それはChannel指向の非同期処理、つまりGoroutineをScalaの上で実現している点だ。Goユーザならすぐに理解できるだろう。 百聞は一見に如かず。こんな感じのコードを書くことができる(v0.0.25時点)。 import ox.* import ox.channels.* import scala.concurrent.durat

          ScalaにGoroutineがやってくる!非同期処理ライブラリOxで遊んだ - Lambdaカクテル
        • 内部エラーと外部エラー、それからGoのerrorがスタックトレースを含まない理由の考察

          TL;DR Goのerrorは外部エラーを表現するもので、利用者(ライブラリならアプリケーション開発者、アプリケーションならユーザー)に入力値や環境の不備を伝える目的で存在している 一方で、開発中のソフトウェアが思っていたのと違う挙動を示した場合、その調査にはソフトウェアの特性によって異なるツールを使い分ける必要があり、一筋縄では行かない 両者を分けて考えることで、よりよいエラーハンドリングへの議論が初めて進められると考える 背景 Goのerrorがスタックトレースを含まないことは度々Goの欠点として挙げられます。たしかに、一度作ってどこかにデプロイしたソフトウェアがバグっており、スタックトレースがないせいでその原因調査に手間取ったことは筆者も一度のみならず体験しています。 一方で、(しばしばベテランのプログラマから)エラーはノイズを含むべきではないと主張されることも少なくありません。 2

            内部エラーと外部エラー、それからGoのerrorがスタックトレースを含まない理由の考察
          • Nand to Tetrisで学ぶコンピュータの仕組み(Goによるアセンブラの実装)

            TL;DR 本記事は Nand to Tetris のアセンブラ実装についての解説です。Nand to Tetrisをやったことがない人でも概要とアセンブラの実装内容を理解できるように記述しています。アセンブラの実装は以下に配置しています。 Nand to Tetris とは Nand to Tetrisとは日本語では『コンピュータシステムの理論と実装』というタイトルの書籍で出版されているコンピュータサイエンスの教材です(原題: Build a Modern Computer from First Principles: From Nand to Tetris)。イスラエルにあるヘブライ大学のコンピュータサイエンス学部の教授であるNoam Nisan氏とShimon Schocken氏によって作成され、CSの教材として世界で高い評価を受けています。Courseraでも著者による動画のコース

              Nand to Tetrisで学ぶコンピュータの仕組み(Goによるアセンブラの実装)
            • どのレイヤー(層)でトランザクションを実装すべきか

              このように、層ごとに関心事の分離を行うことで、保守性の高い(変更容易性や再利用性等)アプリケーションを実現できます。 しかし、「トランザクション」においてはどうでしょうか。 トランザクションはビジネス領域においても、技術領域においても関心事がある内容です。 そういう曖昧なものは「ひとまず usecase 層に入れてしまえ」という方針になりがちです。 ですが、DB 固有の知識を usecase 層の関心事にしてしまっては、関心事の分離をするメリットが得られません。 そのため、関心事の分離を実現しつつトランザクション実装をする方法を模索してみました。 前提 1. クリーンアーキテクチャを採用している(オニオンアーキテクチャやレイヤードアーキテクチャも含む) そもそもビジネス知識と技術知識を分離していないアーキテクチャを採用している場合、メリットは得られません。 そのため、オニオンアーキテクチャ

                どのレイヤー(層)でトランザクションを実装すべきか
              • はてなのサービスを支えるGo / hatena.go #1 maku693

                hatena.go #1の登壇資料です。

                  はてなのサービスを支えるGo / hatena.go #1 maku693
                • 現場で役立つGo言語のTipsをただまとめてみた

                  はじめに こんにちは、23卒でバックエンドエンジニアをしているたかしゅんです。 私の所属しているプロダクトではサーバーサイドの開発言語としてGoを採用しております。 チームでGoの勉強会をした際にあまりにもGoの流儀や綺麗な書き方を理解していなかったので、以下の書籍を読みました。 [Go言語 100Tips ありがちなミスを把握し、実装を最適化する] この書籍から得た知見、プルリクエストのレビューで受けたアドバイス、そしてコードレビュー時に意識すべき点などを基に、知識を整理し共有したいと思います。 基礎文法は理解しているけど、実際のプロダクトで何を意識して書けば良いのかわからない方に、少しでも参考になれば幸いです。 1. コード 1.1 不用意にネストしない 可読性の悪いコードには命名、一貫性、書式など様々な原因がありますが、その中の重要な原因の一つとしてネストが関係します。 よくある例と

                    現場で役立つGo言語のTipsをただまとめてみた
                  • DDDを実践するためのリポジトリ層の設計(Go言語による例)

                    The Go gopher was designed by Renée French. Illustrations by tottie. はじめに この記事は、ドメイン駆動設計(DDD)の中核概念である「リポジトリ」についての理解を深めることを目的としています。リポジトリの基本的な役割と重要性を確認し、Go言語での実装の例を紹介します。 前提 リレーショナルデータベースからデータを取得(更新)するアプリケーションを想定しています サンプルコードは Go 言語で書かれています リポジトリとは まずは、リポジトリの定義を確認してみましょう。 リポジトリパターンとは: リポジトリは、データベースから取得したデータを構造体にマッピングし、ドメインオブジェクトにアクセスするためのインターフェースを提供します。 これは、一般的なリポジトリの理解と相違ないですね。次に DDDの文脈で、より詳しい定義をみ

                      DDDを実践するためのリポジトリ層の設計(Go言語による例)
                    • Go言語のAPIサーバーの冗長なエラーログを40%削減した話 #LayerXテックアドカレ - LayerX エンジニアブログ

                      こんにちは。バクラク申請・経費精算エンジニアの@upamuneです。先週末は30kmのトレイルレースがありましたが、今週末はフルマラソンがあるので満身創痍です。 この記事はLayerXテックアドカレ2023の22日目の記事です。 私はなぜか3日分もテックアドカレに入れてしまったのですが、2回目の今回はAPIサーバーのエラーログを40%削減した話をします。 昨日は@tataneによるバクラクの Vue3 移行戦略と詰まったポイント #LayerXテックアドカレ - LayerX エンジニアブログでした。明日は@trsによる入社エントリーです!楽しみですね。 はじめに 弊社では基本的にGo言語を利用してAPIサーバーを実装しています。エラーが発生したら、調査しやすいようにエラーログを出力して調査しやすくしていますが、1つのエラーに対して複数回の冗長なエラーログが出力されるという問題がありました

                        Go言語のAPIサーバーの冗長なエラーログを40%削減した話 #LayerXテックアドカレ - LayerX エンジニアブログ
                      • 【永久保存版】0からGo言語を勉強するならこのロードマップに従え! - Qiita

                        はじめに こんにちは!!@Sicut_studyです! 今回はGo言語の個人的に良かったと思った学習方法をGo言語を学ぶための最速ロードマップとして記事にまとめていきます! つい先日技術書典があり、改めてGo言語が注目されているというのを再実感しましたので記事を書くなら今だ!!と思いました 過去にも0からロードマップシリーズは書いていますので参考にしてみてください この記事の対象者 Go言語を勉強しよと考えている人 バックエンドの学習方法について知りたい 新しい技術を学びたい方 ロードマップ このロードマップでは0から学習をして Go言語でWebアプリの基本的なバックエンドが作れるようになる ここをゴールとして紹介しています 私の記事では何度も行っている通り、最低限のインプットにとどめてとにか実践で学習していく方針で説明していきます 今回は以下の3ステップで学習していきます 書籍でインプッ

                          【永久保存版】0からGo言語を勉強するならこのロードマップに従え! - Qiita
                        • Amazon Verified Permissionsとgolangで認可処理を実装してみた - Techtouch Developers Blog

                          Amazon Verified Permissions とは 従来の認可処理 Cedar 言語の使い方 基本的な記述方法 RBAC の例 ABAC の例 golang で動かしてみる 1. ポリシーストアを AWS コンソールから作成する 3. サンプルアプリケーションの実装 最後に こんにちは、2023年5月にバックエンドエンジニアとしてジョインした yamanoi です。 最近は Cloudflare スタックに注目しており、新機能を触ったりアップデートを眺めたりしています。 今回は先日 GA (一般利用可能)になった AWS のサービス Amazon Verified Permissions を、 golang で実装した簡単なサンプルを交えて紹介したいと思います。 Amazon Verified Permissions とは Amazon Verified Permissions

                            Amazon Verified Permissionsとgolangで認可処理を実装してみた - Techtouch Developers Blog
                          • Go言語によるクリーンアーキテクチャの実装例紹介

                            はじめに CastingONEでバックエンドエンジニアをやっている清水です。 この記事ではクリーンアーキテクチャについて学んだけど具体的にどのように実装すれば良いのかという悩みがあったので実装例をまとめてみた記事になります。 クリーンアーキテクチャで実装されたサンプル実装のうちGitHubのスター数が多いリポジトリをピックアップして、設計内容を紹介していきます。 具体的にどこにどんな実装をするべきなのかも含めて紹介していきます。 処理を一部省略して紹介するため実際の処理内容を確認したい場合はGitHubでご確認お願いします。 クリーンアーキテクチャとは クリーンアーキテクチャは、ソフトウェア設計の原則を適用して、依存性の方向性を逆転させ、ビジネスロジックから詳細(フレームワークやデータベース)を分離するアーキテクチャパターンです。これにより、テストしやすく、メンテナンス性が高く、柔軟性のあ

                              Go言語によるクリーンアーキテクチャの実装例紹介
                            • Goで非推奨(Deprecated)や撤回(Retracted)を明示する方法 - Plan 9とGo言語のブログ

                              最近のGoには、関数やパッケージを非推奨と扱う方法があります。まとまっていると便利かなと思うので、種類ごとにまとめてみました。GoDocコメントを多用するので、GoDocを書き慣れていない場合は以下も参考にしてください。 blog.lufia.org 関数と型を非推奨にする 関数コメントに、// Deprecated: ではじまる段落を追加します。 // Parse parses a string of the form <status>=<status>. // // Deprecated: Use ParseStatusMap instead. func Parse(src string) (map[Status]Status, error) { ... } 型の場合も同様に。 // Error is the interface that wraps Error method. //

                                Goで非推奨(Deprecated)や撤回(Retracted)を明示する方法 - Plan 9とGo言語のブログ
                              • Makefile覚書: Goアプリ開発に役立ちそうな基礎知識 | フューチャー技術ブログ

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

                                  Makefile覚書: Goアプリ開発に役立ちそうな基礎知識 | フューチャー技術ブログ
                                • “Go言語”がランサムウェア攻撃者にとって“食える言語”である理由

                                  セキュリティ企業のSentinelOneによると、ランサムウェアグループは「Windows」搭載デバイスから「Linux」や「VMware ESXi」(以下、ESXi)のホストに狙いを移し、潜在的なターゲットの範囲を広げている。 SentinelOneのシニア脅威リサーチャーであるジム・ウォルター氏は2023年8月23日のブログ投稿で「サイバー犯罪者はContiやLockbit、Babukなどのランサムウェアファミリーからのコードを修正しながら再利用して、異なるプラットフォームで動作するマルウェアを使用した新しい攻撃手法を生み出している(注1)」と述べた。 Go言語の登場によってランサムウェア攻撃は効率化した サイバー攻撃者はRustやGoなどのプログラミング言語を使い、マルウェアを複数のプラットフォームに迅速に移植している。それに加え、WindowsやLinux、ESXiのシステムに対す

                                    “Go言語”がランサムウェア攻撃者にとって“食える言語”である理由
                                  • GoCLIツール職人のためのRust入門

                                    三連休中にこんなツールを作った。 普段はGoでCLIツールを書いているけど、このツールで初めてRustを本格的に使ったのでその際に得た知見を元にGoでCLIを作っている人向けにとりあえずRustでツールが作れる状態になれることを目指して、CLIツールを作るときによく使っている処理やRustならではの構文などを中心に書いてみた。 この記事を通して「なぁ~んだ。案外Rustでもサクッとツール作れそうじゃん」とか「Rustにも意外とツール向けのライブラリとかあるんだなぁ」とか思って貰えると嬉しい限り。

                                      GoCLIツール職人のためのRust入門
                                    • 強い思想: Go を Web 開発に採用する上で

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

                                        強い思想: Go を Web 開発に採用する上で
                                      • 【Docker】Dockerのbest practicesをGo言語で - Qiita

                                        はじめに これはDockerのbest practicesをGo言語のイメージを例にやってみた、という内容の記事です。 Dockerの使い方は覚えたけれど、どのようなDockerfileにすれば良いのかわからない。という方に1つの例を提供することを目的としています。 環境 Docker: Docker version 20.10.23, build v20.10.23 Dockerfileサンプル Dockerのbest practicesを参考に作成したDockerfileがこちらになります。 FROM golang:1.21.0-bullseye AS base WORKDIR /app COPY go.mod go.sum ./ RUN --mount=type=cache,target=/go/pkg/mod/ \ go mod download FROM base AS dev

                                          【Docker】Dockerのbest practicesをGo言語で - Qiita
                                        • 「Go言語で楽しくなるシステム開発:基礎から実践テクニック」mattn × 渋川よしき | Forkwell Press | フォークウェルプレス

                                          【ちょっと宣伝】上級エンジニア特化のキャリア支援サービスをはじめました! 市場の変動がキャリアへの不確実性をもたらす昨今、これまで以上にエンジニアに寄り添いたいという想いから、上級エンジニア特化のキャリア支援サービスをはじめました。スポーツ選手のエージェントのようにエンジニアの立場で次のキャリアを提案いたします。一般的な転職エージェントのように募集中の案件を紹介するだけでなく、あなたの理想のキャリア実現に向けて、ニーズがありそうな企業へ交渉し、望ましい案件を創出する働きかけも行います。無料で利用できますので、お気軽にお申し込みください。

                                            「Go言語で楽しくなるシステム開発:基礎から実践テクニック」mattn × 渋川よしき | Forkwell Press | フォークウェルプレス
                                          • Go言語で外部APIを呼び出しとJSONの取り扱いについて - Qiita

                                            はじめに 今日はGo言語を用いて外部APIを呼び出し、その結果をJSON形式で取り扱う方法について記載します。 これはWebサービスを開発する際によく用いられる技術で、非常に役立つスキルです。 必要なパッケージのインストール まずはじめに、net/httpとencoding/jsonという2つのパッケージが必要となります。これらはGo言語の標準ライブラリに含まれているので、追加でインストールする必要はありません。 外部APIの呼び出し まず、net/httpパッケージを使って外部APIを呼び出します。http.Get関数を使うと、HTTPのGETリクエストを送ることができます。 以下に簡単な例を示します。 package main import ( "fmt" "net/http" ) func main() { // http.Getを用いて外部APIを呼び出す resp, err :=

                                              Go言語で外部APIを呼び出しとJSONの取り扱いについて - Qiita
                                            • Linuxルーターを狙ったGo言語で書かれたマルウェアGobRAT - JPCERT/CC Eyes

                                              JPCERT/CCでは、2023年2月頃、国内のルーターにマルウェアを感染させる攻撃を確認しています。今回は、JPCERT/CCが確認した攻撃および使用されたマルウェアGobRATの詳細について解説します。 マルウェア実行までの攻撃の流れ 初めに攻撃者はWEBUIが外向けに開いているルーターを狙って脆弱性などを使用し、各種スクリプトを実行した後、最終的にマルウェアGobRATを感染させます。図1は、マルウェアGobRATがルーターに感染するまでの攻撃の流れです。 Loader Script には主に次の機能があり、各種スクリプトの生成やGobRATのダウンロードを行うなど、ローダーの役割を担っています。なお、バックドア用と推測されるSSH公開鍵は Loader Script 内にハードコードされています。 Loader Script はcrontabを使って Start Script のフ

                                                Linuxルーターを狙ったGo言語で書かれたマルウェアGobRAT - JPCERT/CC Eyes
                                              • Go言語入りユニクロTシャツ、Akamaiが提供 コードを動かしてみた人も

                                                ユニクロのチャリティTシャツ「PEACE FOR ALL」シリーズに、CDN事業を手掛けるアカマイ・テクノロジーズが提供するモデルが仲間入りした。Go言語のコードが書かており、そのコードを写して動かしたエンジニアも現れた。 青色と白の文字でコードが書かれたブラックのシャツ。アカマイは「このデザインに使われている『texture』というコードは、デジタル体験の裏側にある共通言語を表現しています」と紹介している。 フリーエンジニアの@GL-Kageyamaさんは、Tシャツに書かれたコードを読み解き、ChatGPTで補完して動かすことに成功。GitHubに公開している。

                                                  Go言語入りユニクロTシャツ、Akamaiが提供 コードを動かしてみた人も
                                                • Go の goroutine / channel は全然簡単じゃないので errgroup を使おう - 音速きなこおはぎ

                                                  技術記事です。今日は Go の golang.org/x/sync/errgroup についてです。 TL; DR Go が並行処理を得意とするのは事実だけど、とはいえ正しく使うのは難しい(特に channel)。 errgroup なら「並行でダウンロードする」のような頻出パターンをとても簡単かつ安全に使えるので、まずはこれで美味しいところだけ頂いてしまおう。 重い処理を並行にすればあなたのプログラムはカジュアルに数倍速くなる。 多分 errgroup だけで現実の要件の85%くらいはカバーできるはず。 channel も含めてちゃんと使いこなしたいと思ったら、Go 言語による並行処理 がおすすめです。 errgroup とは ドキュメントはここを参照してください。説明を読むよりコード例で見たほうが早いと思うのでこちらをどうぞ。 package main import ( "fmt" "

                                                    Go の goroutine / channel は全然簡単じゃないので errgroup を使おう - 音速きなこおはぎ
                                                  • Go言語におけるエラーハンドリングベストプラクティス

                                                    もう散々書かれている話だけど、Go に触るたびに毎回調べ直す羽目になっているので、忘備録としてまとめておく 結論 errors パッケージは使わない その代わりに golang.org/x/xerrors パッケージを使う エラーを自分で作成するときは xerrors.New もしくは xerrors.Errorf を使う 関数から受け取ったエラーを返すときは xerrors.Errorf(": %w", err) を使う コメントを付与したいときは xerrors.Errorf("comment: %w", err) エラーの出力は fmt.Printf("%+v\n", xerrors.Errorf(": %w", err)) こんな感じ 具体例 package main import ( "fmt" "os" "strconv" "golang.org/x/xerrors" ) fu

                                                      Go言語におけるエラーハンドリングベストプラクティス
                                                    • フリーランスITエンジニアの案件数が多い言語、1位Java、2位JavaScript、3位PHPなど。Go言語は人材不足。レバテックフリーランス調べ

                                                      フリーランスITエンジニアの案件数が多い言語、1位Java、2位JavaScript、3位PHPなど。Go言語は人材不足。レバテックフリーランス調べ ITエンジニア向けの転職や求人などの支援サービスをに提供するレバテックは、フリーランスのITエンジニア向けに案件紹介などを手がける「レバテックフリーランス」に蓄積された2万件以上のフリーランス案件のデータを元に、プログラミング言語別の案件数や月単価のランキングを発表しました。 集計期間は2021年10月から2022年10月までの1年間です。 発表によると、フリーランスのITエンジニア向けに案件数が多いプログラミング言語の1位はJavaで5564件、次いで2位がJavaScriptで3902件、3位がPHPで2836件となっています。 1位のJavaは、Webアプリケーションやゲームなどの開発に用いられることは比較的少なく、主に業務アプリケーシ

                                                        フリーランスITエンジニアの案件数が多い言語、1位Java、2位JavaScript、3位PHPなど。Go言語は人材不足。レバテックフリーランス調べ
                                                      • Go言語プログラミングエッセンス

                                                        この本の概要 Go言語ユーザーとして,「もう一段レベルアップしたい」「開発に使いたい」と思っている方に向けた,Go言語の解説本です。関数やパッケージの使い方,並行処理,テストといった基本的なトピックにおいて,「こう書くと綺麗になる」「こう書くとパフォーマンスが上がる」といったエッセンスを紹介します。後半ではCLIアプリ/Webアプリの開発手順や,現場で使われている便利なパッケージなど,著者が業務やOSSの開発で培った技術をふんだんに紹介します。 こんな方におすすめ Go言語の入門を終え,さらに深く学びたい人 第1章 プログラミング言語Goとは 1.1 Goの簡単な歴史 1.2 Goの立ち位置 1.3 Goが利用される場面 標準でUTF-8をサポート マルチプラットフォーム 並行処理の扱いやすさ ストリーム指向 シングルバイナリ 1.4 教育用途としてのGo 1.5 なぜGoが使われるのか

                                                          Go言語プログラミングエッセンス
                                                        • GitHub - usememos/memos: A lightweight, self-hosted memo hub. Open Source and Free forever.

                                                          A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

                                                            GitHub - usememos/memos: A lightweight, self-hosted memo hub. Open Source and Free forever.
                                                          • 業務アプリケーション開発にGoを採用する理由

                                                            この記事は MICIN Advent Calendar 2022 の24日目の記事です。 前回は熊沢さんの2つの新規事業立ち上げで経験したタイプ別MVP検証の進め方でした。 はじめに 本記事では、業務アプリケーションのバックエンドとしてGoを採用することによるメリットを、実際の業務経験を振り返りつつ考察してみます。 近年では多くの企業でGoが採用されています。その採用理由は、「並行処理をたくさん行いたいから」「学習コストが低いから」「フットプリントが小さくコンテナベースのプラットフォームに向いてるから」「Googleが使ってるから」「高速だから」といったところが挙げられるんじゃないでしょうか。 一方で、単なるモノリスなAPIとしてGoを選ぶ必要はないんじゃないのか、といった声もよく聞きます。「初期フェーズはスピード重視でRuby on Railsが最強だ」「枯れた技術であるJava + S

                                                              業務アプリケーション開発にGoを採用する理由
                                                            • ecspresso v2とTerraform null_resourceで一発構築 - KAYAC engineers' blog

                                                              SREチームの藤原です。 この記事はTech KAYAC Advent Calendar 2022 5日目の記事です。 この記事では筆者が開発しているAmazon ECSデプロイツール ecspresso (v2)と、Terraformのnull_resourceを組み合わせて、 TerraformによるECS関連リソース作成とecspressoによるECSサービスのデプロイを一発で実行する手法について説明します。 ecspresso とは github.com ecspressoは筆者(fujiwara)が開発している、Amazon ECS用のデプロイツール(OSS)です。ECSにタスク定義とサービスをデプロイするツールはAWSが作っているものを含めて世の中に多々ありますが、ecspressoは次のような特徴を持っています。 Go 言語で書かれた OSS (MIT LICENSE) です

                                                                ecspresso v2とTerraform null_resourceで一発構築 - KAYAC engineers' blog
                                                              • Go言語のcomparableには3つの意味がある

                                                                注意 この記事の内容はGo1.19までの言語仕様には当てはまりますが、Go1.20以降の言語仕様には当てはまりません。 Go1.20以降でどうなったかについては、次の記事を参照してください。 タイトルの通り、Go言語のcomparableには3つの意味があります。 普段意識する必要はないと思いますが、混乱することがあるかもしれないのでまとめました。 とりあえずGo言語のcomparableが多義的になっているということだけ頭の片隅においておき、実際に混乱したときにこの記事の残りの部分を読めば十分だとおもいます。 要約 Go言語には次の3箇所で"comparable"ということばが現れますが、それぞれ指す範囲が少しずつ異なります。 言語仕様書 型制約 reflectパッケージ この微妙な違いは、interface型のcomparabilityの複雑さからやむを得ず生じているものです。 3つの

                                                                  Go言語のcomparableには3つの意味がある
                                                                • user-defined iteration using range over func values · golang/go · Discussion #56413

                                                                  There is no standard way to iterate over a sequence of values in Go. For lack of any convention, we have ended up with a wide variety of approaches. Each implementation has done what made the most sense in that context, but decisions made in isolation have resulted in confusion for users. In the standard library alone, we have archive/tar.Reader.Next, bufio.Reader.ReadByte, bufio.Scanner.Scan, con

                                                                    user-defined iteration using range over func values · golang/go · Discussion #56413
                                                                  • Go言語でポータブルなCI/CDパイプラインが定義可能に。「Dagger」がGo SDKを発表

                                                                    CI/CDパイプラインをポータブルにする「Dagger」をGo言語に対応させる「Go SDK」が発表されました。これによりGo言語でどこでも動くポータブルなCI/CDパイプラインの定義が可能になります。 Introducing the Dagger Go SDK: a new way to develop your CI/CD pipelines as code, and run them in containers anywhere. https://t.co/7riHAwUSMO pic.twitter.com/mEwrZySbLp — dagger (@dagger_io) October 25, 2022 CI/CDがローカルPCでもGitHubでもCircleCIでも実行可能 Daggerはソフトウェアのビルド、テスト、デプロイを行う一連のCI/CDパイプラインをポータブルにする

                                                                      Go言語でポータブルなCI/CDパイプラインが定義可能に。「Dagger」がGo SDKを発表
                                                                    • APIを作りながら進むGo中級者への道:さきさん文庫

                                                                      この本では、実際に手を動かしてブログサービス用のAPIサーバーを作りながら ・net/httpやdatabase/sqlのような、動く「もの」を作るために必要なGoの標準パッケージ ・HTTP通信やレイヤーアーキテクチャ・テストの実行・エラー処理の概念といった、プロダクト開発には必要なIT基礎知識 ・チャネルやゴールーチン、といった中級者向けの文法とその使いどころ を学ぶことができます。 「Goの基本的な文法はわかったぞ!次は何をやろうかな?何ができるかな?」という方におすすめです。 【もくじ】 イントロダクション 第1章 HTTPサーバー 第2章 構造体と json の扱い方 第3章 データベースの扱い方 第4章 ユニットテスト (基礎編) 第5章 サービス層の作成 第6章 アーキテクチャ大改装 第7章 エラー処理 第8章 ユニットテスト (応用編) 第9章 ミドルウェアによるロギング

                                                                        APIを作りながら進むGo中級者への道:さきさん文庫
                                                                      • Golangのインターフェースは拡張していいものなのか? - NullPointer's

                                                                        早速Golangで頭を抱えている Goには「このインターフェースを実装するぞ!」という明示的な宣言がない。errorインターフェースがいい例だが、Error() stringというシグニチャのメソッドがある構造体は何でもerrorとして扱うことできるようになる。ダックタイピングのような挙動を示す そんなインターフェースの型によって分岐する単純なコードを考える type Animal interface { Bark() string } // animalを実装したCat type Cat struct {} func (cat *Cat) Bark() string { return "Nyan" } // animalを実装してないApple type Apple struct{} func whatIs(x any) { switch x.(type) { case Animal:

                                                                          Golangのインターフェースは拡張していいものなのか? - NullPointer's
                                                                        • 「詳解Go言語Webアプリケーション開発」を写経しながら読んでみた|レスキューナウ(24時間365日 災害・危機対応をサポート)

                                                                          こんにちは。レスキューナウシステム部のコウです。 レスキューナウではバックエンドにGo言語を使用しています。直近のキャリアはアプリエンジニアなんですが、プロジェクトの開発全般を見ることになったのでGo言語をキャッチアップしているところです。 Goの書籍は色々とあるのですが、Webアプリ開発にちょうど良いのがないかなーと思ってた時に「詳解Go言語Webアプリケーション開発」というドンピシャな本を見つけてたので写経しながら読んでみました。 本書の概要本書は前半でWebアプリケーション開発の事前知識としてGoの設計思想や知っていると便利な標準パッケージの機能について紹介し、後半でGoを用いたWebアプリケーションのコードをハンズオン形式で解説します。 また、本書ではベテランGopherが暗黙知的に行なっているイディオムの解説や、標準パッケージやメジャーなサードパーティOSSを使った実践的なコーデ

                                                                            「詳解Go言語Webアプリケーション開発」を写経しながら読んでみた|レスキューナウ(24時間365日 災害・危機対応をサポート)
                                                                          • GolangでCognito認証をしてトークンをjwt形式にする - Qiita

                                                                            できること 認証はuserPool、認可はIdentitiyPoolで行われ、それぞれ別のリソース 認証 Cognitoで管理されているユーザー情報で認証ができる 外部プロバイダー(Azure、Google、Facebook)と連携が可能 ユーザー認証が成功すると、トークンが発行され、アプリケーション側でトークンの検証を行うことで認証機能をつくることができる UserPoolで行われる 認可 一時的な権限を与える チケットを渡すイメージ Cognitoではグループや属性ごとにIAMRoleを割り振ったりすることができる IndentityPoolで行われる Cognito設定 ALLOW_ADMIN_USER_PASSWORD_AUTHにチェックが必要 AppClient作成時に、ClientSecretを使うのチェックを外す サンプルコード package main import ( "

                                                                              GolangでCognito認証をしてトークンをjwt形式にする - Qiita
                                                                            • 【Go言語】アスキーアートでダンジョンから脱出するゲームを作ってみた - 虎の穴開発室ブログ

                                                                              こんにちは! 虎の穴ラボのA.Mです。 この記事は「虎の穴ラボ 夏のアドベントカレンダー」の13日目の記事です。 12日目ははっとりさんによる「いろいろなObserver APIの紹介」が投稿されました。 14日目はおっくんさんによる「位置情報 AR にスマホのブラウザだけでチャレンジ」が投稿されます。こちらもぜひご覧ください。 今回は「見た目でわかるビジュアルネタ5連発」がテーマということで、UNIXターミナル上で動作するシンプルな脱出ゲームをGo言語で作ってみましたので、ご紹介したいと思います。 目次 目次 前提 開発・実行環境 ゲーム概要 ゲームの起動手順 注意事項 マップ構成 実際に実装してみる ディレクトリ構成 オブジェクト(構造体)の定義 Room:ダンジョンの構成要素 Dungeon:ダンジョン Player:プレイヤー 肝となる仕組み・ライブラリ システムコマンドの実行 タ

                                                                                【Go言語】アスキーアートでダンジョンから脱出するゲームを作ってみた - 虎の穴開発室ブログ
                                                                              • 少しずつ育てるGo言語のプロジェクト構成

                                                                                23/9/21追記:この記事を読む前に ついにGoチームから、プロジェクト構成に関するガイドが公開されました! 本記事を読んでくださることも大変嬉しいですが、ぜひこちらのガイドもご一読ください! この記事は何 Go言語を書いたことがある方も、興味はあるけど触ったことがない方もこんにちは。 Goに限った話ではないと思いますが、ガリガリコードを書いていて、あるタイミングで気になるのがプロジェクト構成(ここではディレクトリ構成の意図)ではないでしょうか? それを裏付けるかのように、Go界隈では以下のリポジトリが話題に上がることがあります。Star数すごいですね😇 リポジトリ名から公式感が漂いますが、そういう訳ではないのがミソです。 こちらのリポジトリ冒頭にも記載されていますが、次の点に留意する必要があるでしょう。 これは、Goアプリケーションプロジェクトの基本的なレイアウトです。これは、コアと

                                                                                  少しずつ育てるGo言語のプロジェクト構成
                                                                                • GoでWebアプリケーションを作る | IIJ Bootcamp

                                                                                  # GoでWebアプリケーションを作る # 0. この講義について ( 5 min ) # 0.1. 目的 あなたがプログラミングを行う際の選択肢として、Goを挙げられる為の第一歩となること より、知らない人に知ってもらうことを重要視しています # 0.2. 対象者 想定レベルは以下の通りです。 ls, cd 程度のLinuxファイル操作が行える curl の操作が行える 実行形式ファイル(.exeなど)という存在を知っている if, for, switch case などの、割と多くの言語で近い表現のある構文を知っている 関数、引数、戻り値 というキーワードを知っている 出来ると理解が捗るスキルは以下の通りです。 クラス、メソッド というキーワードを知っている どんな言語(COBOL, Javascript, bash, python, ...) でも良いので、簡単なコーディングを行った