木曜日, 12月 18, 2025
No menu items!
ホーム ブログ ページ 3540

「Heavenly Guitars」事前登録開始!音楽&ギター愛好者必見!

📌 内容
ソネットゲームスタジオ株式会社は、エレキギターに特化した対戦型音楽ゲーム『Heavenly Guitars(ヘブンリーギターズ)』のAndroid版の事前登録を2025年7月9日から開始しました。対象地域は台湾、香港、マカオで、既に日本でもiOS/Android版の事前登録が行われています。ユーザー数が1万人を超えると、特典として「ジュエル3,000個」と「オリジナルデカール」がプレゼントされます。サービス名は『Heavenly Guitars』で、発表したのはソネットゲームスタジオ株式会社の代表取締役社長、永田博丈です。

📊 詳細データ

  • イベント日:2025年7月9日
  • 対象地域:台湾・香港・マカオ
  • 配信時期:PCブラウザ版2025年5月8日、iOS・Android版近日公開予定
  • 価格:基本プレイ無料 / アイテム課金制
  • 事前登録特典:事前登録者数1万人で「ジュエル3,000個」および「オリジナルデカール(1種)」をプレゼント

公式リンク:

🧠 編集部の見解:
ソネットゲームスタジオの『Heavenly Guitars』の事前登録が台湾、香港、マカオで始まったのは、音楽ゲームファンにとって嬉しいニュースです!エレキギターをテーマにした対戦型音楽ゲームという点が特に面白いと思います。また、音楽ゲームは単なる楽しみだけでなく、スキルを磨くための競技性も併せ持っているので、プレイヤー同士の技術を競い合う要素が加わっている点が魅力的です。

### 社会的影響
近年のデジタル音楽革命では、多くの人々が音楽制作やパフォーマンスにアクセスできるようになっています。こうしたゲームは、音楽教育やスキル開発のための新しいプラットフォームを提供する可能性があり、若い世代が音楽に親しむきっかけとなるでしょう。

### ちょっとした背景
実は、音楽ゲームは1980年代から存在しており、鉄板の人気ジャンルと言えます。たとえば、ギターヒーローやダンスダンスレボリューションといったタイトルが登場したことで、ゲーマーだけでなく一般の人々にも広く受け入れられました。この流れを受けるかのように、多様な音楽やスタイルに対応した新しいゲームが続々と誕生しています。

このゲームが事前登録者1万人を突破することでの特典も気になりますね。ジュエル3,000個やオリジナルのデカールがもらえるのは、プレイヤーにとって嬉しいアプローチ!これからの展開が楽しみです。

  • キーワード: 事前登録

Heavenly Guitars をAmazonで探す

エレキギター をAmazonで探す

音楽ゲーム をAmazonで探す


※以下、出典元
▶ 元記事を読む

Views: 0

「aespa、SBS人気歌謡で1位!AHOFも登場」

📌 内容
株式会社IMXCは、韓国の人気音楽番組『SBS人気歌謡』の最新回を、2023年7月7日からPrime Videoのサブスクリプション「Music K」で日本最速・独占配信することを発表しました(発表日:7月6日、実施日:7月7日)。

この番組は、韓国SBSで毎週日曜日に生放送され、人気アーティストが多数出演します。7月の第1週目には、aespaやLE SSERAFIMなど20組のアーティストが登場しました。配信は毎週月曜日18時に更新され、一週間後には日本語字幕も追加されるとのことです。

「Music K」は、K-POP専門チャンネルとして、韓国を代表する音楽コンテンツを約100タイトル以上提供しており、新規登録者には最初の14日間無料でお試しいただけます。

このように、IMXCは韓国の音楽シーンを素早く日本に届け、K-POPファンの支援を拡大する意向を示しています。

📊 詳細データ

  • イベント日:2025年7月6日(日)
  • 配信開始日:2025年7月7日(月)18時00分
  • 対象地域:日本
  • 配信サービス:Prime Videoのサブスクリプション「Music K」
  • 価格:月額550円(税込、初回14日間無料)

配信ページはこちら
公式サイトはこちら
公式X
公式TikTok

💬 編集部コメント:
株式会社IMXCが日本で『SBS人気歌謡』の最新回を独占配信開始したことで、K-POPファンへのアクセスがさらに楽に。毎週日曜日の韓国放送直後に、月曜日18時から視聴可能という迅速なサービスは、地元ファンには嬉しいニュース。

