Galapagos Tech Blog

株式会社ガラパゴスのメンバーによる技術ブログです。

コーポレートサイト引っ越したときの話

こんにちは、ガラパゴスで情シスを担当している赤松です。
ガラパゴスでは2021年4月に情シスチームが立ち上がりました。

これからブログを通じて少しづつその活動につてご紹介していきたいと思います。
その中で今回はコーポレートサイトの引っ越しとアーキテクチャの変更についてご紹介します!

コーポレートサイト

株式会社ガラパゴス|スマホアプリ開発・LP/バナー/動画制作

会社概要やサービスページなどの静的ページと、お問い合わせなどのバックエンド機能付きページ(/contact )で構成されています。
contactページはサイトからの問い合わせ内容をメールとSlackに通知する機能を持っています。

従来のコーポレートサイトのアーキテクチャ

インフラ側さくらレンタルサーバVPS)にNginXとphp-fpmを、アプリ側はPHPとHTML&CSSといった、 一昔前まではよくある構成のですね。

ざっくり絵にするとだいたいこんな感じです。 f:id:glpgsinc:20211210102917p:plain

課題としては急激な負荷に耐えきれない可能性や、PHPのバージョンアップへの対応などメンテナンスコストがかかる所が懸念材料としてありました。
アプリ側ではヘッダーやフッター、meta情報やスクリプトなど共通化されていない箇所も多くメンテナンスコストも上がっていたため、 それらを共通化することも課題のひとつとしてありました。

また、運用面ではJenkinsにログインしてデプロイ作業をする際に開発環境と本番環境で同じブランチを利用していたため、ヒューマンエラーを誘発しやすい状態でもありました。
今回の移管によりその辺りのフローも見直しました。

どうしたか

インフラ

レンタルサーバを卒業し、AWSに移行しました。
ホスティングサーバにAWS Amplifyを採用し、サーバレスを実現しました。 Amplifyについてはこちらをご参考ください。

参考記事:
AWS Amplify で始める、サクッとアプリ開発 - 変化を求めるデベロッパーを応援するウェブマガジン | AWS

採用した理由は、

  • インフラ構築コストが低い
  • フルマネージドなホスティングサービスが使える
  • フロントエンドとバックエンドを単一プロジェクトで構築できる
  • デプロイのワークフローが単一でGithubとの相性も良くコーダによるデプロイにも特別な技術が不要

など。 一度構築すると後々のメンテナンスコスト大幅に下げることができるというのは魅力的です。

絵にすると概ねこんな感じです。以前に比べてちょっと今風になりました。 f:id:glpgsinc:20211210102924p:plain

また、AmplifyがGithubと連携しブランチの変更を検知するので、developブランチへの変更は開発環境へデプロイされ、 masterブランチへの変更は本番環境へデプロイされるフローにしました。 ブランチワークも、プルリクエストベースに変更しました。

アプリケーション

フロントエンドはPHPからReactベースのフレームワークであるNext.js(SSG)にまるっと書き換えました。
採用した理由は、

やってみてどうだったか

ローンチをして3ヶ月ほど経ちましたが、トラブルも無く運用できているかなと思います。
Amplifyを構成する一つ一つのサービスに目新しいものは少ないですが、それらをまとめて単一ワークフローになったのは便利でした。

また、コーポレートサイトなので静的ページがほとんどで、バックエンドのAPIはあくまでトリガーなのでRESTになっています。今回のような構成はある程度動的サイトにも応用できると思いますがRestにするかGraphQLにするかがポイントになるかなぁと思います。

参考記事:
Amplifyで自動構築される内容の観察:Schema.graphql編 | Ragate ブログ

こちらからは以上です。

社内で宣言的UI(Jetpack Compose / SwiftUI)の勉強会をやっています

こんにちは。AIR Design for Apps 事業部、Android エンジニアの菊池です。
この記事では社内の取り組みについてご紹介します。

宣言的UI勉強会の立ち上げ

今年の8月、Jetpack Compose が stable になったのをきっかけに、社内で宣言的UIの勉強会を立ち上げました。
はじめは「Jetpack Compose 勉強会」にしようかと思ったのですが、せっかくの取り組みを Androidチームだけでやるのは勿体ないので、iOSチームも交えて「宣言的UI勉強会」としています。

受託開発では新技術の導入には何かと制約がつきものですが、時代の最先端とはいかないまでもモダンなコードは書いていきたいので弊社でもキャッチアップは積極的に行っています。 この勉強会によりだいぶ知見が溜まってきたので、次の新規開発案件では Jetpack Compose と SwiftUI を一部導入していく予定です。

勉強会でやっていること

もくもく会の形式で、毎週木曜日*1に2時間の枠で開催しています。

基本的にAndroid エンジニアは Jetpack Compose、iOS エンジニアは SwiftUI の勉強をしていますが、SwiftUI の勉強をしている Android エンジニアもいたりと、自由なスタイルです。
もくもく会なので、各自チュートリアルをやったり、ドキュメントやサンプルコードを読み込んだり、何か動くものを作ってみたり思い思いに勉強しています。

勉強会のようすを少し紹介します。

f:id:glpgsinc:20211029170151p:plain
SwiftUI で作られたオシャレなスコア画面

f:id:glpgsinc:20211029170231p:plain
Jetpack Compose の LazyVerticalGrid を試している様子

f:id:glpgsinc:20211029170024p:plain
Jetpack Compose のプレビューで遊んでいる様子

実際にはもう少し凝ったものも作られているのですが、実際の開発案件の画面を再現しているものについてはご紹介できず...... みんなでわいわいやっている雰囲気だけ伝われば幸いです。

私個人の活動としては、公式の Pathways をまずやり、公式のサンプルコードDroidKaigi 2021のコードを参考にしつつ簡単な画面を作ったりと楽しくキャッチアップしています。

勉強会の副次的な効果

ガラパゴスはコロナ禍をきっかけにほとんどフルリモートワークになっています。
この勉強会も Slack のチャットとハドルミーティングを使って開催されているのですが、参加者のやり取りを聞いていると、どうもこの勉強会は有用なタバコ部屋としての価値を提供しているようです。

フルリモートになってからも Slack のチャットでの雑談などは行われているものの、「ちょっとした会話」「雑談」を音声でできる場所が減っていたところにこの勉強会が始まったので、ある意味ちょうどよかったのかもしれません。
個人的には勉強会の意義の半分以上は「人と人との交流」にあると考えているので、これはよい結果になったのではないかと思っています。

最後に

弊社ではいっしょに働く Android エンジニア、iOS エンジニアを募集しています!
ご興味のある方はぜひご応募いただけますと嬉しいです。

Androidエンジニアの方はこちらから: www.wantedly.com
iOSエンジニアの方はこちらから: www.wantedly.com

腕に覚えのある方はリードエンジニアの求人もありますので是非ご検討ください。AndroidiOSの両方の開発ができるエンジニアも大歓迎です! www.wantedly.com

*1:もくもく会の"もく"と木曜日の"もく"をかけているわけではなく、偶然です

Material You 試してみた

AIR Design for Apps 事業部 Android エンジニアの松下です。

Android 12 から Material You によってユーザの壁紙の色に応じて UI の色を変化させる事ができるようになりました。

なんだか実装が大変そうだと思っていましたが、MDC-Android を使えば割と簡単だったので、試してみました。

注)この記事は Android 12、 MDC ライブラリともにベータ、アルファ版時点の情報なので API や挙動が変更されている可能性があります。

続きを読む