Yappli Tech Blog

株式会社ヤプリの開発メンバーによるブログです。最新の技術情報からチーム・働き方に関するテーマまで、日々の熱い想いを持って発信していきます。

Sexy Tech for You #1 Googleスプレッドシートの表をBigQueryに連携して縦持ちテーブルに動的変換

f:id:abe_masatoshi:20210531194020p:plain

データサイエンティストの阿部です。今後不定期に、データ分析のためのデータハンドリングTipsを、Youtubeで発信します。各回3分でBigQueryに関する話題が中心です。"Sexy Tech for You" と題して、思わず使いたくなるような魅力的なTipsを紹介していきたいと思います。

動画中に記載したコードや補足事項を本ブログに掲載しますので、少しでも皆様のお役に立てたら幸いです。では早速、第1回目の配信についてです。

Youtube


コード

#StandardSQL

DECLARE id,target,not_target STRING;

# INFORMATION_SCHEMA.COLUMNSからフィールド名取得
SET (target, not_target) = (
SELECT AS STRUCT
  CONCAT('(', STRING_AGG(IF(STARTS_WITH(column_name,'string_field_')=TRUE , column_name, NULL), ','), ')'),
  IFNULL(CONCAT('EXCEPT (', STRING_AGG(IF(STARTS_WITH(column_name,'string_field_')=FALSE, column_name, NULL), ','), ')'), ' ')  #string_field_*以外のフィールドがあった場合にUNPIVOT対象から除外するためのフィールドセット。NULLのとき半角スペースにしておかないと後続でエラーになる
FROM
  `project_id.dataset_name`.INFORMATION_SCHEMA.COLUMNS #データセット名(青)
WHERE
  table_name = 'table_name' #テーブル名のみ(青)
  AND column_name != 'string_field_1' #キーにしたいフィールド名(赤)
);

# 動的なフィールド名SETを読み込むため、EXECUTE IMMEDIATE FORMATでクエリ発行
EXECUTE IMMEDIATE FORMAT("""
WITH base AS (
SELECT
  *,
  string_field_1 AS value_type
FROM
  (SELECT * EXCEPT %s FROM `project_id.dataset_name.table_name` #キーにしたいフィールド名(赤)
  UNPIVOT(value FOR key IN %s)
)

SELECT
  B.value AS id,
  A.value_type,
  A.value
FROM
  base A INNER JOIN
  (SELECT * FROM base WHERE value_type = '月') B ON A.key = B.key #キーにしたいスプレッドシート入力値(黄)
WHERE
  A.value_type != '月' #キーにしたいスプレッドシート入力値(黄)
""", not_target, target);

補足

結果は以下のように出てきます。3つ目のステージの[結果を表示]から、最終的な出力結果を確認できます

f:id:abe_masatoshi:20210531191659p:plain
出力結果例

f:id:abe_masatoshi:20210531191910p:plain
出力テーブル例

string_field_*target というフィールド名のセットとして使い、それ以外のフィールドをnot_target として除いてUNPIVOT しています。別の型のフィールドを扱う必要がある場合は、この辺りを変更すれば対応できるかと思います。

以上、Moblie Tech for All のヤプリがお送りする Sexy Tech for You でした!次回またお会いしましょう。

コンテンツデータをEC2からAWS Fargate+Amazon EFSに移行した話

f:id:modokkin:20210422102643p:plain

どうも、ヤプリ SREチームのはぶちんです。久しぶりのブログ投稿です。
今回はEC2上に保管されたコンテンツデータをAWS Fargate(以下Fargate)+Amazon EFS(以下EFS)に移行したので、困ったことや結果的にどう実現したかをご紹介したいと思います。

ヤプリって?

Yappli(ヤプリ)はアプリ開発・運用・分析をノーコード(プログラミング不要)で提供するアプリプラットフォームです。 詳細はサービスサイトをご覧ください。 https://yapp.li/

ヤプリのコンテンツデータって?