注目すべきは、出演アーティストの多様性です。aespaやLE SSERAFIMなどのトップグループに加え、新星AHOFなどの若手も登場し、新旧のK-POPを融合させた魅力的なリストが揃っています。このプラットフォームは、ファンが最新の音楽トレンドを知るための鍵となるでしょう。

さらに、配信開始から一週間後に日本語字幕が追加されるため、言語の壁を気にせず観ることが可能です。これは、幅広い視聴者にリーチするうえで大きな利点です。

全体的に、K-POPの国内普及を促進するサービスとしての期待が高まっており、特に若い世代にとっては新たなエンターテインメントの選択肢が増えることになります。これを機に、K-POPだけでなく、韓国の文化全般に対する理解も進むかもしれませんね。

AHOF をAmazonで探す
LE SSERAFIM をAmazonで探す
ALLDAY PROJECT をAmazonで探す

📸 関連画像一覧


※以下、出典元
▶ 元記事を読む

Views: 6

JUMADIBA、3rdミックステープ全国ツアー決定!

ざっくり内容:

ラッパーJUMADIBA、全国ツアーを開催

1998年生まれのラッパー・JUMADIBA(ジュマディバ)が、2025年7月9日に3rd ミックステープ『IEGUMO(いえぐも)』をリリースし、全国11都市を巡るツアーを行います。約3年ぶりとなるこのミックステープには全14曲が収録されており、Lil Soft TennisやShowyVICTORなどのゲストアーティストも参加しています。

ツアー詳細

ツアーは高知をスタート地点とし、福岡、長野、富山、金沢、仙台、鹿児島、大阪、京都、名古屋を回り、ファイナルは2025年10月24日(金)に東京・渋谷のSpotify O-EASTで開催されます。このワンマンライブは、3年ぶりのものとなります。

ミュージックビデオ公開

また、ミックステープに収録されている「Nah だ」のミュージックビデオも、7月10日(木)に公開予定で、ディレクターは過去の作品でも連携しているRyo Sudaが担当しています。

チケット情報

ツアーファイナルのチケット先行抽選は、7月20日(日)23時59分まで受け付けています。興味のある方は、公式サイトをチェックしてみてください。

このツアーは、JUMADIBAの音楽スタイルやアートを広める大きなチャンスであり、ファンにとって期待が高まるイベントです。

編集部の見解:
JUMADIBAの新作ミックステープ『IEGUMO』、そして全国ツアーのニュースは本当にワクワクしますね!1998年生まれの彼が、約3年ぶりにリリースするミックステープは、14曲も収録されているんですね。時代を感じさせるリリース、特にLil Soft TennisやShowyVICTORといった若手アーティストとのコラボも素晴らしいです。

実は、JUMADIBAは多様なジャンルのプロデューサーたちとコラボレーションしていて、これが彼の音楽スタイルをさらに際立たせています。音楽の多様性が増す現代、異なるスタイルが融合することで新しい音が生まれるのはとても魅力的です。このミックステープも、そんな流れを受けているのでしょう。

また、全国11都市を巡るツアーも注目です。特に東京のファイナルは約3年ぶりのワンマンライブ。彼のファンにとっては特別な夜になるでしょうね。こうしたイベントは、地域の音楽シーンを活性化するだけでなく、若いアーティストたちにも刺激を与えることになると思います。

豆知識として、JUMADIBAが取り上げるテーマやスタイルには、彼自身のライフスタイルや考えが色濃く反映されています。彼の音楽を聴くことによって、リスナーは彼の世界観やメッセージを感じ取ることができ、それが新たな世代のアーティストたちにとっての道しるべとなることもあるんです。

今後の彼の活躍に注目ですね!

  • キーワード: IEGUMO


※以下、出典元
元記事を読む

Views: 0

与沢翼氏、離婚後初の子供面会で涙の告白!

🔸 ニュース:
実業家の与沢翼氏(42)が、9日、自身のX(旧ツイッター)を通じて、元妻と3人の子供に面会したことを報告しました。彼は「子供たちに約3か月ぶりに会えた」と述べ、感動と共に自分が犯した深い罪を痛感し、胸が苦しい思いを抱いていることを語りました。

与沢氏はさらに、「これは金では買えないものであり、最も大切なものを失った」と率直な気持ちを表明しました。

彼は4月18日に、YouTubeチャンネルで「仕事を辞めてタイに来てから覚せい剤に依存していたが、今はもうやっていない」と告白。その後、妻が子供たちを連れて日本に帰国してしまったことも明かし、同26日に協議離婚が成立したと発表しました。5月8日には「日本には帰らない」と宣言していましたが、その後一転、「特別な理由で帰国した」との報告をしました。そして、今月6日には、精神科に入院していたことを告白しました。

