株式会社medibaのブログ - TECH PLAY

TECH PLAY

株式会社mediba

株式会社mediba の技術ブログ

205

はじめに エンジニア組織でグループリーダーをやっているチェです。 今回は、社内のモバイルアプリ開発チームで採用しているFlutterでの開発についてお話しします。 現在、モバイルアプリのメイン技術としてFlutterを選定し、開発を進めています。 Flutterという技術選定によって、どのような開発体験がもたらされたのか。 そして、その高い生産性を維持し続けるために、どのようなアーキテクチャとして採用しているのかについて共有したいと思います。 チーム内でのFlutterのアーキテクチャ https://docs.flutter.dev/app-architecture/guide
はじめに 株式会社medibaでバックエンドエンジニアをしているRetchです。 社内でのAI利用が当たり前になり、 開発や意思決定の中にAIが自然に組み込まれるようになってきました。 その過程で、AI活用に関する記事や議論に触れる機会も増え、 いくつか気になる点を感じるようになりました。 本記事では、そうした日々の体感をもとに、 AI時代にエンジニアとして意識しておきたい考え方を整理します。 1. 「AIがやったから」は責任を免除しない 最近、「とりあえずAIでやった」という言葉を耳にすることが増えています。 この表現自体が問題だとは思いません。 正しく使えば、AIは非常に強力
はじめに 初めまして、システムディレクターの浜崎です。 私は元々フロントエンジニアとして、開発現場でコードを書いていましたが、 今後のキャリアを見据えて、2年程前にシステムディレクターという役割に転身しました。 今回は弊社のシステムディレクターについてお話ししていきます。 弊社のシステムディレクターとは 役割を一言で言えば、ディレクター(企画者・顧客)が求める「ビジネス的な要望」と、開発者が求める「技術的な整合性」の間に入り、落とし所を見つける仕事です。 また、スケジュールの管理や先方とのやり取り、必要であればコードを書くなどなんでもします。 『縁の下の何でも屋』という言葉があれ
! この記事の対象読者 採用活動を「業務外の雑務」と感じてしまい、少し距離を置いているエンジニアの方 チームの採用がうまくいかず、リソース不足に悩むテックリードやマネージャーの方 自身のエンジニアとしての視野や可能性を広げたいと考えている方 はじめに 「採用は人事の仕事で、エンジニアはコードを書くことに集中すべき」 そんな風に、採用活動を少し遠いものに感じている方は多いかもしれません。 私はこれまで人事部で10年ほど採用に携わってきましたが、現在は開発現場におり、techと人事を繋ぐ立場として採用もお手伝いしています。 この「tech(現場)」と「人事」の両方の視点を行き来する
Introduction ! この記事は、 mediba アドベントカレンダー2025 の25日目最後の記事です。 25年度はアドベントカレンダーのスタートとエンドを任されました、medibaでCTO/VPoEを やっている下地です。 タイトルの通りですが、CTOに就任して10月で1年、執行役員CTOとなって8ヶ月が経ち、無事に“CTO2年生”になりました。そこで今回振り返りを兼ねて、この1年間でCTOとして実施してきたことを記述していきます。"medibaのCTOはこんなことをしているんだ"という理解を少しでも持っていただければ幸いです。 以前から実施している主な業務 VPo
! この記事は、 mediba アドベントカレンダー2025 の24日目です。 はじめまして、横断システム部のずーんです。 概要 エンジニア以外の開発者(市民開発者)へSaaSのAPIキーを安全に提供し、管理する方法を考えました。弊社でよく使われる Google Apps Script(GAS) を事例にプロトタイプを実装しました。この記事ではその実装方法と検証結果について解説します。 背景 近年、生成AIの登場とローコードツール等の発展によりエンジニア以外の開発者(市民開発者)がプログラムを自作して利用することが弊社内で増加傾向にあります。プログラムを有効に活用するためにはS
今までmediba Creator × Engineer Blogとして本テックブログを運用して参りましたが、諸事情によりZennへと移設しリニューアル致しました。 今後の投稿は mediba Tech Blog へ行いますのでぜひ御覧ください。 本ブログの記事については移行せずにアーカイブとしてしばらくは残す予定です。 長年ご愛顧いただき誠にありがとうございました。また、今まで本ブログに執筆していただいた方々へも感謝を申し上げます。 引き続き新ブログでもよろしくお願い申し上げます。 株式会社 mediba テクノロジーセンター テックブログ運用担当 mediba テックブログ
! この記事は mediba Advent Calendar 2025 の20日目の記事です 記事の内容は個人的な見解であり、会社を代表するものではありません はじめに @hrktcy です。めでたくZennに弊社テックブログを開設しまして、2025年のアドカレはZennで執筆したいと思います。 さて、Go 1.20でプレビュー、1.21で正式機能となったPGO(Profile-Guided Optimization)ですが、バージョン更新とともに改善が行われてきました。最新ではGo 1.25も登場し、すでに商用環境でも安心して使える標準的な最適化手段になってきているかと思います。
はじめに この記事はmediba Advent Calendar 2025の19日目の記事です。 medibaにバックエンドエンジニアとして所属している@mdbr92です。 肩書はバックエンドエンジニアですが、実際にはフロントエンド・API・バッチ処理などアプリケーション全体の開発を担当しており、フロントエンドもバックエンドも対応できるNode.jsを特に好んで使用しています。 Node.jsに近年追加された便利機能 そんなNode.jsは、Denoやbunなどの競合ランタイムの登場もあってか、近年急速に進化しています。 そこで本記事では、ここ数年でNode.jsに追加されたり正
はじめまして。mediba Advent Calendar 2025 21日目担当の @threetenthreeです。 私は、ビジネスプロセスマネジメント(BPM)の専門家として、業務改善支援を担当しています。 昨今のトレンドといえば「生成AI」ですが、業務改善には「ECRSの原則[1]」という基本フレームワークがあり、効率化は、まずこの原則に従うべきです。生成AIもあくまで『数ある解決策の一つ』と捉えています。 業務改善という仕事は後回しにされがちです。そして「業務改善=コスト削減(守り)」と思われがちですが、AI時代においては「新しい価値を生むための土台作り(攻め)」だと思います。
はじめに この記事は、mediba Advent Calendar 2025 の13日目の記事です。 mediba でバックエンドエンジニアをしている堀です。 エンジニアのキャリアでは、前に立つリーダーや実装を担うメンバーが注目されがちですが、その間でチームを支える役割もあります。 私は今、リーダーの推進力と現場の実装の間に立ち、プロダクトが安定して進むよう“守りの技術”を意識して働いています。 この記事では、なぜ自分がこの立ち位置にいるのか、そしてどんな視点で設計・実装・コードレビューなどを行っているかをまとめました。 支える側とはどういう役割か 支える側の役割を一言で表すと、
はじめに Next.js 15.2 以降で、サーバーサイドの情報をもとに動的にメタデータを生成しているページだけ、メタタグが <head> ではなく <body> に出力されてしまうという現象が確認されました。 静的ページでは正常に <head> に入るため、原因がコードなのか、Next.js の仕様なのか、切り分けが少し難しい問題でした。 同じ状況に遭遇した方の参考になればと思い、原因と回避策をまとめます。 問題の概要 発生していた状況は次のようなものでした。 サーバーサイドでデータ取得 → generateMetadata() で動的メタ
はじめに この記事は mediba Advent Calendar 11日目の記事です。 バックエンドエンジニアをしている山口です。medibaに入社して約7年になります。 7年もこの業界でエンジニアをしているにも関わらず、 私はこれまでマークアップという業務に一切関わってきませんでした。 そんな私が、今回はじめて業務で .html をデプロイした話をします。 動機 デプロイに至ったきっかけはいくつかありますが、 現在のプロジェクトから離れることが決まった。 生成AIの成長が加速度的に進化している。 が大きな理由でした。 現在のプロジェクトから離れることが決まった 皆さん
Introduction ! この記事は、 mediba アドベントカレンダー2025 の10日目です。 株式会社medibaでエンジニア組織マネージャーと複数プロダクトの開発責任者を担当している船田です。 新規プロジェクトや新機能の検討時、ビジネス担当やクライアントからこう聞かれた経験はありませんか? 「ねぇ、これ、ざっくり1,000万円くらいでできる?」 「これってざっくりどのくらいでできるかな?」 この「ざっくり」という問いかけの裏にある、ビジネス側の真の意図は、意思決定のための目安を求めているのです。 投資対効果に見合うか。 他の並行案件と比較したプロジェクトの優先度決め
はじめに この記事は mediba Advent Calendar 8日目の記事です。 エンジニア組織でマネージャーを務めているチェです。 medibaに入社して約6年、マネージャーになってから約3年が経ちました。 マネージャーになってから ちょっと技術的な話よりは、私自身のキャリアの「リファクタリング」についてお話しします。 エンジニアとして約10年間、ライフサイクルの管理やメモリリークなどと戦い続けてきたのですが、この3年間マネージャーとして何を感じて、何が変わったのか。 「現場を離れるのが怖い」、「マネージャーになると技術力が落ちるのではないか」 そんな不安を感じているエン
株式会社medibaの田中です。 新卒で入社して今年で3年目になります。バックエンドエンジニアしてます。 もうすぐ大晦日&お正月。帰省したり、親戚の家に行ったりする時期が近づいてまいりました。 私も就職を機に親元を離れた身。実家の犬にジャーキーを献上するミッションがあります。 ミッションはジャーキー献上だけではありません。帰省したら必ず訪れる、もう一つの大ミッション。それが、親戚一同が集まる食卓での あんた仕事何してんの? 難問です。 お茶の間の難問と「裏方」の宿命 一言に「エンジニア」と答えても伝わりません。年代や職業によって「エンジニア」から想像するお仕事は変わることがあります。
株式会社medibaの田中です。 新卒で入社して今年で3年目になります。バックエンドエンジニアしてます。 本記事では、私が昨年の12月から支援している学生インターン育成の取り組みについてご紹介します。 指導の核となっているのは、「教えない勇気」 というアプローチです。 11/10に行われたKGDC内での発表内容と同じです。使用したスライドは↓ 育成の目的と体制 このインターンシップの期間は2024年12月〜2027年3月。学生(1名)が卒業するまで継続中です。 期間から察する通り、対象学生は内定者ではありません。 そのため、育成のゴールは 学生が 「自信」と「報連相」 を身につけ、
はじめまして、または、お久しぶりです。medibaテックブログ運用担当です。 これまで mediba Creative x Engineer Blog で発信を行ってきましたが、この度ブログをZennに移設することにしました。 移設に至った経緯についてをご紹介いたします。 技術ブログ移設の理由 旧技術ブログでは過去様々な投稿がありましたが、正直なところ今では下火になってしまいました。振り返ってみて投稿が減ってしまった主な要因を考えてみました。 管理画面での記事投稿が非常にしづらい 旧技術ブログの裏側で利用していたTumblrはマイクロブログ用のSNSであるため長文を記述するのに向
この記事は medibaアドベントカレンダー 2025 3日目の記事です。 はじめに mediba でフロントエンドエンジニアをしている y_nakahata です。 私の所属している開発チームでは、2025年度から業務で GitHub Copilot を使用しています。この記事では、mediba の開発プロジェクトでの活用事例をご紹介します。 概要 初めに、プロジェクトの概要についてご説明します。詳細は公開できないのですが、あるプロダクトの技術スタックを PHP から Next.js に置き換える技術刷新プロジェクトでした。 PHP でフロントエンドとバックエンドの両方が実装さ
はじめに こんにちは、データアナリストの左海です。 担当中の案件にて、対象ページを別ドメイン上(クロスサイト)でiframe呼び出しすると GA4イベントが送信されないという事象に遭遇しました。 今回は、本事象の原因と解決策について書いていきます。 事象 以下の前提を踏まえて、事象について説明していきます。 iframe呼び出し元、呼び出し先ドメインの関係は「クロスサイト」に該当する 両ドメインは、page_viewイベントなど基本的なGA4イベントの計測設定済 GA4ログの疎通確認は、Google Chromeの開発者ツールのNetworkパネルで行った 添付画像の通り、a.com上で、b.comをiframe呼び出ししていたのですが なぜかb.comのGA4イベントの送信のみ確認できませんでした。 原因 調査したところ、Google Chromeの仕様変更が原因であることが判明しました。 On top of these, in the latest version of the Google Chrome browser, the cookie will also be treated as having the SameSite=Lax flag. This means the cookie will not work when accessed in a third-party context. 引用: THE NEW COOKIEFLAGS SETTING IN GOOGLE ANALYTICS Google Chrome 80の仕様変更により、CookieのSameSite属性のデフォルト値が「None」から「Lax」に変更となり、サードパーティコンテキスト(クロスサイト)のCookieの書き込みが拒否されるようになったようです。 その結果、b.comからGA Cookieへの書き込みが拒否され、GA4イベントが送信できなかったということです。 解決策の前に、クロスサイトやCookieのSameSite属性についても触れておきます。 クロスサイトとは クロスオリジンのような似た語句が多く、混乱する可能性が高いため「クロスサイト」について整理しておきます。 クロスサイトは、スキームやeTLD+1が異なるウェブサイトを指します。 例として、以下のパターンが該当します。 また、Google Chromeの開発者ツールのNetworkパネルでもクロスサイトかどうかの確認が可能です。 任意のファイルの「Request Headers」の「Sec-Fetch-Site」ヘッダーの値を確認し 添付画像のように、値に「cross-site」と表示されていれば「クロスサイト」となります。 参考: 「Same-site」と「same-origin」 CookieのSameSite属性とは CookieのSameSite属性とは、Cookieの取り扱いに関するセキュリティレベルを指定するための属性です。 Google Chrome 80の仕様変更の背景として、GoogleがCSRF(Cross-site Request Forgeries)対策としてブラウザレベルでセキュリティ対策を施したようです。 繰り返しになりますが、クロスサイトにおけるGA Cookieの書き込みもセキュリティ対策の対象となり、GA4ログの送信ができませんでした。 なお、SameSite 属性に設定可能な値は、None、Lax、Strictの3種類で それぞれの設定値の詳細については、以下のサイトをご確認ください。 参考: Using HTTP cookies - HTTP ※ SameSite=None が設定されている場合、必ずSecure属性も付与しCookieの書き込みをHTTPS通信に限定する必要があります 解決策 解決策は、GA CookieのSameSite属性の値を「None」に設定するのみです。 今回、GA4イベントの計測はGTM経由で行っていたため、対象のGoogleタグの構成パラメータ「cookie_flags」の値に 「SameSite=None;Secure」と設定すれば、完了です。 おわりに 本事象に遭遇して、改めてアクセス解析におけるCookieの重要性を再認識することができました。 同時に、データアナリストはインターネットに関係するドメイン知識を可能な限りインプットしておく必要があると感じました。 引き続きあらゆることに興味をもって業務に取り組んでいきます。