並び順

ブックマーク数

期間指定

  • から
  • まで

1 - 22 件 / 22件

新着順 人気順

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

  • 強い思想: Go を Web 開発に採用する上で

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

      強い思想: Go を Web 開発に採用する上で
    • Makefile覚書: Goアプリ開発に役立ちそうな基礎知識 | フューチャー技術ブログ

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

        Makefile覚書: Goアプリ開発に役立ちそうな基礎知識 | フューチャー技術ブログ
      • 「Go言語で楽しくなるシステム開発:基礎から実践テクニック」mattn × 渋川よしき | Forkwell Press | フォークウェルプレス

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

          「Go言語で楽しくなるシステム開発:基礎から実践テクニック」mattn × 渋川よしき | Forkwell Press | フォークウェルプレス
        • どのレイヤー(層)でトランザクションを実装すべきか

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

            どのレイヤー(層)でトランザクションを実装すべきか
          • ぼくのかんがえたさいきょうの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

            • DDDを実践するためのリポジトリ層の設計(Go言語による例)

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

                DDDを実践するためのリポジトリ層の設計(Go言語による例)
              • GoCLIツール職人のためのRust入門

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

                  GoCLIツール職人のためのRust入門
                • 現場で役立つGo言語のTipsをただまとめてみた

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

                    現場で役立つGo言語のTipsをただまとめてみた
                  • Goで作ったシステムをRubyでリプレイスすることを検討してみた

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

                      Goで作ったシステムをRubyでリプレイスすることを検討してみた
                    • Go言語によるクリーンアーキテクチャの実装例紹介

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

                        Go言語によるクリーンアーキテクチャの実装例紹介
                      • 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言語の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 エンジニアブログ
                          • 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 / hatena.go #1 maku693

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

                                はてなのサービスを支えるGo / hatena.go #1 maku693
                              • 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言語のブログ
                                • 内部エラーと外部エラー、それからGoのerrorがスタックトレースを含まない理由の考察

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

                                    内部エラーと外部エラー、それからGoのerrorがスタックトレースを含まない理由の考察
                                  • “Go言語”がランサムウェア攻撃者にとって“食える言語”である理由

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

                                      “Go言語”がランサムウェア攻撃者にとって“食える言語”である理由
                                    • 【永久保存版】0からGo言語を勉強するならこのロードマップに従え! - Qiita

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

                                        【永久保存版】0からGo言語を勉強するならこのロードマップに従え! - Qiita
                                      • 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カクテル
                                        • 【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言語で外部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
                                            • 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によるアセンブラの実装)
                                              1