本記事では、アプリのコンテンツを表現するために必要な設計図のようなものをコンテンツデータとして表現しています。
このデータは、可能ならデータ自体をRDBなどスケール可能な仕組みに移行する事が好ましいのですが、ヤプリで提供している機能が多岐にわたり移行にはまだしばらく時間を要するため、現在でも一部でファイルを扱う仕組みを採用しています。

続きを読む

「デザインシステムの導入と運用」についてDesignship 2020で登壇してきました

f:id:jo_yapp:20201120153909p:plain

こんにちは。UI/UXデザイナーの城です。

前回の記事では、山﨑による「Design Ship 2020でスポンサー登壇しました - Yappli Tech Blog」をお伝えしました。今回はその翌々週に行われたDesignship 2020 Extra Stageのパネルディスカッションで城が登壇した報告をさせていただきます。  

続きを読む

Design Ship 2020で『プラットフォームのUI/UXデザインで世界を変える』について登壇しました

f:id:yamazaki_risa:20201125092854p:plain
こんにちは!
最近個人的趣味でiPadお絵かきにハマっている
UI/UXデザイナーの山﨑です。

さて、先日Design Ship 2020にて、スポンサー枠で登壇しました。

Design Shipって?

design-ship.jp
デジタル・グラフィック・プロダクトにおける「デザイン」の知識や経験を、
それぞれの業界のデザイナーたちが壁を越えて、
学び、鼓舞し合うような機会を提供することで、
国⺠の創造性向上に寄与することを目的としたカンファレンスです。

お話したこと

ヤプリからは
『プラットフォームのUI/UXデザインで世界を変える』
というテーマでお話させていただきました。


ここでは、プラットフォームのUI/UX設計で重要なポイントと
そこから私たちがどういった設計をしているのかという内容を中心に、
私たち、ヤプリのUI/UXデザイナーが目指すUI/UX設計のお話をさせていただきました。


お話した内容はこちらの資料にまとめていますので、ぜひご覧ください。
speakerdeck.com

さいごに

今年のDesign Shipのイベントは、コロナの影響で初のオンライン生配信という形で行われました。
バリバリのスタジオからお送りした形となり、雰囲気にとても緊張したのですが、
人生で初めてこういった大きなイベントで登壇させていただき、観てくださったみなさまに、
少しでもヤプリのUI/UXデザイナーへの興味や関心をもっていただけたことが嬉しく思っています。

また後日、この登壇のお話の続きとして「Yappli ねほりはほり for UI/UXデザイナー」という
自社イベントを開催させていただいたのですが、こちらのお話はまた別途記事にさせていただきます!

iOSDC Japan 2020 に参加しました✨

  • 参加メンバー(寄稿者) 👤
  • はじめに
  • イベントの様子
    • オープニング
    • トークセッション
    • LT
    • クロージング
  • 印象に残ったセッション
    • SourceKit LSPをブラウザでコードを読むために活用する
    • オープンソースのAltSwiftUIの発表
    • キーワード多すぎ!なエンタープライズiOSの世界を概観する - 2020年版
    • そろそろCombine
    • iOS のキーボードと文字入力のすべて
    • iOSアプリ開発のための"The Composable Architecture"がすごく良いので紹介したい
    • 今日から分かるAVAudioEngineの全て
    • 100人でアプリをリファクタリングして見えてきた、最強のiOSアプリ設計に求められること
    • スモールビジネスを支えるfreeeのモバイル技術
    • GitHub ActionsでiOSアプリをCIする個人的ベストプラクティス
    • Flutter移行の苦労と、乗り越えた先に得られたもの
    • google/mediapipe で始めるARアプリ開発
  • まとめ
  • PR

参加メンバー(寄稿者) 👤

古賀山本みしま

はじめに

ヤプリiOSエンジニアの古賀です。

今年もやってきました iOSDC Japan 2020 !
iOSD JapanはiOS関連技術をコアのテーマとした技術者のためのカンファレンスです。

弊社は「iOSDC JAPAN 2020」にスポンサーしています!

今回はカンファレンスの様子や、参加したアプリエンジニアの感想や印象に残ったことについて記事を書きました。

