モリユウキ|YM202110

モリユウキ|YM202110

マガジン

記事一覧

固定された記事

noteを再開します #432

1ヶ月ほど更新停止していましたが、また再開したいと思います。 今回はそのご報告と、この1ヶ月で色々あり、考え方も少し変わったので自分なりに整理しようと思います。 …

Golang_並行処理とMutex #472

並行プログラミングにおいて、複数のゴルーチンが同じメモリ領域にアクセスしようとするとデータ競合が発生する可能性があります。Golangでは、このような競合を防ぐために…

Golang_ゴルーチン&チャネルとselectとsync.WaitGroup #471

Golangは、シンプルかつ強力な並行処理機能を提供します。並行処理の要であるゴルーチンについて以下の記事で整理しました。 この記事ではこれを更に深掘りし、並行処理を…

Golang_ゴルーチンとチャネル #470

Golang(Go)は並行プログラミングのために設計されたプログラミング言語で、その中心にあるのがゴルーチンとチャネルという強力な機能です。それぞれについて説明し、具体…

Golang_fmt.PrintlnとStringerインターフェース #469

fmt.Stringerインターフェースは、標準ライブラリのfmtパッケージで定義されているインターフェースで、Stringメソッドを持ちます。このStringメソッドは、その型のインス…

Golang_インターフェースとは #468

クラスという概念がないGolangにおいて、インターフェースによってクラスに近いことが実現できます。インターフェースを語るにおいて、Golangにおける「メソッド」について…

Golang_関数とクロージャ #467

Golangの関数はクロージャをサポートしています。これにより、コードの再利用性と柔軟性を高めることが可能です。それぞれに関して整理していきたいと思います。 Golangの…

Golang_fmt.Printfのチートシート #466

GolangでもPrint出力があり、特にデバッグで便利そうなfmt.Printfではフォーマット指定子を使って変数の出力方法をコントロールできます。指定子が多いのでチートシート的…

Golang_mapとカンマOKイディオム#465

他の多くのプログラミング言語と同様、Golangにおいてもmapが存在します。かつ、Python等にはないカンマOKイディオムという便利な書き方もできるので、そのあたりを整理し…

GolangとgRPC #464

Goのキャッチアップを進めていて、GoではgRPCが使用されることが多い、という情報を得たので少し寄り道して整理してみます。 gRPCはオープンソースのAPI アーキテクチャお…

Golang_switch文とforのラベル #463

C由来の多くの言語にあるように、Go言語にもswitch文があります。 Go言語のswitch文は「フォールスルー」しないという特徴があります。つまり一致するcaseが見つかれば以…

Golang_forとifと処理時間の計測 #462

Golangのforとifについて簡単にまとめつつ、処理時間の計測方法についても触れたいと思います。といってもこの辺はJavaScript等の他言語と似ているので、難しくはありませ…

AWS_RDSからSnowflakeへのデータ投入を自動化する #461

RDS (MySQL)に保存しているデータを一部抽出してSnowflakeに保存する処理を自動化する方法についてまとめます。 Step FunctionsとLambda、S3を使用して段階的に処理してい…

Golang_ポインタ型と参照型 #460

前回の記事でGolangの参照渡し(ポインタ型)について整理しました。 その中で、参照渡しを使う場面の1つで「他の参照型を使う場合」を紹介しています。上の記事では簡単…

Golang_変数の値渡しとポインタの理解 #459

Golangにおいて、関数の引数として変数を渡す方法は主に二つあります。 値渡し 参照渡し(ポインタを使用) これらの概念は他の多くのプログラミング言語と共通していま…

Golang_書籍紹介と基本的なコマンド #458

新しい職場で使うGolangのキャッチアップを始めており、一先ずオライリーの書籍を2冊読み切りました。せっかくなのでそれぞれに対して触れつつ、Goに関するアウトプット第…

noteを再開します #432

noteを再開します #432

1ヶ月ほど更新停止していましたが、また再開したいと思います。

今回はそのご報告と、この1ヶ月で色々あり、考え方も少し変わったので自分なりに整理しようと思います。

