弁護士ドットコム株式会社 / 正社員
株式会社Sinq
#### アニメキャラクター音声通話キャンペーン【株式会社Sinq】 `概要` キャンペーン番号に電話すると番号を選択し、指定の番号を押すと決められたキャラクターの音声が再生される。 Twilioという通話音声APIを使用した開発。 `技術領域` TwilioAPIの使用が初めてなので、1行ずつデバッグしてどんなデータを渡せばどんなデータが返ってくるのかを試しながら開発しました。 〇〇回線以上はパンク、キャンペーン開始日時〜キャンペーン終了日時に該当しなければコールを切断、 日時により音声データが変わるなどの複雑な分岐を求めれる仕様でしたが、 日時などの条件を定数ファイルで保管、分岐はなるべくネストしない様に切り分けるなどを意識して実装しました。 スムーズに実装を進められて想定していた工数より半月近く空いてしまったので、 しっかり書いた事がなかったテストコードを書いたテストが出来ました。 --- #### キャンペーンレポート管理システム【株式会社Sinq】 `概要` 広告代理店からの案件が大半なためキャンペーン案件をよく制作しており、 今まで開発してきた知見を活かしてキャンペーン管理システムを作りたいと言う話があり、自身も開発者として参画。 キャンペーンと言えど様々な種類があるため、先ずは形にする事を最優先と考えてSNSキャンペーンから開発する事になりました。 `技術領域` 実装内容は、別のシステムで収集してきたキャンペーン情報を一定時間でバッチ処理を起動し、 処理の中でキャンペーンに紐付く情報をデイリーデータとしてDBに保存して、APIでフロントにデータを渡すという内容です。 SNSキャンペーンは大きく分けてSNSキャンペーンを設定し、 設定したキャンペーン内容で情報を取得してくると言う管理機能、収集してきた情報を デイリーデータをレポートすると言う機能の二つがあり、 自身はデイリーデータをレポートする機能の設計・担当を致しました。 `成果` ディレクションや見積もりの作成など普通であれば新人のうちから関わる事のない上流工程を学ぶことで、 今のサーバーサイドエンジニアとしてだけでなく、開発の全体を見渡せるエンジニアになれたと感じております。 また技術面ではWebサイトの中では大きい規模の案件でチーム開発に携わり、自分一人だけが見れるコードは書かないという意識付けやGitHubフローを学びました。 --- #### キャンペーン管理収集機能システム【株式会社Sinq】 `概要` 自社サービス開発。 広告代理店からのキャンペーン案件が多いので、管理画面上でキャンペーンに使用するハッシュタグやツイートIDを指定して参加条件を満たしているユーザ情報を収集し、当選者などを管理しやすいシステムの開発をすることになりました。 `技術領域` 担当した開発は一部機能のリツイート収集システムです。 簡易的ではありますがDB設計からシステム設計実装までを一人しました。 実装内容は、TwitterAPIを使用して管理画面上で登録したツイートIDをcronを回して一定時間経つと、 自動的に登録したツイートIDのリツイートまたは引用リツイートしたツイートを収集してDBに保存。 その情報を管理画面上に表示して当選者などをお客さん側で簡単に設定でき、CSVエクスポートが可能というものです。 苦労した点は、TwitterAPIを使ってデータを引っ張ってくるやり方を従来であれば指定の時間から指定の時間をcronで収集してDBに保存するというやり方を取っていたが、それだとAPIの上限が1度に100件までしか収集できないため投稿数が多いと歯抜けになってしまうという課題がありました。 それをTwitterAPIに紐づけられたページングを使用し、ID順に取得する事でこの問題を解決することができました。 また同じ様な問題で、TwitterAPIの仕様で決められたリツイート取得では件数が決められている、引用リツイートを収集できないなどの理由で今回の要件は満たせませんでした。 どうにか収集できる方法はないか試行錯誤した結果、ツイート検索APIの組み合わせで上記の要件を満たせる方法を発見し、実際に組み込みました。 --- #### キャンペーンお問合せフォーム【株式会社Sinq】 `概要` 期間限定LPのアンケートフォーム。 アンケートフォームの内容を管理画面上で表示とCSVダウンロードするだけと簡単な要件でした。 客先サーバーでPHPが使えないことが判明し、API経由で別サーバーに管理画面とDBを立てて対応。 `技術領域` 管理画面上に反映させるという簡単な内容でしたが、クライアントのサーバーにPHPをインストールする事ができないということでJavaScriptの非同期通信でフォーム内容を別ドメインのサーバを用意し、そこにLaravel環境を立ててクロスドメイン対応。 バリデートを行い問題があればレスポンスを返し、問題がなければ保存するという対策を行いました。 この時点では、API開発が初めての開発だったのとCORSがしっかり理解出来ていなかったので、記事を読んでしっかりCROSドメイン通信を学びました。 取得元のLaravelで作った環境にCORSライブラリをインストールし、フォーム側のドメインからのリソースアクセスを許可しクロスドメインに対応出来る様にしました。