OpenWork Tech Blog

オープンワークの開発チームが届ける、情報プラットフォームを支える技術と文化

開発技術

PHP8.2-8.3 + Symfony6.0-6.4のおすすめ新機能の紹介

PHP8.2-8.3、Symfony5.4-6.4で新たに利用できるようなった便利な新機能の紹介です。 PHPは型に関する新機能が、Symfonyはアトリビュートの追加やリクエストのハンドリングの新機能が多い印象でした。

SwiftUIで自作Viewを作成し宣言的に共通処理を行う

課題 解決策 SwiftUIの仕組み 注意点 最後に iOSエンジニアの入江です。HStack{ }のように宣言的なViewパーツを自作する方法についての投稿です。 課題 複数の画面で、画面のライフサイクルをトリガーとする同じような処理を行う機能(例えばロギングなど)…

【Symfony】データを小分けに取得してバッチのメモリ使用量を減らす

良い感じにリファクタできました Webアプリエンジニアの加瀬です。 バッチのリファクタを行ったのですが、データ取得の方法を少し工夫してメモリ使用量を小さくすることができました。 色々な場面で活用できそうと思ったので書き留めておこうと思います。 環…

テキスト校正をtextlintに任せて表記ゆれを減らしてみる

こんにちは。「株式会社オープンワーク」ではなく「オープンワーク株式会社」の生永です。 文章を書くにあたって、タイポはもちろんのこと、組織内において定められている表記ルールに則さないことばを書いてしまったという経験をお持ちの方は少なくないので…

phpstan-deprecation-rulesでPHP+Symfonyの非推奨コードを一覧化する

PHPStanの拡張パッケージであるphpstan-deprecation-rulesを用いて非推奨コードを一覧化しました。使い方や工夫したことなども紹介しています。

MySQL Shell で DB 同期処理が速くなった

速くなった インフラチームの小川です。育児効率化という名目で白物家電を買い替えまくっています。(あると思います) 最近はデータベースの同期処理を書き直していました。もともとは mysqldump を使ってダンプした SQL をストレージに保存し、別 DB にロー…

Elasticsearchの検索ロジックを変更してクチコミキーワード検索速度を改善した

Webアプリエンジニアの加瀬です。 2023年の3月にクチコミをキーワード検索できる機能をリリースし、その後検索速度の改善を実施しました。 Elasticsearchの検索ロジックを変更することで検索速度の改善を実現したのですが、その時の対応内容について今回書き…

「AI就活相談」をリリースして、クローズしました

Webエンジニアの入江です。息子(4)の難しい要求仕様に対応するため、日々アジャイルでプラレールを作っています。AIレイアウトシミュレータとか需要あるんじゃないかと思っています。 さて、少し時間が経ってしまいましたが、2023年7月に「AI就活相談」とい…

プライバシーマニフェスト対応 Appleの審査が通ったのでまとめてみた

プライバシーマニフェスト対応 プライバシーマニフェストとは何か PrivacyInfoファイルを作成し、完成させる NSPrivacyTrackingについて記載する NSPrivacyTrackingDomainsについて記載する NSPrivacyCollectedDataTypesについて記載する DataType Linked to…

PHP8.1、Symfony5.4でMyCLabs\Enum\EnumからEnum型に置き換える方法

Webアプリエンジニアの大橋です。 弊社では今年の年明けにPHP8.1、Symfony5.4にバージョンアップしたので Webアプリエンジニアチーム内で新しい機能について勉強会で紹介し合ったり、実際に使ってみたコードを共有しました。 その後は機能追加のついでや改善…

古よりある求人検索機能をリファクタしたお話

苦悶の表情 こんにちは。webエンジニアの永田です。今回は直近で行った求人検索機能のリファクタのお話をしようと思います。 OpenWorkには、新卒向け求人検索機能と、社会人向け求人検索機能が古より存在しています。 各機能はUIや機能面で様々な違いがある…

自動テスト実行時に作られるデータは邪魔

こんにちは。Webアプリエンジニアの藤原です。 今回は自動テストで行った改善について紹介したいと思います。 課題 テストデータの消し忘れによる不整合データ 解決方法 どういう機能を提供してくれるのか 想定以上のメリット 注意 E2Eテストは未対応 最後に…

TCAが取り入れた関数型プログラミング的発想

ネイティブアプリエンジニアの入江です。 前回TCAについてのだいぶサラッとした記事を投稿したのですが、今回は少し焦点を絞った観点の投稿です。 TCAと関数型プログラミング タイトル入れておきながら恐縮ですが、関数型プログラミングとは!的テーマでの深…

SymfonyデバッグツールバーでElasticsearch開発の生産性を向上しました

はじめまして、Webアプリチームのビリーです。 Elasticsearchのおかげでユーザーはスピーディーに検索することができますが、Elasticsearchの開発は大変なことが多いです。それを楽にするために、symfonyのデバッグツールバーを活かしてカスタムなデバッグツ…

iOSアプリのリアーキテクチャ MVVMからTCAへ

