テクノロジーで新しい価値を創造し クライアントの成功を共に創る
ジーニーは最先端の広告テクノロジーで
顧客の収益を最大化します。
こんにちは、人事の見並です。
今回は、弊社のエンジニアが母校から招待を受け、大学1・2年生向けに授業を行うことになったため、私も授業風景の取材に同行してきました。
授業を行ったのは千葉大学。「現代社会で働くこと」というテーマで、実社会で働いている卒業生を特別講師に迎えて講演を行ってます。
今回講師となった弊社のエンジニアは、千葉大学の文学部から大学院で統計学を扱う分野へと進み、2014年に新卒入社で弊社に入りました。
データマイニングの分野に専門性を持つ一方、システム開発に関する知識や経験は少なかったため、入社後はWEBシステムの開発エンジニアとしてキャリアをスタートしました。その後、持ち前の専門性を活かす分野へとキャリアを進めるべく、データエンジニアとしてGenieeDMPやMAJINといったプロダクトの開発に携わっています。
※先日、彼が深く携わったマーケティングオートメーション「MAJIN」の新機能「AIスコアリング」についてプレスリリースが発表されました。
http://geniee.co.jp/news/20171107/100
そういった自身の学生時代や働き始めてからのキャリアなどを一つ一つ振り返りながら、節目節目で訪れる自身の進む方向を決める決断のタイミングや、その時々の背景などを丁寧に母校の学生へ伝えていました。
その中でも一際聞いている学生たちが耳を傾けていたのは、自身のプライベートな部分もオープンに話したエピソードでした。現在結婚をして一児のパパとなっている彼にとって、働くことを語る上で家庭のことも重要な人生のファクターです。
子供に起こされる朝の時間から、仕事をして帰宅、就寝するまでのとある一日を紹介するなど、学生の方々ができるだけ自身の未来を想像していけるように「そんな話までするの?」ということまでを赤裸々に話していました。
今回の対象学年が1~2年生中心だったこともあり、最後は学生生活から実社会に出た後も共通して大切にすることとして、「やり続けること」について話し、講義は終了しました。
弊社へ初めて訪れた日から3年以上、道が用意されていないベンチャー企業の中で、自身でその進む先を切り開いて一つ一つステップを踏んできた姿が思い出され、個人的に感慨深いものがありました。
さて、ジーニーではアカデミックなバックグラウンドを活かし、一緒に事業を作っていただけるエンジニアも積極的に募集しています。弊社に遊びにきていただいた方にオフィス内をお見せすることも多いのですが、時々「研究室のような雰囲気を感じる」と言われることがあります。
少しでもご興味を持っていただける方は、是非遊びにきてください!
https://geniee.co.jp/recruit/
こんにちは。R&D本部マーケティングオートメーション開発部の杉野です。
今回はMAJINのHTTPS対応についてお話していこうと思います。
昨今はWebのHTTPS化が強いトレンドとなっており、企業が運営するWebサイトのHTTPS化が進んできております。 最近のブラウザベンダの施策により、WebサイトをHTTPS化しない場合、以下のようなデメリットが発生することとなります。
もちろんこれらのデメリットがあることは別としても、MAJINはお客様の情報を参考にマーケティングの最適化を行う都合上、暗号化を通さずに通信するべきでない内容を取り扱っております。 そのため、通信内容を暗号化しておくことは重要な責務だと認識して対応を行っています。
MAJINの各種機能を利用するために使用するMAJINタグは、デフォルトでHTTPSで通信するように設定されています。 MAJINのHTTPS通信に使われている証明書はブラウザで確認することができますので見てみましょう。
ご覧の通りこの証明書の発行元はAmazonとなっております。
MAJINのサービスはAWS上で動いており、この証明書はAWSのサービスの1つである証明書取得サービスで取得・設定したものです。 当然ながら有効な証明書となっていますので、MAJINタグはHTTPSによる通信で取得することが可能です。
HTTPSは単純に証明書を設置してデフォルトの設定で運用するだけでは、セキュリティ上の問題が残る場合があります。
例えばプロトコルのSSL3.0を有効にしたままでは、POODLEという攻撃手法のターゲットとなります*4。
また、RC4などの仕様上存在する弱い暗号を有効にしたままでは、暗号を解読され通信内容を盗み見られる可能性もあります*5。
このような設定は知識がないと正しく行うことが難しいのですが、 Firefoxの開発元であるMozillaが、サーバ毎に最適な設定を行えるツールを公開している他、 Qualys SSL Labsでは、HTTPSの設定をしたページのセキュリティレベルを診断するツールを公開して います。
こちらの診断ツールでMAJINタグのセキュリティレベルを調査した結果が以下となります。
十分なレベルを確保していることがおわかりいただけるかと思います。
また最近では、HTTPS化が前提の先進的サービスも増えてきています。
最初に説明した通り、高速通信規格であるHTTP/2はHTTPSでなければ有効化できません。 また、MAJINで提供しているサービスの1つで使用しているWebPushも、そのようなサービスの1つです。
WebPushは、スマートフォンアプリで使用されている「Push通知」を、Webブラウザでもで行えるようにするものです。 アプリ開発なしにPush通知を送信できるということで、新機能ながらお客様に好評を頂いているのですが、こちらの機能は導入に際してページのHTTPS化が必須となっています。上記のとおりMAJINはHTTPS化してあるため問題ないのですが、導入先のページもHTTPS化する必要があります。
元々HTTPS化してあるサイトであるか、もしくはHTTPS化の予定があるサイトであれば問題なく導入でき、こちらの方がオプションが豊富なのですが、 中にはどうしても導入サイトのHTTPS化はできないが、WebPushを導入したいというお客様もいらっしゃいます。
そういった場合には、MAJINでWebPush登録専用のHTTPS化されたページを設定し、お客様のサイトからはこのページに誘導するリンクを設置することで、MAJINが管理するページでWebPush登録を代行する、という回避策を取っています。
MAJINでは、お客様の情報を守るため、および先進的なサービスを提供するために、積極的なHTTPSの導入を行っております。情報セキュリティ分野は日々情報が更新されるため、現在MAJINに施している設定も半年後には古いものになっているかもしれません。
そのような中でも最新の対策を適用し、安心して情報を任せていただけるようなサービスを提供し続けられるよう、日々努力しています。
こんにちは!人事の藤本です。今回は、先日開催した下期のキックオフについてご紹介します。
ジーニーでは、キックオフを会社の方向性を伝えるための大切な行事と捉えています。その時々の会社の状況や課題などを踏まえ、内容や構成を毎回変更していますが、今回は3部構成に分け、1部で上期の振り返りと下期の方針発表、2部は上期表彰、3部は懇親会を行いました。それではレポートをしたいと思います。
まずは社長の工藤より全体発表があり、その後各部の部長・本部長より各部の発表がありました。ジーニーは前期に引き続き大きく成長していますが、この発表の場はただ数字や下期のTo Doの発表をするものではありません。上期できた事、できなかった事、下期のテーマと、ジーニーが次のフェーズに行くために打破しなければならない壁。そしてそれを具体的にどのように乗り越えていくのかといったといった事が共有されました。中には厳しい話もありましたが、社長含め、各事業部の部長・本部長達が、ジーニーの事業にフルコミットしていくという強い想いが伝わる場でした。
上記でも触れた通り、ジーニーは上期も大きく成長しましたが、それは社員1人ひとりの努力と成長があったからです。
インドネシアとの共同プロジェクトのチャンスを自ら勝ち取り、プロジェクトを前進させた新卒1年目の社員。部署の売上の半分を単独で運用し、安定的に高い成果を出すひたむきな姿勢、数字へのこだわりが全社員の見本となる社員。「かっこいいエンジニア」という目標を掲げて、自分達で必要だと思う、最先端ですぐれた技術を開発したチーム。など、特に事業への貢献度の高い社員が、総勢11名選ばれました。
発表では直属の上司からメッセージも伝える場面も。普段恥ずかしくてなかなか言えないからか、微妙な距離感の上司部下や、感極まって泣きそうになり言葉に詰まってしまう社員もいました。
司会はこの2人。社員に愛されているこの2人が登場するだけで会場は大盛り上がり。
クイズ大会は、上期のジーニーの歴史を振り返り、社員にまつわるエピソードをネタにしたものです。皆お互いの事を良く知っていて、ほとんどの人が正解し、結局じゃんけん大会になってしまいました。
以上、下期キックオフのレポートでした!!!!!!
こんにちは、人事の高橋です。
10月1日(日)は2018年度入社の新卒内定式と研修を行いました。
総勢35名のメンバーが、晴れやかな表情で参加してくれました!
その様子をご紹介します。
当日は、午前中に内定式を実施。
代表の工藤から、社会人としての心構えとして、
・若さを生かし多くのことを吸収して、難しいことでも何とかしてやり切ることを意識しましょう。やり切ることで、大きく成長し続けてくれるのを期待しています。
・私はいつも困難な道を選択してきたのですが、今では良かったと思っています。いつも困難な道を選んでいると、難しい課題にぶつかっても簡単に思えるようになります。
というメッセージがありました。
また、CTO篠塚からは、
・自分の「ものさし」を持ちましょう。そのためには、準備や経験・勉強が必要です。
・ジーニーには、機会がたくさん転がっています。その機会をいつでも掴み活かせるよう、自分自身の準備をしておきましょう。
というお話をしました。
その後、一人ひとりに内定証書の授与し、入社後の抱負を発表してもらいました。
抱負では、「世界一の組織を作るためにここに来ました」という話も!
本当に入社が待ち遠しいです。
第二部は研修でした。代表工藤、人事、事業本部長など総出で実施!
研修のグループワークでは、GenieeValueについて考えてもらいました。
ジーニーの文化や社会人としてのスタンス研修を踏まえて、次回1月の研修で発表するでグループワークにおいてどんなことを目標として取り組むのかを議論中。
みんな熱く、真剣です!
最後は懇親会で現場社員も交えて交流です。
内定者同士や社員とも、交流を深めていただけたのではないでしょうか。
次回研修では、今回出された課題を内定者が発表予定です。どんなアウトプットが出てくるか今から楽しみです!
こんにちは、人事の高橋です。
先日、中途採用エージェント様向けの説明会を実施いたしました!
実は数年ぶりの開催となります。
想定人数をはるかに超え、多くの採用エージェント様にお集まりいただきましたこと、この場をかりて、心より感謝申し上げます。
その際の様子をご紹介したいと思います。
この説明会のテーマは「直近のジーニーの事業状況や、文化や雰囲気といった社内の状況、そして採用活動のリアルな状況を伝えたい」ということ。
まずは採用フロント担当の見並より直近の事業状況を説明させていただきました。
ジーニーの沿革、直近の売上、プロダクト、事業・技術面の他社比較、海外事業、経営の仕組み・サイクルなどをお伝えしました。
中には、過去のターニングポイント、社運をかけてプロダクトをフルリニューアルしたことなど、「ぶっちゃけ話」なお話も。
次に文化や社内施策の説明を田村から。
社名の由来、高い志を持ったプロフェッショナル集団でありたいこと、ジーニーの文化や社内の取り組みをついてお話ししました。
ジーニーの文化であるGenieeValueの体現エピソード、活躍人材の話ではこんな話も。
・座席でも立ち上がって議論がすぐ始まる
・壁がホワイトボードになっておりそこに図を描きながら議論が始まる
・エンジニアたちが通常業務をしながら世界基準の機能を新に開発をしたら格好良くない?と言って本当に開発、リリースに至った話, etc.
また、入社者フォローのためのFirst 90Days Programsや上司部下との1on1、13職種の必須スキルを明文化した新人事制度など、独自の取り組みや研修プログラムをご紹介しました。
最後に藤本より採用状況説明と、取締役廣瀬も参加し、質疑応答を行いました。
採用の状況は、ポジションごとの採用活動の進捗状況、ジーニーの採用手法、選考フローにおける実際の通過率、合格理由・不合格理由など、リアルな状況をお伝えしました。
廣瀬からは、なぜ世界を目指すのか、競合他社と比べた際の優位点、圧倒的なシェアを取っていける理由、各ポジションの方にはどういった期待をして募集をしているか、などをお話ししました。
ジーニーでは中途採用を強化しており、エージェント様とも良いリレーションシップを築いていければと考えています。
また、今回の反省点を活かし、次回につなげてまいります。
今後は定期開催していきたいと思いますので、引き続きよろしくお願いいたします。
採用情報はこちらから
採用エージェント様で専用管理ツールのIDをお持ちでない方はrecruit@geniee.co.jpまでご連絡をお待ちしています!
こんにちは。R&D本部経営情報システム開発部の友安です。
経営情報システム開発部では、社内システム・プロダクト横断でのお金周りの開発や監査対応、社内のコミュニケーション効率化など、多岐にわたり社内の問題解決に努めています。
ジーニーでは広告配信成果の分析、定形のデータ抽出作業の自動化にOSSのBIツールであるRedashを使っています。
既に各所で紹介されていますが、Redashは様々なデータソースに対するクエリを作成し、それらと実行結果を共有できるWebアプリケーションです。以前の記事で紹介したclickhouseもデータソースとして使えます。クエリの実行結果をチャートやピボットテーブルにするビジュアライゼーションの機能も豊富です。
導入によって、データ分析の促進や定形のデータ抽出作業の効率化といった効果が出ています。
また、クエリにコメントをつける機能でクエリの意図(なぜこのようなクエリを書いたか・このテーブルは何かなど)を記載することによって、他チームの業務やテーブル設計のナレッジ共有にも繋がっています。
Redashの存在が社内でじわじわと広がると、「実はこれを一括で見られると嬉しい」とか「こういうデータを裏で持っているなら見たかった」といった要望が次々と出てきました。
今はクエリを書く非エンジニアのメンバーも現れてくれて、データを欲しい人がデータを出すということが増えました。
利用が増えると、「こうだったら良いのに」という要望が徐々に出てくるようになりました。 RedashはOSSなので、自分たちで実装することにしました。
実装した機能を以下で少し紹介します。
Redashには、クエリの実行結果の更新スケジュールを設定する機能があり大変便利なのですが、 より細かいスケジューリングをしたいという要望が出てきました。 Redashの更新スケジュールは、毎日X時更新や7日間ごとといった単位で設定します。 しかし、週2回更新してモニタリングしたいなど、 Redashの既存のスケジューリング機能では対応できない要望がありました。 そのような細かいスケジューリングに対応するため、月・木曜日更新や月初更新などの設定ができるようにしました。
この機能は本家でプルリク が出ていたのですが、開発が止まっていました。
そちらを元に実装しました。
Redashにはクエリの実行結果をフィルターする機能があります。
フィルタする値を選択する際に、全選択/解除のオプションを使えるようにしました。 やや小さめの改修ですが、このような細かいこともやっているという紹介でした。
最後に、先日作り始めた機能を紹介します。 弊社では、コミュニケーションツールにslackを採用しています。
多くのメンバーが頻繁にslackを利用しているため、slackとRedashが連携できれば、よりデータ活用を促進できる可能性がありました。
公式のslackbotがありますが、弊社では閉域網でRedashサーバを運用しているため、slackbot→ Redashサーバへのリクエストが届きません。
そこで、Redashでデータ更新があったときにRedashサーバからslackチャンネルに通知する設定をするSubscribe機能を実装することにしました。
私は月初になると「経理作業用のクエリを実行してはせっせとエクセルに貼り付けてメールで各所に送る」という作業を引き継ぎで行っていました。この作業をツールに任せたいというのがきっかけでした。
分析のためのデータ抽出依頼も頻繁に発生していたので、その解決にも繋がるのではと思いました(こちらの方がインパクトは大きい)。自分のマシンでマネージャーにデモをすると導入を即決。やるぞと思っているうちに、既にマネージャーが構築して使い始めていました。
Redashは Angular、Python Flaskで開発されているSPAです。私は業務ではPHPで社内システムの開発をしていることが多いので、普段業務で使うものとは異なる技術に触れて刺激になりました。
個人的には、SPA開発のキャッチアップが出来た点が収穫でした。
Redashには大変お世話になっているので、社内で好評かつ汎用性の高い機能についてはプルリクを出して本家にコントリビュートしたいところです。
こんにちは!人事の中里です。
先日、2018年4月入社予定の内定者向けに懇親会を開催しました。
ジーニーでは、2013年卒から新卒採用を行っていて、
年々採用数を増やしています。
今回の懇親会にも、30名超の内定者にご参加いただきました。
今から入社がとっても待ち遠しい、18新卒の皆さんの様子をご紹介します!
冒頭での、人事マネージャー高橋からの挨拶の場面。
皆さん真剣な眼差しで聞いています。
高橋からは、内定承諾の御礼や、最新の会社・事業状況、弊社の行動規範である「GENIEE VALUE」についてなどをお話しました。
今後の研修やイベントについてのご案内。
ジーニーでは、入社後はもちろんのこと、入社前の研修・イベントも手厚く行っています。
皆さんが少しでも不安なく入社の日を迎えられるように、また1日でも早く活躍してもらえるように全力でサポートします!
内定者の自己紹介の様子です。研究内容、部活動やサークルについて、趣味など、自由に話してもらいました。
「会社を世界一にするくらい頑張る」という所信表明があったり、音楽・ゲーム・スポーツなどの趣味の話があったりと、とても個性豊かな自己紹介でした。
このあとは、現場社員もまじえて食事会を行い、席替えなどもはさみながらタテ・ヨコの関係を深めました。
活発なコミュニケーションの中で、入社後の期待に満ちた会話が四方から聞こえてくる様子がとても印象的でした。
このイベントは、18新卒の内定者にとって、初めて同期と一同に会し、先輩社員との懇親を深められる機会でした。
私自身、初めての新卒採用・初めての内定者向けイベント開催企画で、
どうしたら内定者に少しでも楽しんでもらえるか、入社までの不安を少しでも軽減するために人事として何ができるか、そんなことを考えながら企画や準備をしていました。
今回、ほぼ全員が集まってくれたことに感動し、
内定者同士が自己紹介で同じ趣味を見つけたり、先輩社員にリアルな質問をしたりしている様子を見て、とても嬉しかったです。
内定承諾をしてくれた18新卒の皆さんには本当に感謝しているとともに、一緒に働けることを心から楽しみにしています。
今後も、アジアNo.1・世界No.1の実現に向けて、内定者の皆さんのフォローも全力で行っていきます!
いかがでしたか?
ジーニーでは、新卒採用に力を入れているのはもちろんのこと、
イベントや研修も充実しています。
ジーニーの採用情報が少しでも気になる方は是非
こちらからエントリーをお待ちしています!
こんにちは。広報の真鍋です。
突然ですが、皆さんは、コンテンツマーケティングの起源をご存じですか?
遡ること紀元前4200年頃、「槍で熊から身を守る6つの方法」と題された壁画が始まりと言われているそうです。
現在のように、マーケティングコミュニケーションの手法として使われるようになったのは、2000年代から。2004年に米国マイクロソフト社が世界初の企業ブログを開設したのを皮切りに、SNSが次々と登場・利用拡大していくにつれ、当たり前のように活用されるようになりました。日本では、2014年頃から本格的に活用されるようになってきています。
しかし、コンテンツづくりや活用。
結構大変なんです!
このコーポレートブログもそうですが、企画から制作、発信方法まで、各々の過程で悩みますし、継続していくのも至難の業。広報担当の私でもそうなので、きっと多くの企業のマーケティング担当の皆さんも悩まれていることとお察しします。
実は、マーケティングオートメーション(MA)ツールの活用という観点で、成果が上がるかどうかも、このコンテンツ戦略にかかっているんです。
マーケティングオートメーション「MAJIN」では、こうしたお悩みを解消すべく、企業のマーケティングご担当者様向けに、昨日「MA×コンテンツマーケティングという惹きこみ“力”」と題したセミナーを開催しました。
今回は、設立以来50年間、日本を代表する大手電機メーカーや化学メーカー等をサポートしてきたコンテンツマーケティングの老舗、日本SPセンター社から講師をお招きし、2部構成で行いました。
第1部では、日本SPセンター情報戦略室長の田所氏より、「コンテンツマーケティング的に「使える」MAのシナリオをつくる方法」についてお話いただきました。
コンテンツマーケティングとコンテンツSEO(Search Engine Optimization)の違いや、4つの型、実践方法、MAのシナリオとストーリーなど、コンテンツマーケティングの基本からMA上でどう活用できるかまで、わかりやすく説明していただきました。
MAJINのようなMAツールが器であるのに対して、コンテンツマーケティングは器の中に入る中身です。
MAツールを導入しても、なかなか成果に繋がらない1つの要因として、見込み客のステージに応じた適切なコンテンツを適切な順番で届けられていないことがあるそうです。
田所氏によると、ペルソナやカスタマージャーニーマップ等が記載された統合マップの他に、ペルソナごとのCTA(Call To Action/行動喚起)マップが必要とのことでした。
続いて、第2部では、弊社MA事業本部の細山より、「事例公開/どんなシナリオにどのコンテンツ」というタイトルで、第1部を受けた、より具体的なお話をMAJINの導入事例とあわせてご説明させていただきました。
細山によると、MAJINについてご説明させていただいた際に企業様から頂戴するご質問が、以前は「どんな機能があるのか?」という内容が多かったのに対し、現在は「コンテンツは?シナリオはどう設計するの?」という内容が増えてきたそうです。
MAJINは現在、幅広い業種や規模の企業様約200社にご導入いただいています。
今回の事例紹介では、その中からBtoCの通販事業者様やハウスメーカー様、BtoBサービス企業様など、様々なケースについてご紹介しました。
また、29日には、ジーニーが独自に開発した2つの新技術を搭載し、MAJINを大幅リニューアルしました。(詳しくはこちら)
そのうち1つの技術が、1つの画面でシナリオ作成から運用まで全てのタスク(キャンペーン)を簡単に操作・データ活用できる「シナリオキャンバス」です。
今回のリニューアルについては、日経デジタルマーケティングやITmediaマーケティングなど、様々なマスメディアでも紹介されました。
MAJINでは、引き続き、企業のマーケティング担当者様が抱える課題に合わせて、解決に役立つ新たな機能の開発提供を図るとともに、積極的にセミナーを開催していく予定です。
★ジーニーでは、企業が抱えるマーケティング課題を一緒に解決していく仲間を募集しています。一緒に、新しい技術開発やサービスづくりに取り組んでいきませんか?
興味のある方は、こちら!
———————————————————————
<最後にちょっと宣伝です!>
◆ 今後のセミナー開催予定
・テーマ「MA×コンテンツSEO」
日程:10月12日(木)
場所:弊社セミナールーム(予定)
共催先:株式会社PLAN-B様
・テーマ「MA×インサイドセールス」
日程:10月26日(木)
場所:弊社セミナールーム(予定)
共催先:株式会社エムエム総研様
ご興味のある方は、是非ご参加ください。詳しくはこちら。
◆ 日本SPセンター様よりお知らせ
・「コンテンツマーケティングラボ」
コンテンツマーケティングに関する詳しい情報がご覧になれます。
・ワークショップ情報
カスタマージャーニーマップを作成するワークショップ情報がご覧になれます。
※出典:ContentMarketingInstitute The History of Content Marketing [Infographic]
こんにちは、R&D本部アドプラットフォーム開発部の村岡です。
私は、ジーニーでGenieeSSPの開発を主に行っています。
今回、私が入社前のインターンで行った開発内容について紹介したいと思います。
SSPは、ブラウザなどからのリクエストを処理し、レスポンスとして広告を返します。 当然ですが、メディアごとにサーバを用意するわけではないため、複数のメディアから来る膨大な広告リクエストを、短時間のうちに処理し広告を返す必要があります。
リクエストがきてから、レスポンスを返せるまでの時間は短ければ短いほどよいのですが、膨大なリクエスト数となるため、システムのパフォーマンスが非常に重要になってきます。
GenieeSSPはそういったSSP特有のパフォーマンス要求のため、C++で開発されており、現在16台のサーバで全リクエストを処理しています。
GenieeSSPでは、広告枠の情報などはMySQLに保存されていますが、広告リクエストごとにDBに枠情報を問い合わせていたのでは、広告を返すまでのレスポンスタイムが長くなってしまうため、全ての枠情報はオンメモリで保持されています。 これらの広告枠情報は、更新のあった枠に対してだけ一定時間ごとにDBにクエリを投げ、メモリ上の枠情報を更新するようになっています。
また、GenieeSSPはlibmysqlclient
を直接使用してクエリを投げています。
私がインターンとして入ったとき、GenieeSSPは1プロセスで使用するMySQLコネクション数が多すぎるという問題を抱えていました。
システムの機能拡張を繰り返した結果、MySQLからデータをフェッチする順序が複雑に絡まり、一本のMySQLコネクションでクエリを投げることが困難な状態にありました。
GenieeSSPでは、プリペアドステートメントを使用して全てのクエリを投げています。
この場合、MySQLでデータをフェッチするためには下図の順序でライブラリ関数を呼び出す必要があります。 この順序を守らないと、CR_COMMANDS_OUT_OF_SYNC
エラーとなってしまいます。
GenieeSSPにおいて、プロセスが大量のMySQLコネクションを使用する原因は、mysql_stmt_fetch
関数を呼び出した後、別のMySQLコネクションとプリペアドステートメントでmysql_stmt_execute
関数を呼び出すことがあるためです。
一本のMySQLコネクションで、CR_COMMANDS_OUT_OF_SYNC
エラーを回避するためには、上図のようにmysql_stmt_execute
関数を呼び出したあとはMYSQL_NO_DATA
となるまでmysql_stmt_fetch
関数を繰り返し呼び出す必要があります。
ライブラリ関数の呼び出し順序を調査するため、下記のコードを使います。
———————————
static int mysql_stmt_execute0(MYSQL_STMT *stmt, const char *func, int line) { std::cerr << func << ":" << line << " execute" << std::endl; return mysql_stmt_execute(stmt); } #define mysql_stmt_execute(stmt) mysql_stmt_execute0((stmt), __func__, __LINE__) static int mysql_stmt_fetch0(MYSQL_STMT *stmt, const char *func, int line) { std::cerr << func << ":" << line << " fetch"; int ret = mysql_stmt_fetch(stmt); if (ret == MYSQL_NO_DATA) { std::cerr << " done"; } std::cerr << std::endl; return ret; } #define mysql_stmt_fetch(stmt) mysql_stmt_fetch0((stmt), __func__, __LINE__)
———————————
このコードを挿入し、テスト環境で実行すると標準エラー出力にmysql_stmt_execute
関数とmysql_stmt_fetch
関数を呼び出した関数名と 呼び出し箇所のソースコードの行数が出力されます。 この出力を元に、呼び出し順序が正しいか調査します、が、呼び出し順が間違っていれば実行途中でエラーとなるため、直前の出力を調べれば原因は大体わかります。
原因がわかった後は、正しいライブラリ関数の呼び出し順序となるようにソースコードを修正するだけです。
修正後、副次的な効果として全ての広告枠情報を取得する時間が2割減となりました。
また、コネクション数が減ったため、MySQLサーバも安定して動作するようになったような気がします。
今回、色々あってMySQL接続数を減らすことになりましたが、日々機能拡張が続くソフトウェアをメンテナンスしていくのは難しく、時間が取れず改善課題は溜まる一方です。
当記事を読んで、弊社とSSP開発に興味を持って頂ければ幸いです。
ありがとうございました。
ジーニーの経営、社内の制度雰囲気、マーケティング、技術まで、いろんなテーマで、ジーニーをご紹介していきます。