与沢氏のこの一連の出来事は、彼の人生における変化や困難を象徴しており、彼自身がどのようにこの状況と向き合っているのかに注目が集まっています。彼の経験は、成功や财富とは異なる、家族の重要性を再認識させるものです。

🧠 編集部の見解:
この記事では、与沢翼氏が元妻と3人の子供に約3か月ぶりに面会したことを報告しています。彼のコメントからは、家族に会えた喜びと同時に、自身の過ちに対する深い反省が見て取れます。特に「文字通りこれは金では買えない」という言葉には、物質的な成功がどれほど意味を持たないかを教えてくれます。

彼の人生は、成功と失敗の波を経験しています。実業家としての著書やYouTube活動での影響力を持つ一方、薬物依存や家庭の問題という重いテーマにも直面しています。このような葛藤を持つ人は意外と多く、社会全体でも見られる話です。たとえば、再生や復帰をテーマにしたテレビ番組やドキュメンタリーも人気です。こうしたコンテンツが視聴者の共感を呼ぶのは、誰もが何らかの苦しい経験を抱えているからかもしれません。

豆知識として、与沢氏の成功体験の一つは、彼が若い頃に投資の世界で実績を上げ、その後の起業に繋がったことです。この背景を知ると、彼がなぜこれほどにまで成功にこだわるのか、少しだけ理解できる気がします。

社会的影響としては、彼が薬物依存を克服し、家族と再びつながるために努力する姿が、多くの人々に希望を与える可能性があります。失敗から学ぶことは、特に公の場にいる人にとって、重要な成長の一部なのではないでしょうか。私たちも、彼の経験を通じて心の健康や人間関係の大切さを再考するきっかけにしたいですね。

  • キーワード: 面会


秒速で1億円稼ぐ条件 をAmazonで探す

与沢翼 をAmazonで探す

覚せい剤 をAmazonで探す


Views: 0

「200万円貯金!簡単節約術9選」

0

知らないと損!200万円の貯金節約術9選

1. 家計簿アプリを使う

まず始めに、家計の見直しが重要です。毎月の収支を把握することで、無駄遣いを防ぎ、貯金を増やすことができます。株式会社マネーフォワードの調査によると、アプリを活用することで平均で34万円の年間節約が実現できるとのこと。手軽に数字をグラフで確認できるので、ぜひ活用してみてください。

2. キャッシュレス決済

ポイント還元が魅力のキャッシュレス決済。クレジットカードを使用すると、1%のポイント還元があり、現金に比べて管理が容易です。JCBの調査によると、キャッシュレス利用者は現金派の2倍以上の貯蓄を実現しています。

3. 自炊をする

外食を避け、自炊を心がけましょう。自炊なら、1食あたりの費用が大幅に抑えられ、年間で数万円の節約が期待できます。安価な食材を選ぶことや冷凍保存を活用することも重要です。

4. 水筒を持参

コンビニや自動販売機で飲料を購入する代わりに、水筒を持ち歩くことで年間約6万円の節約が可能です。手軽に準備できる麦茶などを利用してください。

5. 格安SIMへの乗り換え

スマートフォンの月額料金を見直し、格安SIMに乗り換えることで年間6万7000円以上の節約が可能です。大手キャリアのプランに比べ、格安SIMは圧倒的に安いです。

6. ふるさと納税を利用

ふるさと納税を活用すると、寄付の30%相当の返礼品が受け取れます。実質2000円の負担で地域の特産品を手に入れられるので、節約の強い味方です。

7. お金に関する本を読む

お金の知識を身に付けることは非常に大事です。税金に関する本などを読むことで、数十万円の節約効果が得られる可能性があります。

8. Amazonプライム会員になる

Amazonプライムに加入すると、送料が無料になり、さまざまなサービスも利用可能です。年間の費用が4900円に対し、得られるメリットは非常に大きいです。

9. フリマアプリを利用

不要品を売ることで収入を得ることができます。メルカリやラクマなどのフリマアプリを活用することで、使わないものがお金に変わります。

補足説明

これらの節約術は、どれも手軽に実施できるものであり、日常生活を少し見直すだけで大きな効果を得られる可能性があります。

背景&豆知識

最近の調査では、買っているものの半分以上が「思ったほど使わない商品」であることがわかっています。つまり、買わない選択を意識するだけでも、経済的なメリットがあります。

参考リンク

これらの節約術を試して、あなたも200万円の貯金へと一歩近づきましょう!

  • キーワード選定: 節約

家計簿アプリ をAmazonで探す

