注目のストーリー
開発
ボタンタップ時に発生する不具合の対策について【株式会社ライトコード】
はじめに今回は、Unityにおけるボタンの連打・同時押し対策についてまとめました。業務でゲーム開発を進める中で、これらの対策を初めて実装する機会があり、多くの学びがあったので、これからUnityでゲームを開発される方の参考になれば幸いです!前提として、アーキテクチャにはMVPを採用し、ライブラリにはUniTaskおよびR3を使用しています。どんな不具合が起きたのか実際に発生した不具合は以下の2点です。- ボタンを連打した後、タップしても処理が実行されず、ゲームが進行不能になる- 複数のボタンを同時にタップした際、それぞれの処理が並行して実行され、想定外の挙動になるいずれも致命的な問題です...
Pythonのパッケージ管理ツール「uv」を試してみた【株式会社ライトコード】
概要Pythonのパッケージ管理ツールuvを使ってみたので、使い心地をざっくり書いてみます。記事の要約趣味プロジェクトのパッケージ管理ツールをuvへ移行させた使ってみたらとても便利だったので、普段の開発ユースケースでどう運用するのが良さそうか整理したいuvはいいぞ環境Python: 3.13.2uv: 0.7.8背景もとい前置きPythonは主に趣味で触っていましたが、パッケージ管理で苦戦することが多かったです。Dockerを使うとIDEと噛み合わせが悪かったり、いろんなツールを試すと仮想環境とパッケージ管理が複雑になってきてメンテナンスが大変になったりと、色々迷走してきました。Pyth...
【GAS】Google App Scriptのタイムアウトエラーを回避する方法【株式会社ライトコード】
はじめにGoogle Apps Script (GAS) を使った自動化は非常に便利だが、タイムアウトエラーに直面したことはないだろうか?GASのスクリプトが連続して実行できる時間が無料版で最大6分、有料のGoogle Workspaceプランでも30分に設定されているために発生する。スプレッドシートに書き込む処理が時間がかかるため、getValue, setValueを減らし、getValues, setValues を使いまとめて処理することが速くすることができる。しかしながら、大量のデータ操作を行うスクリプトを開発していると、コードによる高速化にも限度があり、このタイムアウトエラー...
Ruby on Railsのschema.rbの深掘り【株式会社ライトコード】
なぜこの記事を書くのか最近、Github ActionsでRailsアプリケーションの自動テストを設定する中で、schema.rbがCI環境やテスト環境で重要な役割を果たすことを体感しました。その際、schema.rbが正しく管理されていないことが原因で、スキーマの不一致によるエラーや不便な点がありました。これを機にschema.rbの役割や管理方法をしっかりと理解しておこうと思い、ブログ執筆に至りました。schema.rbの基本schema.rbとは?Railsアプリケーションのデータベース構造を記録するファイルです。データベースのスキーマの情報がこのファイルに反映されます。schem...
【ゲーム事業部】ジグソーパズルゲーム開発秘話【株式会社ライトコード】
今回ご紹介するのは、ライトコードの「ゲーム事業部」。今までブログで、ゲーム事業部をご紹介したことはなかったかもしれません。そんなゲーム事業部では、新作ゲームをリリースしたらしいという情報をGET!どんなゲームを、どんなチームで、どんな想いで作っているのだろう?ふと、そんな疑問が頭に浮かんできました。いてもたってもいられず、メディアチームはゲーム事業部に突撃!開発者のインタビューも行ってきましたので、お楽しみに!新作は「ジグソーパズル」のゲームアプリ!最新作は「ジグソーパズルHD - パズルゲーム」。2024年12月19日(水)より、App Store・Google Play Storeに...
Pytorchで自作ゲームにDQNのAIを組み込もう!(前編)【株式会社】
はじめにUnityなどで対戦ゲームを作っている時に、「対戦相手のAIをどうするか」ということで頭を悩ませた経験はありませんか?ゲームのAIは「⚪︎⚪︎なら××する」というような条件分岐の処理をたくさん書いたり、ゲームの状況を表す変数を用意し、その変数に従って行動を分岐させるというようにして実装することが多いと思いますが、複雑な処理を実装するのは大変です。また、ゲームの種類によっては状況の分岐が膨大になり過ぎて書き切れなかったり、そもそもどのような処理を書くべきなのかが分からなくなってしまうこともあります。そうなると「AIの行動パターン作成を自動化できないか?」という発想が出てきます。人間...
Next.jsでNotionライクなリサイズ可能なサイドバーを実装しよう【株式会社ライトコード】
はじめにこんにちは! ふとNotionのようなリサイズ可能なサイドバーの実装方法が気になったので、調べたことをコードを交えてステップバイステップで実装し共有しようと思います。ステップ1 基本構造の作成今回は以下のようなUIのダッシュボードをSidebar / Navbar / MainContentコンポーネントを元に作成したいと思います。まずはこれら各コンポーネントの基本的なコードを実装していきます。src/app/page.tsximport MainContent from "@/components/MainContent";import Navbar from "@/compo...
GoogleCloudのVMにSSH接続(OS Login)【株式会社ライトコード】
はじめに秋になりました。大好きなりんごを丸かじりしようと思い、アゴがはずれる寸前でした。今日はSSHを利用して、GoogleCloudのCompute Engineに接続する時のお話です。その際の接続方法について深ぼろうと思います。対象GoogleCloud Linux VMを利用し、複数人で開発を進めている方やることOS Login機能に関することやらないことIAMについての詳細GoogleCloud VMについての詳細前提IAMが適切に設定されているGoogleCloudのLinux VMインスタンスがあるVMへのsshでの接続まず、VMインスタンスへの接続は以下の2つの方法がありま...
Redis Streamsでチケット購入システム作ってみた【株式会社ライトコード】
はじめにRedis Streamsを勉強する機会があり、その動きの流れを見ていって、よくあるアーティストやイベントとかのチケット一般販売(先着購入順)のシステムっぽい作りが出来そうと思ったので勉強として簡単な流れのものを作ってみました。Redis streamsとはまず、Redis streamsはRedis 5.0で導入されたデータ型で、以下のような特徴があります。・データを時系列で持つ追記型のデータ構造・各データは任意の複数のフィールドを持つことができる・時間の範囲を指定して複数のデータを読むことが出来る・データを取得しても過去のデータを残せる(揮発しない)<Redis公式>http...
Cloud BuildとKanikoで効率的な継続的デリバリー(CD)を構築する方法【株式会社ライトコード】
ストレスのないCDを構築しよう皆さんこんにちは。Google Cloudが好きな小山こと"こやまん"です。Google Cloud を利用する多くのプロジェクトでは、アプリケーションのデプロイが重要な作業の一つです。今回は、Cloud Buildを利用して、アプリケーションをデプロイする継続的デリバリー(CD)に関する記事となります。CD(継続的デリバリー/継続的デプロイメイント)とは?ITエンジニアなら一度は耳にしたことがある「CD」ですが、具体的な内容を忘れてしまっている方もいるかもしれませんので、ここで簡単におさらいします。CD とは、開発したアプリケーションを自動で公開・配布する...
Railsを「6.1.4.1 → 7.1.3.4」にアップデートするまでに行ったこと【株式会社ライトコード】
はじめに今回は、私が担当しているプロジェクトで、Railsを「6.1.4.1 → 7.1.3.4」までバージョンアップを行なったため、どのような流れで行ったかご紹介させていただけたらと思います。【バージョンアップ前の環境】docker環境image: ruby:3.0.6-alpinerails 6.1.4.1ruby 3.0.6記事をベースに以下の流れで行っていきました。使用していない不要なコード使用していないgemの削除rails以外のgem、rubyのバージョンアップrailsを7.0.8.4にバージョンアップrailsを7.1.3.4にバージョンアップ1. 使用していない不要なコ...
YOUは何しにライトコードへ〜髙岡さん編〜
技術力と運勢を"きょう"化するエンジニア今回は、エンジニアの髙岡さんにインタビューを行いました!髙岡さんは、元々SES企業で働いていたエンジニア。そんな高岡さんが、なぜライトコードを転職先に選んだのか!?ライトコードを選んだキッカケや実際に働いてみた感想などをお聞きしたいと思います。はじめに、簡単な自己紹介をお願いします!2023年の8月に入社した髙岡です!IT系の専門学校を卒業後、IT企業に新卒で就職しました。以前の会社でもエンジニアとして働いていました。ありがとうございます!詳細は後ほど!では、高岡さんの思い出の地である「浅草寺」でインタビューさせていただきますよろしくおねがいします...
【Twilio】AMDで留守番電話を検知する【株式会社ライトコード】
はじめに入社2年目のみやです。未経験新卒で入社して1年が経ち、他のメンバーのサポートもありプロジェクトの一員としてサービスの開発保守に取り組むことができています。今回は最近実装したTwilioのAMDという留守番電話機能を用いた留守番電話の検知に関してアウトプットも兼ねてご紹介いたします。前提Twilioを用いて、電話をかける方法を知っていることを前提に説明しますコードはphpでの紹介になります(他の言語を使っている方にも参考になると思います)留守番電話検知の必要性Twilioを用いることで、プログラムで自動で電話をかけることができます。電話をかけた相手が電話に出た時と出なかった時で後続...
サービスアカウント認証でGoogleカレンダーAPIを使ってみた【株式会社ライトコード】
はじめにGoogleカレンダーAPIを使ってGoogleカレンダーに予定を追加するというのをやりました。またAPIの認証方法に、OAuth 2.0での認証とサービスアカウントを用いての認証がありますが今回はサービスアカウントでの認証でAPIを使用していきます。また今回はphpのコードでAPIを実行していきます。今回は以下の環境で開発しています。Laravel 9.17.0php8.0GCPのプロジェクトがあるGoogleカレンダーAPIとはGoogleカレンダーAPIとは、その名の通りGoogleカレンダーを操作するためのAPIです。カレンダーの予定を作成、更新、削除などを行うことができ...
コーポレートサイトをリニューアルしました【株式会社ライトコード】
概要2024年3月にコーポレートサイトをリニューアルしたので、良くなったことなどを紹介します。この記事で書くことWordPressで構築されたコーポレートサイトをヘッドレスWordPress・Next.jsを導入することでリニューアルしました。なぜリニューアルしたのか、リニューアルすることで何が良くなったのか書いてみます。なぜリニューアルしたのかライトコードのコーポレートサイトは、WordPress単体で運用していました。テンプレートを組み合わせるだけで素敵なサイトがつくれるWordPressは、素晴らしい技術です。しかし、ありあわせのテンプレートを組み合わせるだけでは、技術を売りにして...