note.com

続きを読む

UX向上のためにできること -社内会議室予約アプリYappRoom-

yapproom,iPad,会議室予約

こんにちは。 UI/UXデザイナーの山﨑です。

昨年6月、弊社引越しをきっかけに、 社内会議室予約アプリ「YappRoom」を作成しました。

利用開始から約一年、 評判はよいものの、さらにUXを改善できることがあるのではと日々考えていました。

ユーザーに教えてもらう

まずは、幅広く情報を得るため社内の利用者にインタビューという形で、ユーザーにYappRoomを 利用して感じていることを教えてもらうことにしました。

インタビュー

インタビュー内容がブレない様に、目的・明らかにしたいこと・対象者を明確にして、 YappRoomの利用頻度で、質問内容を変えながら、回答に応じて真意を深掘りできるように 半構造化インタビューに近い形で実施しました。

分析と課題点の抽出

インタビューした内容をもとに、 カスタマージャーニーマップの作成→インパクト分析することによって UX面の課題点を抽出していきました。

ここで自分が想定していなかった部分で割と多くのユーザーが 使いづらいと感じていたことが明確に見えてきます。

例えば、会議室主催者を検索して選択する操作で、

  • 会議主催者の選択がしづらいと感じる
  • 社員数が増えるとさらに探しづらい

ということです。

このことから、主催者の検索操作部分に UI面と機能面を改善する余地があることがわかり、

  • 選択時の名前の分類をあいうえお順または、部署単位にする
  • 音声検索させる
  • 顔認識/視線認識で設定させる

などなど、解決案としてのアイデア出しにつなげていきました。

次のアクションとして、実際に課題解決策案をもとにプロトタイプ設計し、 ユーザビリティテストで検証して改善を進めていく予定です!

うれしい話も聞けました

今回のインタビューで、ユーザーが困っていること・解決すべきことばかりでなく、

  • 「お客様と話をするきっかけとかネタになる」
  • 「自社でスクラッチで制作してるので、パッと見たときにお客様の評価が高い。」
  • 「ヤプリのサービスとして出したい。売り物にしたい。」

など、外部のお客様にも好評との話もきかせてもらい、 今後のYappRoomの可能性を感じ嬉しく思いました。

まとめ

今回は社内用のアプリを通じて、 まずは『ユーザーを知る』ことで、『自分の知り得なかったユーザーの課題を発見する』 ということが、プロダクトのUX向上のためにできることとして、改めて大切だと感じました。 自分の知り得なかったユーザーの課題の中に、本質的に解決しなければいけない 重要な課題が含まれている可能性があるからです。

この大切な気づきを活かし、これからもヤプリのプロダクトUX向上のための取り組みを積極的に行なって行きます!

PHPカバレッジ100%の世界

PHPのカバレッジを100%にした話

はじめまして、2月入社の尾宇江です。オーイェーって呼んでほしいです。
すでに、Yappliの新CMSはGo言語でフルリニューアルされているのですが、
一部にはPHPで書かれているリポジトリも残っております。
今回そのリポジトリの中の1つのカバレッジを100%にしたという話をさせていただきます。

f:id:OhYeah:20200917114619p:plain
記念すべきカバレッジ100%達成時のコミット

対応したリポジトリの内容

  • PHP 7.3.5以上 + Laravel 6.x
  • アプリからのリクエストを元に外部サービスを実行してレスポンスを返すサービス
  • 独自のデータベースは持っていない
  • リポジトリ全体のファイル数は1000未満

カバレッジ100%にしたかった理由と方針

  • 理由
    入社後のキャッチアップとしてコードリーディングすることになったが、
    もともとカバレッジが高いリポジトリだったので、
    コードリーディングするついでに100%にしてしまおうという軽い理由。

  • 方針
    キャッチアップのためのコードリーディングなので、
    できるだけ既存コードに変更は加えず、テストコードだけで対応する。

続きを読む

Copyright © 2018 Yappli, Inc. All rights reserved