LCL Engineers' Blog

バス比較なび・格安移動・バスとりっぷを運営する LCLの開発者ブログです。

CodePipeline/CodeBuild/ECR/ECS/Fargateのコンテナデプロイ基盤を構築してみました

AWS

モバイルアプリエンジニアの山下です。 今回は、AWSの以下のサービスを用いてコンテナデプロイ基盤の構築を試してみました。 CodePipeline CodeBuild ECR ECS Fargate AWSのドキュメントは丁寧で情報も豊富ですが、サービス毎に手順が書かれているため一連の…

Developers.IO 2018 Outnumberに参加しました!

Webエンジニアの森脇です。 先日、クラスメソッドさんの Developers.IO 2018 Outnumberに参加してきました。 クラスメソッドさんのブログで発表資料は公開されていますので、簡単なレポートをしたいと思います。 dev.classmethod.jp 今回はAWSがテーマで、弊…

rack-corsでCORS設定をする

Webエンジニアの森脇です。rack-corsを利用して、RailsでCORSの設定をしてみました。 github.com rack-corsの基本的な使い方 gemを追加して、cors.rbファイルに下記のように記載します。 originsに許可したいアクセス元のoriginを定義します。 Rails.applica…

iOSDC Japan 2018に参加してきました!

モバイルエンジニアの山下です。 去年に引き続きiOSDC 2018に参加してきました! 開催から時間が経ってしまいましたが、レポートとトークの一部を紹介させていただきたいと思います。 iOSDCとは https://iosdc.jp/2018/ iOSDC JapanはiOS関連技術をコアのテ…

capistrano-bundle_rsyncを利用したデプロイ方式に変更しました

Capitranoを利用してRailsアプリケーションのデプロイを行っていましたが、「capistrano-bundle_rsync」を利用する方式に変更しましたので、背景含めて紹介いたします。

Mackerelのアラートグループを利用して障害通知を抑制する

現在、障害通知の最適化を進めており、その第一弾としてMackerelのアラートグループ機能を利用して、障害通知の抑制をしました。手軽に実現ができ、便利だったので紹介します。

AWS EC2インスタンスの停止忘れを防止する

Webエンジニアの森脇です。 LCLでは、普段使わないテストサーバなど常時稼働が不要なEC2インスタンスは、必要に応じて手動で起動・停止する運用にしています。が、停止を忘れて起動したままになっているということが、時々発生してしまっています。 大した金…

npm scriptsで画像圧縮を自動化した際の課題と検討事項

フロントエンドエンジニアの岡田です。 LCLではフロントエンドエンジニアがマークアップも担当しており、画像の圧縮もエンジニアが行っています。 画像圧縮、面倒ですよね。。 いままでいくつか自動化を試しましたが、どれも長くは続きませんでした。 【画像…

xcprojectlintでXcodeの些細な問題を解決して心を整える

モバイルアプリエンジニアの山下です。 Xcodeで開発を進めていく中で、以下のような小さな問題がずっと気になっていました。 ファイルシステムとXcodeのディレクトリ構造で差異が発生する ディレクトリやファイルがアルファベット順にソートされていない 空…

LCLで2018年前半にチームとして新しく取り組んだこと

LCLでは、昨年の後半よりエンジニアメンバーが増えてきたため、今年からチームとしての取り組みをいくつか始めました。振り返りを兼ねて紹介したいと思います。

突撃!隣のフレックスタイム

モバイルアプリエンジニアの山下です。 先日の記事でも少し触れられていましたが、LCLでは先月からフレックスタイムがトライアル導入されました。 techblog.lclco.com 今回は、エンジニアメンバーへどのような使い方をしたかをアンケートで聞いてみたのでお…

npm scripsが特定の環境だけ動かない! という時に確認すること

フロントエンドエンジニアの岡田です。 LCLのフロントエンドでは、npm scriptsを使っていますが、たまに特定の環境だけ動かないことがあります。 今回は、ケース別に確認すると良いこと・試すと良いことをご紹介します。 ケース別の確認事項等 自分のローカ…

ジョインメンバーのためにmacOSの初回セットアップをチョットダケ自動化するTips

モバイルエンジニアの山下です。 LCLでは開発端末としてエンジニアメンバー全員にMacを支給しており、新しくメンバーがジョインした際もMBP or iMacを購入しています。 その際、ジョインメンバーには初日にmacOSの初回セットアップをしてもらう必要があるの…

子育て中のエンジニアが思う、LCLの良いところ5つ

フロントエンドエンジニアの岡田です。 LCLでは、今月からフレックスタイム制を試験導入しています。 これまでも在宅勤務時は16時で退社することが可能でしたが、フレックスタイム制により、さらに1時間早い15時に退社することができるようになりました。 そ…

React バージョンアップ(v15.3.2 → v16.4.1) を行いました

フロントエンドエンジニアの田中です。 React の導入からバージョンを変えずに古いまま使用をしていましたが、「使いたいと思った機能がバージョンを上げないと使えない」「Webに載っている情報は新しいバージョンで記述されていることが多いため、古いバー…

輪読会がうまく回りはじめた話

