About
package profile
import "fmt"
func Greet() {
me := map[string]interface{}{
"familyName": "小松山",
"givenName": "凌平",
"job": "ソフトウェアエンジニア",
"age": 26,
"likes": []string{"Go", "Spotify", "油そば"},
"dislikes": []string{"生もの", "熱いもの", "早起き"},
}
fmt.Printf("こんにちは。%s%sです", me["familyName"], me["givenName"])
}Outputs
History
株式会社 カミナシ 入社 Latest
- ノンデスクワーカー向け帳票作成システムでのID統合
Go / TypeScript / React / React Native / Next.js / AWS
株式会社 BuySell Technologies 退職
株式会社 BuySell Technologies 入社 (正社員)
- 社内の基幹システムの開発・運用
- マイクロサービスの新規立ち上げ
- 新卒・学生インターンの育成
- etc.
Go / TypeScript / Next.js / GraphQL / Google Cloud
名古屋大学 情報学部 人間・社会情報学科 卒業
株式会社 BuySell Technologies 入社 (インターン)
社内の基幹システムの開発・運用
Vue.js / Ruby on Rails
名古屋大学 情報学部 人間・社会情報学科 入学
千葉市立千葉高等学校 普通科 卒業




![[PostgreSQL] ユニーク制約が作れなくても DB レベルで重複登録を防ぎたくて検討したこと](https://res.cloudinary.com/zenn/image/upload/s--bBceb9C1--/c_fit%2Cg_north_west%2Cl_text:notosansjp-medium.otf_55:%255BPostgreSQL%255D%2520%25E3%2583%25A6%25E3%2583%258B%25E3%2583%25BC%25E3%2582%25AF%25E5%2588%25B6%25E7%25B4%2584%25E3%2581%258C%25E4%25BD%259C%25E3%2582%258C%25E3%2581%25AA%25E3%2581%258F%25E3%2581%25A6%25E3%2582%2582%2520DB%2520%25E3%2583%25AC%25E3%2583%2599%25E3%2583%25AB%25E3%2581%25A7%25E9%2587%258D%25E8%25A4%2587%25E7%2599%25BB%25E9%258C%25B2%25E3%2582%2592%25E9%2598%25B2%25E3%2581%258E%25E3%2581%259F%25E3%2581%258F%25E3%2581%25A6%25E6%25A4%259C%25E8%25A8%258E%25E3%2581%2597%25E3%2581%259F%25E3%2581%2593%25E3%2581%25A8%2Cw_1010%2Cx_90%2Cy_100/g_south_west%2Cl_text:notosansjp-medium.otf_34:%25E3%2581%2593%25E3%2581%25BE%25E3%2581%25A4%25E3%2582%2584%25E3%2581%25BE%2Cx_220%2Cy_108/bo_3px_solid_rgb:d6e3ed%2Cg_south_west%2Ch_90%2Cl_fetch:aHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL3plbm4tdXNlci11cGxvYWQvYXZhdGFyLzUyYjk5OGQ3NTAuanBlZw==%2Cr_20%2Cw_90%2Cx_92%2Cy_102/co_rgb:6e7b85%2Cg_south_west%2Cl_text:notosansjp-medium.otf_30:%25E6%25A0%25AA%25E5%25BC%258F%25E4%25BC%259A%25E7%25A4%25BEBuySell%2520Technologies%2Cx_220%2Cy_160/bo_4px_solid_white%2Cg_south_west%2Ch_50%2Cl_fetch:aHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL3plbm4tdXNlci11cGxvYWQvYXZhdGFyL2YyMTMyOGUyYzcuanBlZw==%2Cr_max%2Cw_50%2Cx_139%2Cy_84/v1627283836/default/og-base-w1200-v2.png)

![[Go] samber/lo が便利なのは Find/Filter/Map だけじゃない!](https://res.cloudinary.com/zenn/image/upload/s--OQi4JM_A--/c_fit%2Cg_north_west%2Cl_text:notosansjp-medium.otf_55:%255BGo%255D%2520samber%252Flo%2520%25E3%2581%258C%25E4%25BE%25BF%25E5%2588%25A9%25E3%2581%25AA%25E3%2581%25AE%25E3%2581%25AF%2520Find%252FFilter%252FMap%2520%25E3%2581%25A0%25E3%2581%2591%25E3%2581%2598%25E3%2582%2583%25E3%2581%25AA%25E3%2581%2584%25EF%25BC%2581%2Cw_1010%2Cx_90%2Cy_100/g_south_west%2Cl_text:notosansjp-medium.otf_34:%25E3%2581%2593%25E3%2581%25BE%25E3%2581%25A4%25E3%2582%2584%25E3%2581%25BE%2Cx_220%2Cy_108/bo_3px_solid_rgb:d6e3ed%2Cg_south_west%2Ch_90%2Cl_fetch:aHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL3plbm4tdXNlci11cGxvYWQvYXZhdGFyLzUyYjk5OGQ3NTAuanBlZw==%2Cr_20%2Cw_90%2Cx_92%2Cy_102/co_rgb:6e7b85%2Cg_south_west%2Cl_text:notosansjp-medium.otf_30:%25E6%25A0%25AA%25E5%25BC%258F%25E4%25BC%259A%25E7%25A4%25BEBuySell%2520Technologies%2Cx_220%2Cy_160/bo_4px_solid_white%2Cg_south_west%2Ch_50%2Cl_fetch:aHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL3plbm4tdXNlci11cGxvYWQvYXZhdGFyL2YyMTMyOGUyYzcuanBlZw==%2Cr_max%2Cw_50%2Cx_139%2Cy_84/v1627283836/default/og-base-w1200-v2.png)
![[PostgreSQL] トランザクションをコミットせずにコネクションが切れた場合の挙動](https://res.cloudinary.com/zenn/image/upload/s--wYVX1TeY--/c_fit%2Cg_north_west%2Cl_text:notosansjp-medium.otf_55:%255BPostgreSQL%255D%2520%25E3%2583%2588%25E3%2583%25A9%25E3%2583%25B3%25E3%2582%25B6%25E3%2582%25AF%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%25B3%25E3%2582%2592%25E3%2582%25B3%25E3%2583%259F%25E3%2583%2583%25E3%2583%2588%25E3%2581%259B%25E3%2581%259A%25E3%2581%25AB%25E3%2582%25B3%25E3%2583%258D%25E3%2582%25AF%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%25B3%25E3%2581%258C%25E5%2588%2587%25E3%2582%258C%25E3%2581%259F%25E5%25A0%25B4%25E5%2590%2588%25E3%2581%25AE%25E6%258C%2599%25E5%258B%2595%2Cw_1010%2Cx_90%2Cy_100/g_south_west%2Cl_text:notosansjp-medium.otf_37:%25E3%2581%2593%25E3%2581%25BE%25E3%2581%25A4%25E3%2582%2584%25E3%2581%25BE%2Cx_203%2Cy_121/g_south_west%2Ch_90%2Cl_fetch:aHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL3plbm4tdXNlci11cGxvYWQvYXZhdGFyL2YyMTMyOGUyYzcuanBlZw==%2Cr_max%2Cw_90%2Cx_87%2Cy_95/v1627283836/default/og-base-w1200-v2.png)
![[Go] JPEG/PNG 画像の幅・高さを変えずに容量を圧縮する](https://res.cloudinary.com/zenn/image/upload/s--x1FRAw-a--/c_fit%2Cg_north_west%2Cl_text:notosansjp-medium.otf_55:%255BGo%255D%2520JPEG%252FPNG%2520%25E7%2594%25BB%25E5%2583%258F%25E3%2581%25AE%25E5%25B9%2585%25E3%2583%25BB%25E9%25AB%2598%25E3%2581%2595%25E3%2582%2592%25E5%25A4%2589%25E3%2581%2588%25E3%2581%259A%25E3%2581%25AB%25E5%25AE%25B9%25E9%2587%258F%25E3%2582%2592%25E5%259C%25A7%25E7%25B8%25AE%25E3%2581%2599%25E3%2582%258B%2Cw_1010%2Cx_90%2Cy_100/g_south_west%2Cl_text:notosansjp-medium.otf_34:%25E3%2581%2593%25E3%2581%25BE%25E3%2581%25A4%25E3%2582%2584%25E3%2581%25BE%2Cx_220%2Cy_108/bo_3px_solid_rgb:d6e3ed%2Cg_south_west%2Ch_90%2Cl_fetch:aHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL3plbm4tdXNlci11cGxvYWQvYXZhdGFyLzUyYjk5OGQ3NTAuanBlZw==%2Cr_20%2Cw_90%2Cx_92%2Cy_102/co_rgb:6e7b85%2Cg_south_west%2Cl_text:notosansjp-medium.otf_30:%25E6%25A0%25AA%25E5%25BC%258F%25E4%25BC%259A%25E7%25A4%25BEBuySell%2520Technologies%2Cx_220%2Cy_160/bo_4px_solid_white%2Cg_south_west%2Ch_50%2Cl_fetch:aHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL3plbm4tdXNlci11cGxvYWQvYXZhdGFyL2YyMTMyOGUyYzcuanBlZw==%2Cr_max%2Cw_50%2Cx_139%2Cy_84/v1627283836/default/og-base-w1200-v2.png)

![[Go] slog で Cloud Logging 向けのロガーを実装してみる](https://res.cloudinary.com/zenn/image/upload/s--TWpuVnMJ--/c_fit%2Cg_north_west%2Cl_text:notosansjp-medium.otf_55:%255BGo%255D%2520slog%2520%25E3%2581%25A7%2520Cloud%2520Logging%2520%25E5%2590%2591%25E3%2581%2591%25E3%2581%25AE%25E3%2583%25AD%25E3%2582%25AC%25E3%2583%25BC%25E3%2582%2592%25E5%25AE%259F%25E8%25A3%2585%25E3%2581%2597%25E3%2581%25A6%25E3%2581%25BF%25E3%2582%258B%2Cw_1010%2Cx_90%2Cy_100/g_south_west%2Cl_text:notosansjp-medium.otf_34:%25E3%2581%2593%25E3%2581%25BE%25E3%2581%25A4%25E3%2582%2584%25E3%2581%25BE%2Cx_220%2Cy_108/bo_3px_solid_rgb:d6e3ed%2Cg_south_west%2Ch_90%2Cl_fetch:aHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL3plbm4tdXNlci11cGxvYWQvYXZhdGFyLzUyYjk5OGQ3NTAuanBlZw==%2Cr_20%2Cw_90%2Cx_92%2Cy_102/co_rgb:6e7b85%2Cg_south_west%2Cl_text:notosansjp-medium.otf_30:%25E6%25A0%25AA%25E5%25BC%258F%25E4%25BC%259A%25E7%25A4%25BEBuySell%2520Technologies%2Cx_220%2Cy_160/bo_4px_solid_white%2Cg_south_west%2Ch_50%2Cl_fetch:aHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL3plbm4tdXNlci11cGxvYWQvYXZhdGFyL2YyMTMyOGUyYzcuanBlZw==%2Cr_max%2Cw_50%2Cx_139%2Cy_84/v1627283836/default/og-base-w1200-v2.png)




![[PostgreSQL] EXCLUDED を使って UPSERT 文をちょっとだけ楽に書く](https://res.cloudinary.com/zenn/image/upload/s--XPOi9x8X--/c_fit%2Cg_north_west%2Cl_text:notosansjp-medium.otf_55:%255BPostgreSQL%255D%2520EXCLUDED%2520%25E3%2582%2592%25E4%25BD%25BF%25E3%2581%25A3%25E3%2581%25A6%2520UPSERT%2520%25E6%2596%2587%25E3%2582%2592%25E3%2581%25A1%25E3%2582%2587%25E3%2581%25A3%25E3%2581%25A8%25E3%2581%25A0%25E3%2581%2591%25E6%25A5%25BD%25E3%2581%25AB%25E6%259B%25B8%25E3%2581%258F%2Cw_1010%2Cx_90%2Cy_100/g_south_west%2Cl_text:notosansjp-medium.otf_37:%25E3%2581%2593%25E3%2581%25BE%25E3%2581%25A4%25E3%2582%2584%25E3%2581%25BE%2Cx_203%2Cy_121/g_south_west%2Ch_90%2Cl_fetch:aHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL3plbm4tdXNlci11cGxvYWQvYXZhdGFyL2YyMTMyOGUyYzcuanBlZw==%2Cr_max%2Cw_90%2Cx_87%2Cy_95/v1627283836/default/og-base-w1200-v2.png)


![[Go] 複数モジュールから参照するテーブルのモデルを共通化](https://res.cloudinary.com/zenn/image/upload/s--fx0XRbn_--/c_fit%2Cg_north_west%2Cl_text:notosansjp-medium.otf_55:%255BGo%255D%2520%25E8%25A4%2587%25E6%2595%25B0%25E3%2583%25A2%25E3%2582%25B8%25E3%2583%25A5%25E3%2583%25BC%25E3%2583%25AB%25E3%2581%258B%25E3%2582%2589%25E5%258F%2582%25E7%2585%25A7%25E3%2581%2599%25E3%2582%258B%25E3%2583%2586%25E3%2583%25BC%25E3%2583%2596%25E3%2583%25AB%25E3%2581%25AE%25E3%2583%25A2%25E3%2583%2587%25E3%2583%25AB%25E3%2582%2592%25E5%2585%25B1%25E9%2580%259A%25E5%258C%2596%2Cw_1010%2Cx_90%2Cy_100/g_south_west%2Cl_text:notosansjp-medium.otf_37:%25E3%2581%2593%25E3%2581%25BE%25E3%2581%25A4%25E3%2582%2584%25E3%2581%25BE%2Cx_203%2Cy_121/g_south_west%2Ch_90%2Cl_fetch:aHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL3plbm4tdXNlci11cGxvYWQvYXZhdGFyL2YyMTMyOGUyYzcuanBlZw==%2Cr_max%2Cw_90%2Cx_87%2Cy_95/v1627283836/default/og-base-w1200-v2.png)