怒涛の10-11月本当に色々ありました。。。

妻と長男が乗った自転車が車にぶつかられたり(軽傷です)、次男がなぜか右目周辺ばかり怪我したり(軽傷です)、初めて健康診断で引っかかったり(結局異常なし)。。。

そんなこんなで一度心身を

もっとみる
Golang_並行処理とMutex #472

Golang_並行処理とMutex #472

並行プログラミングにおいて、複数のゴルーチンが同じメモリ領域にアクセスしようとするとデータ競合が発生する可能性があります。Golangでは、このような競合を防ぐためにsync.Mutexが提供されています。

Goの公式チュートリアルである「A Tour of Go」の最後の演習課題でちょうどよいものがあったので、Mutexの説明を兼ねて整理しておきます。

Mutexとは?Mutexは、複数のゴ

もっとみる
Golang_ゴルーチン&チャネルとselectとsync.WaitGroup #471

Golang_ゴルーチン&チャネルとselectとsync.WaitGroup #471

Golangは、シンプルかつ強力な並行処理機能を提供します。並行処理の要であるゴルーチンについて以下の記事で整理しました。

この記事ではこれを更に深掘りし、並行処理を効率的に管理するために重要なselect構文とsync.WaitGroupについて詳しく解説します。

select構文複数のチャネル操作を待機し、最初に準備ができた操作を実行するためのものです。これにより、非同期のチャネル通信を効

もっとみる
Golang_ゴルーチンとチャネル #470

Golang_ゴルーチンとチャネル #470

Golang(Go)は並行プログラミングのために設計されたプログラミング言語で、その中心にあるのがゴルーチンとチャネルという強力な機能です。それぞれについて説明し、具体的な使い方をまとめてみます。

ゴルーチンとは?ゴルーチンは、Goでの軽量なスレッドです。ゴルーチンを使うことで、簡単に並行処理を実装することができます。ゴルーチンは、goキーワードを使って起動されます。

以下のようにすると、「g

もっとみる

Golang_fmt.PrintlnとStringerインターフェース #469

fmt.Stringerインターフェースは、標準ライブラリのfmtパッケージで定義されているインターフェースで、Stringメソッドを持ちます。このStringメソッドは、その型のインスタンスを文字列として表現するためのカスタムフォーマットを提供します。

fmt.Stringerインターフェース

fmt.Stringerインターフェースは、たった1つのメソッドString()を持ちます。このメ

もっとみる
Golang_インターフェースとは #468

Golang_インターフェースとは #468

クラスという概念がないGolangにおいて、インターフェースによってクラスに近いことが実現できます。インターフェースを語るにおいて、Golangにおける「メソッド」について先に軽く触れておきます。

Golangのメソッドとはメソッドとは特定の型に紐づいた関数を指します。構造体や任意のカスタム型にメソッドを定義できます。

例えば構造体ManにShowAgeメソッドを関連付けてみます。

type

もっとみる
Golang_関数とクロージャ #467

Golang_関数とクロージャ #467

Golangの関数はクロージャをサポートしています。これにより、コードの再利用性と柔軟性を高めることが可能です。それぞれに関して整理していきたいと思います。

Golangの関数Golangにクラスの概念はありませんが、他のプログラミング言語と同様に関数は存在しています。

基本的な関数

基本的な構文は以下の通りです。