水筒 をAmazonで探す

格安SIM をAmazonで探す



※以下、出典元
▶ 元記事を読む

Views: 0

『ガーディアンテイルズ』夏イベント開始!最大50連無料召喚で新英雄ゲット!

『ガーディアンテイルズ』夏イベント開幕!

2025年7月9日、人気ゲーム『ガーディアンテイルズ』にて待望の夏イベントが開催されました。このイベントでは、新たな英雄「海辺の4番バッター リエ」が登場し、プレイヤーたちの関心を集めています。

新英雄「海辺の4番バッター リエ」

「海辺の4番バッター リエ」は、ゲーム内で特別なスキルを持ち、プレイヤーの戦略に新たな幅を加えるキャラクターです。イベントを通じて彼女を手に入れるチャンスがあるため、ファンも期待を寄せています。

最大50連無料の召喚キャンペーン

イベントの目玉として、最大50連の無料召喚キャンペーンが実施されます。この機会に、リーダーとして活躍できる新英雄を獲得するチャンスが得られるため、プレイヤーは積極的に参加したいところです。

背景と意義

『ガーディアンテイルズ』は、プレイヤーの選択が物語に影響を与えるゲーム。そのため、夏イベントの開催はプレイヤー同士の交流を促進し、コミュニティの活性化にもつながります。また、新キャラクターの実装は、常に新しい戦略を探求する楽しさを提供してくれる要素でもあります。

この夏イベントは、従来のゲーム体験をさらに魅力的なものにする絶好の機会です。ファンの皆さんは、ぜひこのイベントに参加して、新しい英雄を迎え入れてみてください!

🧠 編集部より:

『ガーディアンテイルズ』の夏イベントがスタートしました!今回のイベントでは新英雄「海辺の4番バッター リエ」が登場し、プレイヤーは最大50連の無料召喚キャンペーンに参加できます。この機会に強力なキャラクターを手に入れるチャンスです!

補足説明

  • 新英雄「海辺の4番バッター リエ」: 彼女は強力な攻撃力を持ち、ボールを使ったユニークなスキルを持つことが特徴です。チーム編成においても、特に攻撃型パーティにマッチします。

  • 召喚キャンペーン: 最大50連の無料召喚は、ゲーム中の特定の条件を満たすことで可能になります。これにより、無課金のプレイヤーでも新キャラを手に入れることができます。

バックグラウンド

『ガーディアンテイルズ』は、プレイヤーがキャラクターを育てて冒険するアクションRPGで、ユニークなストーリー展開や多彩なキャラクターが魅力です。夏イベントは毎年恒例で、多くのプレイヤーが楽しみにしています。

豆知識

夏にちなんだイベントは、ゲーム内の夏のビーチを連想させるデザインやエフェクトが取り入れられることが多く、特に水着姿のキャラクターが人気です。

関連リンク

この夏、是非『ガーディアンテイルズ』のイベントを楽しんで、新キャラ「リエ」を手に入れてください!

  • キーワード: サマーイベント

ガーディアンテイルズ をAmazonで探す
海辺の4番バッター リエ をAmazonで探す
召喚キャンペーン をAmazonで探す



※以下、出典元
▶ 元記事を読む

Views: 0

「恋愛シミュ『LoveR Kiss』Steam/Switch登場!」

ドラガミゲームスは、2025年7月9日に新作『LoveR Kiss Endless Memories』を発表しました。対応プラットフォームはPC(Steam)およびNintendo Switchで、発売日は11月27日、価格は税込6490円です。

『LoveR Kiss Endless Memories』の特徴

このゲームは人気の恋愛シミュレーションシリーズ『LoveR』の新作となります。シリーズは、杉山イチロウ氏が手がけるチーム「Sweet One」によって開発されており、主人公は高校2年生の男子高校生です。彼はデジタル一眼カメラを手に入れることで、多くの女の子と出会い、彼らとのふれあいを通じてカメラスキルを向上させ、自身の成長を図ります。

機能の拡充と改善

『LoveR Kiss Endless Memories』では、前作『LoveR Kiss』の要素を改善し、新たな撮影スポットやコスチュームが追加されました。また、ユーザーインターフェース(UI)の改善や物理演算の向上により、全体的な遊びやすさが向上しています。

新たに追加された「PROフォトセッション」モードでは、被写体や撮影スポット、コスチューム、ポーズ、レンズフィルタなど、撮影に必要な全ての機能を活用できます。これにより、背景にトッピングアイテムを追加したり、フォトフレームやスタンプを写真に載せたりすることが可能です。また、過去に配信されたダウンロードコンテンツ(DLC)もすべて収録されています。

