Go言語エンジニアのためのWhatsApp連携術:whatsmeow徹底解説


Go言語エンジニアのためのWhatsApp連携術:whatsmeow徹底解説

tulir/whatsmeow

2025-10-16

whatsmeow は、Go言語(Golang)で書かれた、WhatsApp Web のマルチデバイス API を扱うためのライブラリです。

「マルチデバイス API」というのがポイントで、スマートフォンがオフラインでも機能する、新しいWhatsAppの仕組みに対応しています。つまり、これを使えば、プログラムからWhatsAppのメッセージを送受信したり、アカウント情報を管理したりといった操作が可能になります。

whatsmeowは、あなたのアプリケーションにリアルタイムなコミュニケーション機能を組み込むことで、業務やサービスを大きく進化させる可能性を秘めています。

活用例説明
カスタムボットの作成顧客からの問い合わせに自動応答したり、特定のキーワードに反応して情報を送るような、高性能なWhatsAppボットを開発できます。
通知システムの構築サービスの重要なアラート(在庫切れ、システムエラー、支払い通知など)を、ユーザーのWhatsAppに直接、タイムリーに送信する仕組みを構築できます。
CRM/サポートツールの統合既存の顧客管理システム(CRM)やヘルプデスクツールとWhatsAppを連携させ、サポート担当者が一つのプラットフォームで顧客とやり取りできるようにします。
データ分析・監視大量のメッセージのやり取りをプログラムで収集・分析し、ユーザーの動向やトレンドを把握するシステムを構築できます。

これらは、もはや「手動でスマホを操作する」世界ではなく、コードが自動で、しかも高速にWhatsAppのコミュニケーションを担ってくれる、夢のような世界なんです!

Goプロジェクトへの whatsmeow の導入は、とてもシンプルです。

あなたのGoプロジェクトのターミナルで、以下のコマンドを実行するだけです。

go get go.mau.fi/whatsmeow

whatsmeowは、セッション情報やメッセージ履歴を保存するためにデータベースを使用します。SQLite、PostgreSQL、MySQLなど、多くのDBに対応していますが、手軽に始めるならSQLiteがおすすめです。

GoでSQLiteを使うためのドライバも取得しておくと良いでしょう。

go get github.com/mattn/go-sqlite3

ここでは、最も基本的で重要なステップである「アカウントへのログイン(認証)」と「メッセージの受信」のシンプルな例を見てみましょう。

whatsmeowを使うには、まずWhatsAppアカウントをライブラリにリンクさせる必要があります。これは、WhatsApp Webと同様にQRコードをスキャンして行います。

package main

import (
	"context"
	"fmt"
	"os"

	"go.mau.fi/whatsmeow"
	"go.mau.fi/whatsmeow/store/sqlstore" // データベースストア
	"go.mau.fi/whatsmeow/util/waqrcode"  // QRコード生成
	_ "github.com/mattn/go-sqlite3"      // SQLiteドライバ
	waLog "go.mau.fi/whatsmeow/util/log"
)