ネイティブアプリエンジニアの入江です。 OpenWorkのiOSアプリのアーキテクチャは、MVVMからTCA(TheComposableArchitecture)へ移行中です。 今回は初投稿ということで、実際TCA化やっていてどうかみたいな、広く浅いテーマの記事にしたいと思います。 ※この…

DIって、本当にいいものですね(SymfonyのAutowiringについて)

はじめまして、Webアプリチームの永田です。 今回はSymfonyでDIを行うための機能、Autowiringについてお話ししようと思います。 DI, Dependency Injectionって何?という方は、まずそちらをググってみてください。分かりやすい記事がたくさんあります。 この…

新卒エンジニアが3ヶ月間のリファクタで学んだこと

ほぼキャンプファイヤーと化した焚き火(オープンワーク山のぼり部キャンプにて) はじめに こんにちは! 春になり再びアウトドア熱が高まってきている、エンジニア2年目の山元です! 自分は今年の1月~3月の間、リファクタリングプロジェクト(以下、リファ…

Nikita さん、今までありがとうございました。

概要 PHP の主要なコントリビュータの一人である Nikita Popov (@nikic) さんが、JetBrains を退職し PHP の開発から離れるということで、敬意を込めて少しだけ、PHP.Watchの記事を翻訳したいと思います。 Thank you, Nikita! | PHP.Watch PHP powers over 7…

PHP(7.4)・Symfony(4.4)へのバージョンアップ作業注意点

version_up Webアプリチームの藤原です。少し時間が経ってしまいましたが、昨年に弊社で行ったPHPとSymfonyのバージョンアップ作業で苦労した点をまとめました。 何をバージョンアップしたのか Before After PHP 7.2 7.4 Symfony 3.4 4.4 このときSymfony3.4…

Androidアプリにアプリ内レビューを導入してテストで困惑した話

スターがたくさん欲しい こんにちは。アプリ開発エンジニアの藤樫です。休日は子どもの相手でライフがゼロです。 ネイティブアプリを運用するにあたり、Google PlayストアやAppストアでのユーザー評価は重要です。評価が高いとサービスへの信頼感につながり…

iOSアプリチームの近況

ある日の昼飯。卵料理もスピード勝負. iOSアプリエンジニアの白澤です。 先日、アプリリリースの公式アナウンスもあり、 このタイミングでライトにiOSエンジニアチームについてお話をさせていただければと思います。 インストールはこちら iOSエンジニアチー…

AppBarLayout + CollapsingToolbarLayoutで高さの違うTabLayoutを出し分ける

Androidエンジニアの藤樫です。OpenWorkアプリの企業画面では、「企業トップ」「社員クチコミ」などが並ぶ`TabLayout`の表示がスクロール位置によって切り替わります。最初にページを開いた時は各タブに何件コンテンツが存在するかを表示して、最上部にある…

ロギングで読みづらいコードをDomain Probeパターンで整理する

こんにちは。ウェブエンジニアの濱田です。普段の業務ではスマホアプリ用のAPIを開発する一方で、古くなったコードベースの改善にも取り組んでいます。 早速ですがビジネスロジックのロギング処理は言うまでもなく重要なことですよね。エラーを検知するため…

オープンワークサーバーサイドの過去〜現在

こんにちは、ネイティブアプリエンジニアリングマネジャーの頼です。 2018年アプリチームの立ち上げから早1年が経ちました。手探りの中始まったオープンワークアプリの開発ですが、ファーストリリースを乗り越えようやく安定した開発体制が整いつつあるのを…

AWS SDK for PHP v2 → v3 へ移行したときの苦戦メモ

先日富山で撮影した、苦戦している椅子 インフラチームの小川です。普段は Web サービスにおけるクラウドインフラの構築/運用をしています。 いまホットなのは構想だけが存在しているデータレイクの構成案を具現化するプロジェクトで、特に Web アプリケーシ…

Epoxy + Kotlin + Data Bindingでidの割り振り方について

Androidアプリエンジニアの藤樫です。 OpenWorkのAndroidアプリではRecyclerViewにEpoxyを利用しています。1つのRecyclerViewで異なるViewHolderを簡単に扱えたり、Data Bindingを定義したViewHolderレイアウトXMLからBinding用モデルクラスを自動生成してく…

OpenWorkのAndroidアプリのつくり方

こんにちは、Androidアプリエンジニアの藤樫(とがし)です。OpenWorkのAndroidアプリをどうやって作っているかざっとご紹介します。 自己紹介 新卒で某半外資系携帯電話メーカーに入社し、Android端末の開発に携わっていました。もともとアプリ屋さんではな…

OpenWorkのiOSアプリチームについて

はじめまして!オープンワーク株式会社、iOSエンジニアの白澤です。 「あれ?オープンワークって、iOSアプリがないのに、なんでiOSエンジニアいるの?」 はい、そーなんです! 実は、現在オープンワークではiOSアプリを開発中です。 近々公開することをチー…