グローバル展開とPC最適化

これまでPlayStation4およびNintendo Switchでのみリリースされていたシリーズですが、今回はSteamにも進出します。これに伴い、PC向けにグラフィックの改善やマウス操作の最適化が行われているとのことです。また、英語と中国語にも対応し、グローバルな展開が視野に入っています。

『LoveR Kiss Endless Memories』は、2025年11月27日にPC(Steam)およびNintendo Switch向けに発売予定です。新機能の充実と共に、さらなる成長を見せる新作に期待が寄せられています。

【関連リンク】

YouTubeトレーラー(ゲームの詳細を動画でチェックできます)

🧠 編集部より:

『LoveR Kiss Endless Memories』は、7月9日にドラガミゲームスから発表された恋愛シミュレーションゲームで、11月27日にPC(Steam)とNintendo Switch向けに発売されます。価格は税込6490円です。このタイトルは人気シリーズ『LoveR』の新作で、シリーズを手掛けた杉山イチロウ氏率いるチーム「Sweet One」が制作しています。

ゲーム概要

『LoveR』シリーズでは、主人公が高校生として女の子たちと出会い、デジタル一眼カメラを使って彼女たちとの思い出を撮影しながら成長していく物語が展開されます。このシリーズは、感情や人間関係の探索を楽しむプレイヤーに支持されてきました。

新要素と改善点

『LoveR Kiss Endless Memories』では、以下のような改善や新要素が追加されています:

  • 新規撮影スポットとコスチュームの追加
  • ユーザーインターフェース(UI)の改善
  • 物理演算の強化

さらに、新モード「PROフォトセッション」が追加され、撮影に必要な機能が充実。被写体や撮影スポット、ポーズなどを自由に選べることで、よりクリエイティブな体験が可能になります。

プラットフォームの拡張

これまでPS4およびNintendo Switchで発売されていた『LoveR』シリーズが、今回初めてSteamに進出することにより、PCユーザー向けにグラフィックと操作性の改善が行われています。加えて、英語や中国語にも対応しており、世界中のプレイヤーに向けた展開が期待されています。

豆知識

『LoveR』シリーズは、その独自のストーリーとキャラクターの魅力から、恋愛シミュレーションゲームの中で特に注目を集めています。杉山イチロウ氏の作品は、感情豊かなキャラクター設定が特徴で、シリーズを通じて多くのファンを獲得しています。

もっと詳しい情報や最新のニュースについては、以下のリンクをチェックしてみてください。

『LoveR Kiss Endless Memories』の発売が楽しみですね!

  • キーワード: LoveR Kiss Endless Memories

LoveR Kiss Endless Memories をAmazonで探す

デジタル一眼カメラ をAmazonで探す

PC ゲーム をAmazonで探す



※以下、出典元
▶ 元記事を読む

Views: 0

Yoshi-PはFFXIVのコミュニティについて正しいです、そしてこれらの過去のクロスはそれを証明します



ファイナルファンタジーXIVYoshi-Pとしても知られるゲームディレクターのNaoki吉田氏は、ゲームのコミュニティについて声明を出しましたが、彼はそれについてこれ以上正しいことはできませんでした。絶賛されているMMORPGは現在、 DawnTrail 1年以上前にリリースされた拡張。 DLCは前任者ほど高く評価されていませんでした。 エンドウォーカー、10年のストーリーアークを締めくくりました ヨッシーはそれを認めました ffxiv 衰退しています コンテンツの品質に関しては。


続きを見る


🧠 編集部の感想:
Yoshi-PがFFXIVのコミュニティの重要性を強調したことは、プレイヤー同士のつながりの大切さを再認識させます。彼が過去のクロスやDLCの評価について言及したことで、ゲームの進化とプレイヤーの期待が鮮明になります。今後の展開に期待しつつ、コミュニティの力でFFXIVが再び盛り上がることを願っています。

Views: 1

プライムデーで耳福!1000円台のApple&JBL耳フォン登場

本日、2025年7月8日よりスタートしたAmazonプライムデーの先行セールでは、多くのアイテムが特別価格で販売されています。この機会を利用することで、さまざまな商品をお買い得に手に入れるチャンスが増えています。

特に注目したいのは、有線イヤホンのセール商品です。音質にこだわる方や、 Bluetooth接続に依存せず、シンプルに音楽を楽しみたい方には、特におすすめのアイテムが数多く取り揃えられています。