func main() {
	// ログレベルの設定
	waLog.Set<ctrl62>### 2. メッセージイベントの処理

ログインが完了したら、次はメッセージが来たときに何かアクションを起こすためのイベントハンドラを設定します。

```go
package main
// (前述のimportとmain関数の一部は省略)

import (
    // ... 既存のimport ...
	"go.mau.fi/whatsmeow/event"
	"go.mau.fi/whatsmeow/types"
	"go.mau.fi/whatsmeow/proto/waNmsge"
)

// イベントハンドラ関数
func eventHandler(evt interface{}) {
	switch v := evt.(type) {
	case *event.Message:
		// メッセージイベントを受信
		sender := v.Info.Sender.String()
		textMsg := v.Message.GetConversation() // テキストメッセージの内容を取得
		
		fmt.Printf(" メッセージ受信: %s から\n", sender)
		fmt.Printf(" 内容: %s\n", textMsg)

		// 【応用例】もし「こんにちは」というメッセージが来たら返信する
		if textMsg == "こんにちは" {
			replyText := "こんにちは!自動応答ボットです"
			
			// テキストメッセージの送信
			_, err := cli.SendMessage(context.Background(), v.Info.Sender, &waNmsge.Message{
				Conversation: &replyText,
			})
			if err != nil {
				fmt.Printf("返信エラー: %v\n", err)
			}
			fmt.Printf(" 返信完了: %s\n", replyText)
		}
	}
}

func main() {
	// ... (データベースとクライアントの設定は省略) ...
	
	// イベントハンドラを登録
	cli.AddEventHandler(eventHandler) 
	
	// ... (ログイン処理と待機処理は省略) ...
}

このサンプルは非常に単純ですが、*event.Message の処理を工夫することで、複雑なビジネスロジックを持つボットを構築していくことができるんです!


tulir/whatsmeow




Go言語でCLIを楽しく!Bubble Tea入門

やぁ、ソフトウェアエンジニアの皆さん!今日は、Go言語を使ったCLI開発を劇的に楽しくしてくれるフレームワーク「Bubble Tea」について、飲み比べコント風にご紹介しますね。このお酒、見た目は素朴な「ターミナル画面」なんだけど、一口飲むと「わ、これすごい!」ってなるんですよ。


ソフトウェアエンジニア必見!Cobraで実現するプロ級Go CLIツール

「コマンドの解析が面倒だ…」 「ヘルプメッセージをいちいち書くのが大変…」 「サブコマンドをうまく管理できない…」もう大丈夫です!そんな悩みとは今日でサヨナラ。 今回は、あなたの開発を劇的にラクにする、魔法のツール「Cobra」をご紹介します!


【脱Electron】Go製TUIクライアント「Discordo」が開発環境を最適化する理由

Discordoは、Discordのクライアントをターミナル上(TUI Terminal User Interface)で動作させるための軽量かつセキュアなソフトウェアです。言語・環境 Go言語 (Golang) で書かれており、Linux環境での利用が想定されています。


メディアサーバーの決定版!bluenviron/mediamtxで君のプロジェクトにモジョを注入!

オースティン・パワーズだぜ!今回は君たちソフトウェアエンジニアの悩みを解決する、とびっきりクールなツールを紹介するぜ!その名も「bluenviron/mediamtx」!君たちのプロジェクトに、こう、なんていうか…「映像と音声のセクシーな魔法」をかけることができるんだ!この「mediamtx」は、まるで僕のモジョみたいに、あらゆる種類のメディアストリームを自由自在に操れる、まさに究極のメディアサーバー&プロキシなんだ!


妹が教える!エンジニアのためのOllama活用術

ねえねえ、最近流行りの「Ollama」って知ってる?お兄ちゃんの好きそうな、めちゃくちゃ便利なツールなんだよ!Ollamaはね、お兄ちゃんのパソコンで、いろんなAIモデルを簡単に動かせるようにしてくれるすごーいツールなんだ!今までだと、AIモデルを使おうと思ったら、いろいろ難しそうな設定をしなきゃいけなかったり、パソコンの性能が足りなかったりしたんだけど、Ollamaを使えば、そんな心配はほとんどいらなくなるんだって!


【爆速】autobrr/qui で実現する、qBittorrent 複数管理の極上体験

autobrr/qui を一言で表すなら、まさに「職人が注いだ、雑味のない生ビール」のようなツールです。余計なものを削ぎ落とし、必要な機能だけを最高速で提供してくれます。エンジニア的な視点で見ると、このツールがいかに洗練されているかが分かります。


GOWA参上!WhatsApp自動化で開発効率を爆上げだ!

悪の組織に立ち向かう戦隊ヒーローのように、私たちソフトウェアエンジニアも日夜、様々な課題と戦っています。その中でも「WhatsAppの自動化」は、多くの人が直面する難題の一つでした。しかし、GOWAという強力な味方が現れました!GOWAは、Go言語で開発されたWhatsApp REST APIです。簡単に言うと、あなたのプログラムからWhatsAppを操作できるようにするツールですね。これまでのWhatsApp自動化は、ブラウザを操作したり、非公式なライブラリを使ったりと、不安定なものが多かったんです。でもGOWAは、公式のWhatsApp Webマルチデバイス機能に対応しているので、安定性が格段に向上しました!


【エンジニア向け】Infisicalで秘密情報も体重もスマートに管理!

ダイエット中のエンジニアさん、お疲れ様です!食事制限、運動、そしてコード. .. 毎日やることがいっぱいですよね。でも、ちょっと待ってください!あなたのコードの中にも、ひっそりと隠れている「秘密」はありませんか?そう、APIキーとかデータベースのパスワードとか


牛丼一筋の心意気で学ぶ、Go言語とgRPCによる高速RPC通信

一言でいうと、「Go言語でサクッとマイクロサービスを構築するための、うまい、早い、安いRPCフレームワーク」です。RPC(Remote Procedure Call)とは、ネットワーク越しに別々のプログラムの関数を呼び出す仕組みのこと。簡単に言えば、サーバーの機能(関数)を、クライアントからまるで自分のプログラム内の関数のように呼び出せるようにしてくれる技術です。


Dockerだけじゃない!Moby Projectで自作コンテナ環境を構築する

Moby Project ってのはな、一言で言うと「コンテナをベースにしたシステムを作るための、オープンソースのツールキット」だ。例えるなら、俺たちが事件現場で使う道具一式、例えば手錠とか懐中電灯とか、そういうのを全部まとめて提供してくれるようなもんだな。