func functionName(parameter1 type1, p

もっとみる
Golang_fmt.Printfのチートシート #466

Golang_fmt.Printfのチートシート #466

GolangでもPrint出力があり、特にデバッグで便利そうなfmt.Printfではフォーマット指定子を使って変数の出力方法をコントロールできます。指定子が多いのでチートシート的にまとめたいと思います。

fmt.Printfのチートシートフォーマット指定子はfmtパッケージの中でもPrintfで使用します。

基本的なフォーマット指定子

%d : 整数を出力

%f : 浮動小数点数を出力

もっとみる
Golang_mapとカンマOKイディオム#465

Golang_mapとカンマOKイディオム#465

他の多くのプログラミング言語と同様、Golangにおいてもmapが存在します。かつ、Python等にはないカンマOKイディオムという便利な書き方もできるので、そのあたりを整理したいと思います。

Mapとはmapは、キーと値のペアを格納するデータ構造です。キーで値にアクセスするのが非常に効率的で、多くのプログラミング言語で使用されています。Golangのmapは、ハッシュテーブルとして実装されてい

もっとみる
GolangとgRPC #464

GolangとgRPC #464

Goのキャッチアップを進めていて、GoではgRPCが使用されることが多い、という情報を得たので少し寄り道して整理してみます。

gRPCはオープンソースのAPI アーキテクチャおよびシステムで、REST等とよく比較されます。

RPCは Remote Procedure Call の略で、その名の通りリモート(別サーバー)で動作している特定のプロシージャ(機能)を呼び出して使用できます。gRPC

もっとみる
Golang_switch文とforのラベル #463

Golang_switch文とforのラベル #463

C由来の多くの言語にあるように、Go言語にもswitch文があります。

Go言語のswitch文は「フォールスルー」しないという特徴があります。つまり一致するcaseが見つかれば以降は実行されず、breakは不要です。一方で、breakで明示的に停止することも可能で、forのラベルと組み合わせるとその意味が出てきます。

それぞれコード例と共に見ていきたいと思います。

switchの基本構文基

もっとみる
Golang_forとifと処理時間の計測 #462

Golang_forとifと処理時間の計測 #462

Golangのforとifについて簡単にまとめつつ、処理時間の計測方法についても触れたいと思います。といってもこの辺はJavaScript等の他言語と似ているので、難しくはありません。

for文の基本構文基本は以下です。

for 初期化ステートメント; 条件式; 後処理ステートメント { // ループ処理}

例として、1から10までの数字を足し合わせるコードです。

sum := 0f

もっとみる
AWS_RDSからSnowflakeへのデータ投入を自動化する #461

AWS_RDSからSnowflakeへのデータ投入を自動化する #461

RDS (MySQL)に保存しているデータを一部抽出してSnowflakeに保存する処理を自動化する方法についてまとめます。

Step FunctionsとLambda、S3を使用して段階的に処理しています。

Step Fuctionsの定義以下のように定義できます(ちょこちょこマスキングを入れています)。

Slackに開始メッセージを通知

LambdaでRDSからデータ抽出してS3へts

もっとみる
Golang_ポインタ型と参照型 #460

Golang_ポインタ型と参照型 #460

前回の記事でGolangの参照渡し(ポインタ型)について整理しました。

その中で、参照渡しを使う場面の1つで「他の参照型を使う場合」を紹介しています。上の記事では簡単に触れる程度でしたが、ここで少し掘り下げてみたいと思います。

ポインタ型とは参照型について理解を深める前に、ポインタ型の概要を改めて掴んでおきます。

前回の記事で触れたように、ポインタ型は変数のメモリアドレスを格納するデータ型で

もっとみる
Golang_変数の値渡しとポインタの理解 #459

Golang_変数の値渡しとポインタの理解 #459

Golangにおいて、関数の引数として変数を渡す方法は主に二つあります。

値渡し
参照渡し(ポインタを使用)

これらの概念は他の多くのプログラミング言語と共通していますが、Golangにおける挙動を理解するため、それぞれの使い方と利点についてまとめます。

変数がメモリに保存されている状態ポインタとは、ある値が保存されているメモリ内の位置を表す変数です。それを理解するためにも、まずはメモリに値

もっとみる
Golang_書籍紹介と基本的なコマンド #458

Golang_書籍紹介と基本的なコマンド #458

新しい職場で使うGolangのキャッチアップを始めており、一先ずオライリーの書籍を2冊読み切りました。せっかくなのでそれぞれに対して触れつつ、Goに関するアウトプット第一弾として基本的なコマンドを整理したいと思います。

Goの書籍紹介まず読んだのは入門書で、こちらは言語としての機能や背景がとても分かりやすく説明されていて、初心者にお勧めしたい一冊です。

2冊目はより実務に則した実践書という雰囲

もっとみる