重要な視点:

  • 価格: 通常よりも大幅な値下げが期待できるため、欲しかったアイテムを手に入れる絶好のチャンス。
  • 音質: 有線はBluetoothに比べて音質が安定しており、リスニング体験を向上させます。

ぜひ、プライムデーの先行セールを利用して、有線イヤホンをお得にゲットしてください!

🧠 編集部より:

Amazonプライムデーの先行セールと有線イヤホンの魅力

本日スタートしたAmazonプライムデーの先行セールでは、多くのアイテムがセール特価で提供されています。特に、有線イヤホンは音質が良く、コストパフォーマンスに優れた選択肢として人気です。この機会にお得にゲットするチャンスですね。

有線イヤホンのおすすめポイント

  1. 音質が優秀: 有線接続では、電波の干渉がなくクリアな音質を実現。高音質を求める方には特におすすめです。

  2. バッテリー不要: 電池切れを心配せずにいつでも使えるのは大きなメリット。ランニングや通勤中でも安心して使用できます。

  3. 価格帯が広い: エントリーモデルから高級モデルまで揃っており、自分の予算に合った選択ができるのも魅力です。

おすすめの有線イヤホン

  • Sony WF-1000XM4: 高音質とノイズキャンセリング機能が特徴。Bluetoothモデルですが、音質には定評があります。

  • Shure SE215: プロのアーティストも使用する高品質なイヤホンで、音の分離も良好です。

  • Audio-Technica ATH-CKS50X: バランスの取れた音質と快適な装着感が魅力です。

背景や豆知識

実は、有線イヤホンの人気はBluetoothイヤホンが主流になった今でも根強いものがあります。音楽制作やマスタリングの現場では、依然として有線が主に使用されています。また、長時間使用する方には、イヤホンのフィット感も重要な要素です。メーカーによってデザインやフィット感が異なるため、試してみることをお勧めします。

関係するページへのリンク

このセールを活用して、あなたにピッタリの有線イヤホンを見つけてみてください!

  • キーワード: 有線イヤホン

有線イヤホン をAmazonで探す
セール特価 をAmazonで探す
Amazonプライムデー をAmazonで探す



※以下、出典元
▶ 元記事を読む

Views: 1

AWS & LINE Messaging API統合 はじめの一歩 #JapanAWSJr.Champions



AWS & LINE Messaging API統合 はじめの一歩 #JapanAWSJr.Champions

この記事について

本記事は、
2025 Japan AWS Jr. Champion Qiitaリレー夏
4日目の記事となります。

はじめに

「AWS上でLINEメッセージを拾って格納する仕組み」を作ってみよう、と思い立ったのでやってみました。

構成図

1.drawio.png

できるだけシンプル、かつLINE-AWSで完結するようにしました。

LINE Messaging APIについて

LINE Messaging APIは、LINEプラットフォーム上でのボットやサービスアカウントの開発を可能にするインターフェースです。
料金プランについてはこちらに載っている中から、月200メッセージの利用できる無料プランを使用しました。

利用に際しては、公式ドキュメントを参考に以下の手順で実施しました。

  1. LINE Developersアカウント及びLINE Developers Consoleのアカウントを作成
  2. APIを利用するプロバイダーを登録
  3. Messaging APIチャネルを作成し、アクセストークンとチャネルシークレットを取得

Screenshot 2025-07-07 19.44.53.png
それぞれ適当に命名。
なお、2024年9月にコンソールから直接チャネルを作成できなくなったようなので注意です。

AWS側のリソースについて

CloudFormationで作成しました。

yaml

AWSTemplateFormatVersion: '2010-09-09'
Description: 'LINE Messaging API Integration with Lambda, DynamoDB and Secrets Manager'

Parameters:
  LineChannelSecret:
    Type: String
    Description: LINE Channel Secret for request validation
    NoEcho: true
  LineChannelAccessToken:
    Type: String
    Description: LINE Channel Access Token for sending messages
    NoEcho: true
  ResourcePrefix:
    Type: String
    Description: Prefix for resource names to avoid conflicts
    Default: line

