ユニファ開発者ブログ

ユニファ株式会社プロダクトデベロップメント本部メンバーによるブログです。

A Brief Overview of Jetpack Compose

This article is for the 5th day of the UniFa developer blog Advent Calendar 2021.

adventar.org

Hello, this is Shakil from Product Engineering Department.

In this blog I am going to talk about the very basics of Jetpack Compose and why it is a good alternative to UI creation compared to traditional XML.

続きを読む

ブランドガイドラインを作ったらコミュニケーションの体感速度が2.5倍になった話

この記事は、ユニファ開発者ブログ Advent Calendar 2021の4日目の記事となります。

adventar.org

ブランドガイドラインを作ったらコミュニケーションの体感速度が2.5倍になった話

はじめまして、デザイン部デザイナーの藤川です。
突然ですが、デザインなど制作に関わられている方でこんな経験をお持ちではないでしょうか?

「“ブランドらしい表現”を新メンバーや外部パートーナーに伝えるのにいつも時間がかかる……」
「レビュー依頼を受けて、これは違うなと感じるけど相手に伝えるのが難しい……」
「ブランドとして問題無いかジャッジできる人が限られる……」

もし特に時間が無いときに「ん〜なんか違うんだよな〜」「私は良いと思うけど●●さんがダメならダメかな〜」というコミュニケーションが生まれたら、ちょっと悲しい、いやむしろ悲しすぎてになりそうです。

時間があればじっくりお茶でも飲みながら丁寧にすり合わられるかもしれませんが、忙しいときは足を止めずに爽快に進みたいたいところ。

そこで今回は、ユニファで「ブランドガイドラインを作ったらコミュニケーションの体感速度が2.5倍になった話」をしたいと思います。

ブランドガイドラインを作るときのポイントも簡単にサクッとご紹介。
少しでもあなたのプロジェクトが加速するヒントになると嬉しいです。

続きを読む

デザイナーとエンジニアと私

この記事は、ユニファ開発者ブログ Advent Calender 2021の3日目の記事となります。

adventar.org

f:id:unifa_tech:20211201201855j:plain

デザイン部の森田です。 ユニファではデザイナーとエンジニアが一緒にお仕事をしています。

プロダクト開発において、デザイナーとエンジニアが『一緒に』お仕事するために、これまでやってきていることと、これからやってみたいことをつらつらと書いてみたいと思います。

続きを読む

翻訳されやすい日本語を考える

この記事はユニファ開発者ブログ Advent Calendar 2021 の 2 日目の記事となります。 adventar.org

こんにちは、プロダクトエンジニアリング部の田中です。

弊社開発チームには日本語を母国語としないメンバが多数在籍しています。 そのため、いろいろな文章が日本語から各種言語へと機械翻訳により変換されています。 言語間で齟齬が生じないように、日本語で文章をかくときに私が気をつけていることを書き出してみます。

続きを読む

ユニファ開発チームの2021年を振り返る

みなさまこんにちは。 ユニファの開発・インフラエンジニアマネージャーをしております田渕です。 早いもので、今年も最後の月になってしまいましたね。

今年もAdvent Calenderの季節となりました。 この記事は、ユニファ開発者ブログ Advent Calendar 2021の1日目の記事となります。 adventar.org

2019年より、メンバーの発案で始まったこのAdvent Calenderですが、みなさまのご協力もあり何とか今年も開催できる運びとなりました。 ご協力・ご参加くださるみなさま、暑く御礼申し上げます。

本記事では、今年の開発関連トピックを扱って参りたいと思います。 ただし、私の管轄範囲である「開発・インフラ管理関連」にお話が寄ってしまう点だけはご了承頂ければと思います。

続きを読む

PythonでS3とSageMaker RuntimeをMockする

こんにちは、データエンジニアリングチームの宮崎です。

最近はコロナが落ち着いてきたので、出社するようにしていますが、ずっとリモートワークだったので会社に着ていく服が無くて困っています。

さて、機械学習モデルをサービスで運用するためには、ただモデルをデプロイするだけでなく、アプリから利用するために前処理や後処理を実装する必要があります。 これらの処理が正しく実装されているか確認するためには、単体試験のテストコードを書く必要がありますが、その際、機械学習モデルの動きを擬似するためのモックを準備しなければなりません。

そこで今回は Amazon SageMakerにデプロイしたモデルに対し、Pythonから推論するコードをテストする際のモックについて検討したいと思います。

続きを読む

依頼関係のあるリソースを並列で作成するスケジューラー 上編

こんにちは、プロダクトエンジニアリング部のちょうです。先月まだ残暑なのに、今月はダウンを取り出すほど冬っぽい気温になったんですね。みなさんも体調管理を気をつけて風邪にならないに注意してください。さて、普段Web開発ばかりやっているエンジニアとして、たまに他の分野をみて勉強してスキルを落ちないようにしていますが、身近のツールがどうやって動いているのも気になっています。

すこし前にTerraformとCloudFormationというIaC(Infrastructure as Code)ツールを触ることがありまして、2つのツールの共通点は依頼関係のあるリソースを並列で作成したり更新したりできます。そしてCloudFormationは一個のリソースが失敗したら、いままで実行した内容をロールバックすることができます。とても高度な機能のようなんですが、機能をシンプルにして、私達でも実装できるかを考えみましょう。

例えば、新規作成のみを考えて、AWS ECS Serviceを作成しましょう。

  • CloudWatch LogGroup
  • IAM Role
  • ECS TaskDefinition (CloudWatch LogGroup, IAM Role)
  • LoadBalancer
  • LoadBalancer TargetGroup (LoadBalancer)
  • LoadBalancer Listener (LoadBalancer, LoadBalancer TargetGroup)
  • EC2 Security Group
  • ECS Cluster
  • ECS Service (ECS TaskDefinition, ECS Cluster, LoadBalancer Listener, LoadBalancer TargetGroup, EC2 Security Group)

一個のECS Serviceを作成するのに、関連するリソースがこんなに多いと思うかもしれませんが、注目してほしいのは、リソースととなり括弧の中にあるそのリソースが依頼しているほかのリソースです。すべてのリソースを作成するには、どんな作成順が期待されますかというと

まず、依頼するリソースがない

  • CloudWatch LogGroup
  • IAM Role
  • Load Balancer
  • ECS Security Group
  • ECS Cluster

そして、作成したリソースを基づいてほかのリソース、例えばCloudWatch LogGroupとIAM Roleが終わればECS TaskDefinitionを作成できます。ような、こんな図になります。

f:id:unifa_tech:20211028150527p:plain

続きを読む