Ami Yamamoto

データベースストレージエンジン B+treeとLSM treeについて

こんにちは、アンチパターンの山本です。 現在「Build Your Own Database From Scratch in Go [https://build-your-own.org/database/#table-of-contents] 」という記事を読んで、原子性(全部成功するか何もしなかった状態にする)と耐久性(電源落ちても消えない)を持ったデータベースをGo言語で実装するというのを勉強中です。 その中でMySQL にも使われているB+treeと、もう一つのデータ構造であるLSM treeがとても面白かったためブログにまとめました! まず、そもそもデータベースの用途は、大きく分けてこの2つに分類されます。 * OLTP(オンライン・トランザクション処理) スマホアプリやECサイトのように、「1件の登録」 「1件の更新」など細かい大量の読み書きを捌くシステム。MySQLやPostgreSQLがそうです。 * OLAP(分析処理) 大量のデータから「過去1年間の顧客単価」などを計算するシステム。こちらでは「列指向(カラムナー)ストレージ」という全く別のデ
Ami Yamamoto
Ami Yamamoto
4 min read
googlegoogle workspacegoogle workspace flows

Google Workspace Flowsにはどんな機能がある?GA時期は?

2025年4月のGoogle Cloud Next '25で発表された新機能、Google Workspace Flowsが、一部のユーザー向けに利用可能になりました。 現在はα版としての提供となり、利用には以下の条件があります。 * Google Workspace の BusinessエディションまたはEnterpriseエディション を契約している企業 * 組織のWorkspace管理者が管理コンソールから本機能を有効化する必要がある Google Workspace Flowsとは Google Workspace Flowsは、Gmail、Drive、Spreadsheet、ChatといったGoogleのアプリ同士の連携を自動化するツールです。 最大の特徴は、Gemini(AI)をフローに組み込める点です。 「返信が必要なメールかどうか判断する」などといった、臨機応変な動きを設定することができます。 実際にフローを作成する 実際にフローを作成します。 チェックするべきメールが届いたらSlackにお知らせする というフローを作成します。 Step1でメールが届いたタ
Ami Yamamoto
Ami Yamamoto
2 min read
Godocker

InfoQの記事「100行以下のGoでコンテナを作る」をやってみた

InfoQの「Build Your Own Container Using Less than 100 Lines of Go」という記事を読んで、コンテナが技術的にどのように成り立っているのか、大変面白く学ぶことができました。本ブログでは、その記事の内容を紹介していきます。 Build Your Own Container Using Less than 100 Lines of GoShipping containers and software containers share a lot in common, but the analogy has limits. This article explores this relationship further by demonstrating how it is possible to build a simple container using less than 100 lines of Golang code. Topics covered include namespaces, cgroups and laye…Inf
Ami Yamamoto
Ami Yamamoto
4 min read

Go 1.22でforループの変数メモリ再利用が変更されたので挙動を確認する

Go 1.22がリリースされ、多くの改良が加えられました。 forループ内での変数メモリ再利用に関しても、変更があったので挙動を確認します。 変更の詳細と実際のコード例 Go 1.22より前のバージョンでは、for文の各ループで変数のメモリが再利用されていました。Go 1.22ではこの挙動が変更され、各ループで新しいメモリが確保されるようになりました。 package main import ( "fmt" ) func main() { var funcs []func() for i := 0; i < 3; i++ { funcs = append(funcs, func() { fmt.Println(i) }) } for _, f := range funcs { f() } } https://go.dev/play/p/dpi0ze_iQ2k?v=goprev Go 1.21はすべての関数が同じ変数 i を参照しているため、出力はすべて3になります 3 3 3 https://go.dev/play/p/dpi0ze_iQ2k Go 1
Ami Yamamoto
Ami Yamamoto
1 min read
Gogolang

【Go】os.OpenFileのフラグについて

Photo by Markus Spiske [https://unsplash.com/@markusspiske?utm_source=ghost&utm_medium=referral&utm_campaign=api-credit] / Unsplash [https://unsplash.com/?utm_source=ghost&utm_medium=referral&utm_campaign=api-credit] ※go version go1.19 darwin/amd64 ファイルを作成するGoの関数os.OpenFileは、3つの引数を取ります。 https://pkg.go.dev/os#OpenFile func OpenFile(name string, flag int, perm FileMode) (*File, error) 第2引数のflag intは以下のような値を入れられます os.OpenFile("filename.txt", os.O_RDWR|os.O_CREATE|os.O_APPEND, 0666) この縦棒でつない
Ami Yamamoto
Ami Yamamoto
2 min read
ShopifyShopify ThemeThemeKit

Shopifyのローカル開発環境を準備する(Mac)

Photo by Mike Petrucci [https://unsplash.com/@mikepetrucci?utm_source=ghost&utm_medium=referral&utm_campaign=api-credit] / Unsplash [https://unsplash.com/?utm_source=ghost&utm_medium=referral&utm_campaign=api-credit] ローカル開発環境を準備することが何回かあったため手順をまとめます 2021年6月に発表されたShopifyCLIではなく、ThemeKitでの手順です。 online Store2.0を使用している場合はShopifyCLIを使用してください。 ThemeKit 1.3.0 darwin/amd64 Shopify接続するためのAPIキー・パスワードを生成する アプリ管理 ↓ プライベートアプリを管理する ↓ 新しいプライベートアプリを作成する 必要事項を入力して権限を付与する 非アクティブなAdmin API権限を表示する ↓ テーマテンプレートとアセ
Ami Yamamoto
Ami Yamamoto
2 min read
GoogleAppsScriptGoogleWorkspace

GASでGoogleWorkspaceの共有ドライブ内ファイルの権限チェック

Gsuite改め、Google Workspaceの共有ドライブ利用して社内のファイルを管理していますが、アルバイトや業務委託の方など関係者が増えてくると権限の管理が煩雑になってきますよね。 弊社アンチパターンでも、権限の設定は共有ドライブのルートフォルダでのみ行い、共有ドライブ内のフォルダやファイルには個別に権限を設定しないというルールはつくったものの、すでに設定されている権限を可視化したり、今後個別設定された権限を検知できないためにGASでチェックできる仕組みを作成しました。 const SHEET = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('filelist') const DRIVE_NAME = SHEET.getRange('A1').getValue() const getFilesAuth = () => { // 共有ドライブを取得 const drive = DriveApp.getFolderById(getDriveId(DRIVE_NAME)) // デフォルト以外で権限付与
Ami Yamamoto
Ami Yamamoto
2 min read
STUDIO

STUDIOの便利な機能5選

Photo by Toa Heftiba [https://unsplash.com/@heftiba?utm_source=ghost&utm_medium=referral&utm_campaign=api-credit] / Unsplash [https://unsplash.com/?utm_source=ghost&utm_medium=referral&utm_campaign=api-credit] 最近はSTUDIOでサイトを作っており、作成時に便利だった機能を5つまとめました。 ① PCとモバイルで表示を変える ② カルーセルを設定する ③ hover時に表示を変化させる ④ 何度も使う要素はSymbolで共通化 ⑤ レスポンシブのブレイクポイントを変更する ① PCとモバイルで表示を変える 上の画像を選択し、左上の目のアイコンでタブレットとモバイルのチェックボックスを外します。 次に下の画像を選択し、「基準」のチェックボックスを外します。 実際の動き② カルーセルを設定する ダッシュボード>CMS からモデルを追加します。 「記事タイプ」を選択して新
Ami Yamamoto
Ami Yamamoto
3 min read
ShopifySEORich Result

Shopifyのブログ記事をGoogle検索結果のリッチリザルトで表示させる

Photo by Becca Tapert [https://unsplash.com/@beccatapert?utm_source=ghost&utm_medium=referral&utm_campaign=api-credit] / Unsplash [https://unsplash.com/?utm_source=ghost&utm_medium=referral&utm_campaign=api-credit] Google検索結果の、リッチリザルトってご存知ですか? リッチリザルトは通常の検索結果表示と違い、写真やカード形式などで表示される検索結果のことです。 ※リッチリザルトとは [https://support.google.com/webmasters/answer/7506797?hl=ja] head内に構造化データを埋め込み、Googleにうまく認識してもらえると、リッチリザルトとして表示されるようになります。 構造化データの例: https://developers.google.com/search/docs/data-types/recipe?h
Ami Yamamoto
Ami Yamamoto
2 min read
STUDIO

NoCodeでサイト構築できる「STUDIO」でヘッダーのサブメニューを実装する

Photo by Aleksander Vlad [https://unsplash.com/@aleksowlade?utm_source=ghost&utm_medium=referral&utm_campaign=api-credit] / Unsplash [https://unsplash.com/?utm_source=ghost&utm_medium=referral&utm_campaign=api-credit] 地方のエンジニアの少ない中小企業で副業を行っていて、現場のメンバーでもメンテナンスできるようなNoCodeのサイト制作が求められ、最近よくSTUDIOを使っています。 STUDIO:https://studio.design/ja こんなメニューを作成します↓ 全体の構成はこのような感じです↓ ベースとなるヘッダーを用意する サブメニューの要素を追加する 今回はABOUTを選択し、2回グループ化します。 「commandキー+G」をすると、グループ化できます。2回もグループ化するなんて謎かもしれませんが、この後にいn hoverという機能を利用するた
Ami Yamamoto
Ami Yamamoto
3 min read
ShopifyShopify ThemeLiquid

Shopifyでセクションを自作する

Photo by Alexander Naglestad [https://unsplash.com/@alexandernaglestad?utm_source=ghost&utm_medium=referral&utm_campaign=api-credit] / Unsplash [https://unsplash.com/?utm_source=ghost&utm_medium=referral&utm_campaign=api-credit] 最近必死でShopifyの開発を行っているので、その内容をまとめます! セクションとは 画像左側の「ヘッダー」「テキストオーバーレイ…」などがセクションと呼ばれるもので、ページの各パーツのことです どんなものを作成するか Shopifyに登録されたブログの最新記事を表示させるものを作ります 利用する画像をアップする 左下の設定 > ファイル > ファイルをアップロード からファイルをアップすることができます 画像をアップロードすると、URLを取得できます sectionファイルを作成する 次にsectionファイルを作成して
Ami Yamamoto
Ami Yamamoto
9 min read
GASLINE botGoogleAppsScript

GASでLINE BOT作る

LINE BOTを作る機会があったのでまとめようと思います Photo by Shirota Yuri [https://unsplash.com/@itshoobastank?utm_source=ghost&utm_medium=referral&utm_campaign=api-credit] / Unsplash [https://unsplash.com/?utm_source=ghost&utm_medium=referral&utm_campaign=api-credit] 作るもの LINE BOTチャンネル内のメニューボタンをタップしたら返事返ってくるやつ LINE developersに登録する まずはLINE developers [https://developers.line.biz/ja/] に登録します。登録するアカウントは「LINEアカウント」か「ビジネスアカウント」のどちらかを選択できます [LINEアカウントでログイン]と[ビジネスアカウントでログイン]の違い [https://help2.line.me/business_id/web/pc?
Ami Yamamoto
Ami Yamamoto
4 min read