モバイルアプリエンジニアの山下です。 LCLでは今月から全社員を対象にしたフレックスタイム制のトライアル期間が始まりました。 エンジニアは以前からもフレックスに近い働き方が可能でしたが、いくつかの新しいルールが追加されました。 これまでの取り組…

地味に面倒なブランチ作成〜WIPプルリクエストまでをコマンド1つで行う

フロントエンドエンジニアの岡田です。 やる気がでない時の最良の方法は、「とりあえず始めてみる」ことだと聞いたことがあります。 今回は、やる気がでないときでもコマンドを1つ叩くだけで、ブランチ作成〜WIPプルリクエストまで作ってくれるように設定を…

SwiftFormatで機械的にコーディングルールを統一する

iOS

モバイルアプリエンジニアの山下です。 W杯開幕からほぼ全ての試合を観ているため、在宅勤務を活かして出社時間ギリギリまで寝る生活をしています。 今回は、LCLが運営している高速バス比較のiOS版の開発時に可読性を維持する支えとなっている『SwiftFormat…

E2EテストをPhantomJSから、Puppeteer + Headless Chromeへ移行しました

E2E

LCLでは、以前より「Capybara + PhantomJS」でE2Eテストを行っていましたが、「Puppeteer + Headless Chrome」へ変更しました。 元々は、軽くPuppeteerを触ってみるだけのつもりでしたが、できが良かったので本格的にE2Eテストへ導入しました。本記事では、…

一部 React のサイトに MobX を導入しました

フロントエンジニアの田中です。 以下記事にもありますが、弊社のサービス:夜行バス比較なびの React 実装部分に MobX 導入しました。 techblog.lclco.com 目的 そもそもの導入目的は、親コンポーネントが違うコンポーネント同士の連携を行いたかったからで…

CSSのコンパイラをsass-railsからnode-sassへ変更しました

フロントエンドエンジニアの岡田です。 先日、LCLが運営する夜行バス比較なびのCSSコンパイラを、sass-railsからnode-sassへ変更しました。 今回は、Node.jsへの移行にあたってRailsとの連携をどうしたか、移行で起きた問題などについてまとめました。 node-…

週末にもくもく会をしてみました

フロントエンドエンジニアの岡田です。 週末に社内のメンバーでもくもく会をしてみました。 ルールはただ一つ、仕事は禁止です。 もくもく会当日は、前から気になっていたスターバックスのポットサービスを頼んでみました。 オフィスがある晴海トリトンの2階…

1日のスケジュールを可視化してタスク消化率の最適化を図る

1日のスケジュールを可視化してタスク消化率の最適化を図る モバイルアプリエンジニアの山下です。 今年からGoogleカレンダーにその日のタスクを予定として登録しています。 これにより、以下のメリットがあります。 日毎に消化したタスクを後から見返せる …

LCLでの書籍購入制度の活用事例

Webエンジニアの森脇です。 最近では、福利厚生として書籍購入制度がある会社も増えてきたと思いますが、LCLも例に漏れず書籍購入制度があります。技術情報はインターネットで十分だったりするので、最近は書籍を読まない方も多いかもしれませんが、LCLでは…

ESLintを使用しているプロジェクトにPrettierを導入しました

フロントエンドエンジニアの田中です。 今回、プロジェクトにコードフォーマットのプラグインであるPrettierを導入しました。 元々、ESLintを使用してコードの品質担保をしていたのでPrettierとの競合が起きないよう設定も行いました。 Prettierとは Prettie…

Google Maps APIのアップデートについて知っておくべきことを整理しました

先日、6月11日からGoogle Maps APIが「Google Maps Platform」として名称を変え、新しく刷新されるという発表がありました。 Google Developers Japan: Google Maps Platform の提供を開始 : Google マップのビジネス利用がさらに進化 この変更は非常に大き…

がんばるタイム、止めました

フロントエンドエンジニアの岡田です。 LCLのエンジニアチームでは、2月から3ヶ月半ほど「がんばるタイム」を実施していましたが、少し前に止めました。 今回は、「がんばるタイム」導入の背景や、結果についてまとめました。 がんばるタイムとは トリンプ・…

ALBのログをEmbulk + BigQuery + Redashで可視化する

LCLでは、AWS ALBのアクセスログをEmbulk/Fluentdを利用してElasticsearch/BigQueryへ格納しています。 Elasticsearchは、短期的なログの解析を目的としており、予期せぬアクセスが発生した場合の原因調査等に利用しています。ログは一定期間を過ぎると破棄…

Bonfire iOS #4に参加してきました

モバイルアプリエンジニアの山下です。 昨日はヤフー株式会社主催のBonfire iOS #4に参加してきました。 Bonfire iOS #4 - connpass 第4回のテーマは「UI」ということで、デザイナーとの協業の話からARKitのコアな話まで深みのある発表内容でした。 今回は簡…

Zeplinを導入してデザイナーとエンジニアの連携をもっとスムーズに

フロントエンドエンジニアの岡田です。 LCLでは、デザイナーとエンジニアの連携をスムーズにするために、Zeplinを導入しました。 今回は、導入にあたって行ったことをまとめました。 デザイン&コーディング体制 Zeplin導入前に使っていたツール Zeplinとは …