Resources:
  # Secrets Manager - LINE API Secrets
  LineApiSecrets:
    Type: AWS::SecretsManager::Secret
    Properties:
      Name: !Sub ${ResourcePrefix}-api-secrets
      Description: Secrets for LINE Messaging API
      SecretString: !Sub '{"channelSecret":"${LineChannelSecret}","channelAccessToken":"${LineChannelAccessToken}"}'
      Tags:
        - Key: Project
          Value: LineMessagingIntegration

  # DynamoDB Table
  LineMessagesTable:
    Type: AWS::DynamoDB::Table
    Properties:
      TableName: !Sub ${ResourcePrefix}-messages
      BillingMode: PAY_PER_REQUEST
      AttributeDefinitions:
        - AttributeName: messageId
          AttributeType: S
        - AttributeName: timestamp
          AttributeType: S
      KeySchema:
        - AttributeName: messageId
          KeyType: HASH
        - AttributeName: timestamp
          KeyType: RANGE
      Tags:
        - Key: Project
          Value: LineMessagingIntegration

  # Lambda Function
  LineWebhookFunction:
    Type: AWS::Lambda::Function
    Properties:
      FunctionName: !Sub ${ResourcePrefix}-webhook-processor
      Runtime: python3.11
      Handler: index.lambda_handler
      Role: !GetAtt LambdaExecutionRole.Arn
      Timeout: 30
      MemorySize: 128
      Environment:
        Variables:
          TABLE_NAME: !Ref LineMessagesTable
          SECRET_ARN: !Ref LineApiSecrets
      Code:
        ZipFile: |
          import json
          import boto3
          import os
          import time
          import uuid
          import base64
          import hmac
          import hashlib
          from datetime import datetime

          # クライアントの初期化
          dynamodb = boto3.resource('dynamodb')
          secretsmanager = boto3.client('secretsmanager')
          table = dynamodb.Table(os.environ['TABLE_NAME'])
          
          # シークレットの取得
          def get_secrets():
              secret_arn = os.environ['SECRET_ARN']
              response = secretsmanager.get_secret_value(SecretId=secret_arn)
              secret_string = response['SecretString']
              return json.loads(secret_string)
          
          # シグネチャの検証
          def verify_signature(event, channel_secret):
              signature = event['headers'].get('x-line-signature')
              if not signature:
                  return False
                  
              body = event['body']
              hash = hmac.new(channel_secret.encode('utf-8'), body.encode('utf-8'), hashlib.sha256).digest()
              calculated_signature = base64.b64encode(hash).decode('utf-8')
              
              return signature == calculated_signature

          def lambda_handler(event, context):
              try:
                  # シークレットの取得
                  secrets = get_secrets()
                  channel_secret = secrets['channelSecret']
                  
                  # シグネチャの検証
                  if not verify_signature(event, channel_secret):
                      return {
                          'statusCode': 200,  # LINEプラットフォームには常に200を返す
                          'body': json.dumps({'message': 'Invalid signature'})
                      }
                  
                  # リクエストボディの取得
                  body = json.loads(event['body'])
                  
                  # LINE Messaging APIからのイベントを処理
                  if 'events' in body:
                      for line_event in body['events']:
                          # イベントタイプの確認(メッセージ、フォロー、ブロックなど)
                          event_type = line_event.get('type')
                          
                          # メッセージイベントの場合
                          if event_type == 'message':
                              message = line_event.get('message', {})
                              user_id = line_event.get('source', {}).get('userId')
                              
                              # DynamoDBに保存するアイテムを作成
                              item = {
                                  'messageId': message.get('id', str(uuid.uuid4())),
                                  'timestamp': line_event.get('timestamp', str(int(time.time() * 1000))),
                                  'userId': user_id,
                                  'type': message.get('type'),
                                  'replyToken': line_event.get('replyToken'),
                                  'receivedAt': datetime.utcnow().isoformat(),
                                  'rawEvent': json.dumps(line_event)
                              }
                              
                              # メッセージタイプに応じて追加情報を格納
                              if message.get('type') == 'text':
                                  item['text'] = message.get('text')
                              elif message.get('type') == 'image':
                                  item['contentProvider'] = message.get('contentProvider')
                              elif message.get('type') == 'location':
                                  item['title'] = message.get('title')
                                  item['address'] = message.get('address')
                                  item['latitude'] = message.get('latitude')
                                  item['longitude'] = message.get('longitude')
                              
                              # DynamoDBにアイテムを保存
                              table.put_item(Item=item)
                          
                          # その他のイベントタイプ(フォロー、ブロックなど)
                          else:
                              # 基本情報を保存
                              item = {
                                  'messageId': line_event.get('webhookEventId', str(uuid.uuid4())),
                                  'timestamp': line_event.get('timestamp', str(int(time.time() * 1000))),
                                  'type': event_type,
                                  'userId': line_event.get('source', {}).get('userId'),
                                  'receivedAt': datetime.utcnow().isoformat(),
                                  'rawEvent': json.dumps(line_event)
                              }
                              
                              # DynamoDBにアイテムを保存
                              table.put_item(Item=item)
                  
                  # LINE Messaging APIへの応答(ステータスコード200を返す必要がある)
                  return {
                      'statusCode': 200,
                      'body': json.dumps({'message': 'Event received and processed successfully'})
                  }
                  
              except Exception as e:
                  print(f"Error processing event: {str(e)}")
                  # エラーが発生しても200を返す(LINEプラットフォームの要件)
                  return {
                      'statusCode': 200,
                      'body': json.dumps({'message': 'Event received with processing errors'})
                  }

  # Lambda実行ロール
  LambdaExecutionRole:
    Type: AWS::IAM::Role
    Properties:
      AssumeRolePolicyDocument:
        Version: '2012-10-17'
        Statement:
          - Effect: Allow
            Principal:
              Service: lambda.amazonaws.com
            Action: sts:AssumeRole
      ManagedPolicyArns:
        - arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole
      Policies:
        - PolicyName: DynamoDBAccess
          PolicyDocument:
            Version: '2012-10-17'
            Statement:
              - Effect: Allow
                Action:
                  - dynamodb:PutItem
                  - dynamodb:GetItem
                  - dynamodb:UpdateItem
                  - dynamodb:Query
                Resource: !GetAtt LineMessagesTable.Arn
        - PolicyName: SecretsManagerAccess
          PolicyDocument:
            Version: '2012-10-17'
            Statement:
              - Effect: Allow
                Action:
                  - secretsmanager:GetSecretValue
                Resource: !Ref LineApiSecrets

  # API Gateway
  LineWebhookApi:
    Type: AWS::ApiGateway::RestApi
    Properties:
      Name: !Sub ${ResourcePrefix}-webhook-api
      Description: API for LINE Messaging webhook
      EndpointConfiguration:
        Types:
          - REGIONAL

  # APIリソース
  WebhookResource:
    Type: AWS::ApiGateway::Resource
    Properties:
      RestApiId: !Ref LineWebhookApi
      ParentId: !GetAtt LineWebhookApi.RootResourceId
      PathPart: webhook

  # POSTメソッド
  WebhookMethod:
    Type: AWS::ApiGateway::Method
    Properties:
      RestApiId: !Ref LineWebhookApi
      ResourceId: !Ref WebhookResource
      HttpMethod: POST
      AuthorizationType: NONE
      Integration:
        Type: AWS_PROXY
        IntegrationHttpMethod: POST
        Uri: !Sub arn:aws:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${LineWebhookFunction.Arn}/invocations

  # APIデプロイメント
  ApiDeployment:
    Type: AWS::ApiGateway::Deployment
    DependsOn: WebhookMethod
    Properties:
      RestApiId: !Ref LineWebhookApi
      StageName: prod

  # Lambda関数の実行権限
  LambdaPermission:
    Type: AWS::Lambda::Permission
    Properties:
      Action: lambda:InvokeFunction
      FunctionName: !Ref LineWebhookFunction
      Principal: apigateway.amazonaws.com
      SourceArn: !Sub arn:aws:execute-api:${AWS::Region}:${AWS::AccountId}:${LineWebhookApi}/*/POST/webhook

Outputs:
  WebhookUrl:
    Description: URL for LINE webhook
    Value: !Sub https://${LineWebhookApi}.execute-api.${AWS::Region}.amazonaws.com/prod/webhook
  DynamoDBTableName:
    Description: DynamoDB table name
    Value: !Ref LineMessagesTable
  SecretArn:
    Description: ARN of the Secrets Manager secret
    Value: !Ref LineApiSecrets

アクセストークンとシークレットはSecret Managerに格納して参照する構成を取りました。

LINEとAWSの連携部分

両リソースが作成できたので、これを繋げます。
API Gatewayから払い出したURL(https://xxxxxxxxxx.execute-api.ap-northeast-1.amazonaws.com/prod/webhook)を、
LINE Developersコンソール>Messaging API設定>Webhook設定から登録し、「Webhookの利用」を有効にします。

動かしてみる

unnamed.jpg
メッセージを送信してみる。
この時気づきましたが、帰って来るメールのカスタマイズも今後必要ですね。

Screenshot 2025-07-08 01.11.59.png
DynamoDB側で、送信メッセージが格納されていることが無事確認できました!

今後の展望

連携方法は理解できたので、近々家計簿など用途を考えてみたいと思います。
構成としては格納先をAWS外で無料で使えるもの(notionなど)にしてみる、
LINE側の返答のカスタマイズ、項目やテーブルのカスタマイズなど、
やってみたいことはたくさんあるので、しばらく遊べそうです。





Source link

Views: 0