Furyu
[フリュー公式]

Tech Blog

フリュー株式会社の技術ブログです

2019年07月18日

furusin

色々な画面サイズのAndroid端末をテストする

こんにちは。ピクトリンク事業部の古川です。

 

Androidアプリを開発していると「これは画面サイズが大きな端末だとキレイに表示されるけど、小さな端末だとどうなるんだろう?レイアウトが崩れたりしないだろうか?」と思うことが稀に毎日あります。

実際、弊社のメンバーが最近Unihertz Atomを購入しまして「これ…ちゃんと表示されるの…?」と心配になりました。

そんな時、Android StudioのPreview機能を使えば実機を用意しなくても擬似的に試すことが可能です。

実際に手元で見ることはできませんが、「この文字列は改行されてしまわないかな?」といったシーンでは活用できるかと思います。

 

実際にやってみる

実際に確認したレイアウトXMLを開きます。

この作業はDesignタブでもTextタブでもどちらでも実施可能ですが、今回は説明しやすいようにDesignタブで解説を進めます。

画面の上部を見てみましょう。

スクリーンショット 2019-07-18 10.36.23

こんなメニューが並んているはずです。

このメニューには、今作っている画面を「どんな状態で見てみますか?」という選択肢が多数用意されています。

このうち丸く囲ったところを変更することで、画面を表示する際の端末や画面サイズ、解像度を色々と試してみることが可能です。

選択してみると端末のリストが表示されます。解像度も表示してくれているのがいいですね。

スクリーンショット 2019-07-18 10.42.10

よく見ると、上から5つ目の「5.5, 1080 x 2160, 440dpi (Pixel 3)」にチェックが入っています。これが今試している端末のサイズとなります。

より小さな画面サイズをテストする

上記リストのうち下から2つ目「Generic Phones and Tablets」を選択してみましょう。

スクリーンショット 2019-07-18 10.45.05

このように、最初に表示されていたPixel3などとは異なるサイズや解像度のリストが用意されています。

こちらはldpiやxhdpiといった表記がされているのでわかりやすいですね。

「とても古い端末の画面サイズを試したい」といった場合はここから選択するとよいでしょう。

 

独自の画面サイズをテストする

それでは、上記リストに含まれないサイズ(例:正方形)をテストしたい場合はどうすればよいでしょうか。

答えは「じぶんでAVD(Android Virtual Device)を作っちゃう」です。

上記リストに「Virtual Device」とありますよね。これがAVDです。

AVDを作成すると、この「Virtual Device」にどんどん増えていきます。

独自画面サイズのAVDを作成する

上記リストの一番下「Add Device Definition…」を選択します。

スクリーンショット 2019-07-18 10.55.27

すると、AVD Managerが起動します。ここから画面下部の「+ Create Virtual Device…」を選択します。

新たにAVDを作成するための端末を選択する画面に遷移します。左下の「New Hardware Profile」を選択します。

スクリーンショット 2019-07-18 10.56.20

新しい端末を作成する画面が表示されます。

ここでテストしたい画面サイズを入力します。

「Screen」の「Resolution」に入力します。今回は例として500 x 500 の正方形にしました。

作成した端末の情報がわかりやすいように、「Device Name」を画面サイズにしておくとよいでしょう。今回は「500×500」としています。

 

スクリーンショット 2019-07-18 10.59.29

画面の作成をFinishすると、端末を選択する画面に、作成した端末が追加されています。

この端末を選択し、通常通りAVDを作成しましょう。

スクリーンショット 2019-07-18 10.59.42

AVDの作成が完了すると、最初の端末リストに作成したAVDが追加されます。

スクリーンショット 2019-07-18 11.05.26

これで特殊なサイズの端末が発売されても、わざわざ購入せずともレイアウトが崩れていないか確認することができます!

最後に

でも特殊な端末が発売されたら手元に欲しくなるのがガジェ厨


2019年06月27日

kakuda.takumi

JJUG CCC 2019 Spring 参加報告会(非公式)を開催しました!

こんにちは。ピクトリンク事業部の角田です。

前回に引き続き、フリュー主催の勉強会を開催しましたのでご報告します。

前回のレポートはこちらから

京都Devかふぇ#6 〜JJUG CCC 2019 Spring 参加報告会(非公式)〜

今回は合計で約10名の方々にご参加頂きました!

今回は5/18(土)に開催されたJJUG CCC 2019 Springの参加報告会と題しまして勉強会を開催いたしました。

勉強会の様子

トップバッターは弊社の@masaozi3が「1400万ユーザーのWebサービスを 15年運用して考える、
Javaである理由」という題で発表しました。

今回のJJUG CCCにて弊社のサービスであるピクトリンクがJavaである理由について発表したものの再演を行いました。

IMG_0812

 

2番手は@mdstoy 様による「もう参照渡しとは言わせない」です。
こちらは2018年冬のJJUG CCCにて発表された内容の再演でした。
Javaが参照渡しではないということを主張しつつ、Javaの評価戦略について詳しくお話しいただきました。

自分自身、この辺りの話はわかっていない部分が多かったので、とても勉強になりました。

IMG_20190607_193237162

3番手はお恥ずかしながら私@chan_kakuzが「JJGU CCC 2019 Springまとめ~Java歴1年なりの意見を添えて~」という題で発表いたしました。

私自身は、今回のJJUG CCCは登壇はしておらず、聴講のみでの参加でした。

今回の勉強会では、聴講者としての目線で今回のJJUG CCCはどんな感じであったかなどをお話しさせていただきました。

IMG_0814

 

4番手は@kis 様による「最近のJava Webフレームワーク / Java Web Framework ccc 2019 spr」です。
こちらの内容は今回のJJUG CCC内で行われたアンカンファレンスの再演となりました。
最近のJavaのWebフレームワークについて最近の事情を踏まえつつ紹介されていました。

個人的には、紹介されていてたフレームワークの中では一番Springに似ていたMicronautがとても使いやすそうで気になりました!!

IMG_0815

まとめ

今回は京都Devかふぇ史上初となるJavaをテーマにした勉強会を開催してみました。

Java界隈で著名な方々をご招待させていただいて、発表の時ももちろんですが、懇親会でも非常に盛り上がりました。

今後もサーバサイドについての勉強会を開催しますので、参加お待ちしております!!


2019年04月22日

awata

systemd-tmpfiles-setup.service が LDAP を使用できなくて /var/run/mysqld が作成されなかった

こんにちは。
ピクトリンク事業部開発部インフラ課の粟田です。

CentOS7で表題の件に引掛ってmysqlが自動起動できない問題にあたったので解決方法のメモを記述します。

問題

まぁ、表題の通りなんですが、OSを再起動しても /var/run/mysqld ディレクトリが作成されていないので、mysql が /var/run/mysqld/mysqld.pid ファイル作成エラーで起動できませんでした。

暫定として、

していたのを根本的に修正したいな、と調査しました。

調査

ここでWebサイトを調査してみると、

systemdでサービスを動かす際、/var/runにディレクトリを作った時の落とし穴と対策

お前らもさっさとハマって泣くべきCentOS7の落とし穴4つ

の様な記事が見つかったので対応できそうかなと進めてみました。

検証

/etc/tmpfiles.d にファイルを作成するとディレクトリが作れる、という事だったので作成して再起動を実施してみました。

再起動してから

できてないじゃないですか……

/etc/tmpfiles.d のファイルを参照するプロセスを確認してみると、 systemd-tmpfiles ってのが見つかりました。

引数見て実行してみると、

できてる……

systemd-tmpfiles がどこから呼ばれているのかを調べてみると、/usr/lib/systemd/system/systemd-tmpfiles-setup.service を見つけました。

早速ステータスを確認してみます。

エラーですやん。

さらに、このプログラムを調べてみると、/usr/lib/tmpfiles.d を参照する様なので見てみる。

あれ、既にある……

エラーを調査するべく sudo journalctl -u systemd-tmpfiles-setup.service を実行。

mysql ユーザが LDAP に定義されていて、ネットワーク起動前に systemd-tmpfiles-setup が実行されるから起動できないんだろうと推測しました。

そこで、mysql ユーザでないユーザで /var/run/mysqld を作ってみます。

再起動してから

ちゃんとできてる!

ここまでで根本解決として以下のものを想定しました。

  1. /var/run/mysql を root で作って起動時に mysql に uid/gid を設定する
  2. mysql 起動直前に /usr/bin/systemd-tmpfiles –create を実行する
  3. pid ファイルの出力位置を変更する
  4. ホストのローカルに LDAP に定義してるuid/gid で mysql ユーザを作成してしまう

実際には1、2、3どの方法でも解決するのは確認しました。
4は未検証です。
LDAP 認証できない様にサーバ起動してユーザ作成するのとかが面倒だったので……

解決

先に提案した中で、1番を選択する事にしました。
理由として、

  • 2番を選択したら systemctl status systemd-tmpfiles-setup で常にエラーになってるのがなんかイヤ
    • プロセス起動のたびに create 呼ばれるのは chown 呼ぶより気色悪いし
  • 3番は /etc/my.cnf を変更したのに pid ファイルの出力先が変らない、と大騒ぎする人がいたのでいじりたくないな
  • どうせどれを選択しても /usr/lib/systemd/system/mysqld.service は編集しないといけないし(4は除く)

を思うと他の人に手順を説明しやすいのは1番かな、と。

これで mysql が自動起動できる様になりました。

あとがき

systemd-tmpfiles-setup と LDAP 相性よろしくないのかも……
他にも記事をいくつか見つけたし。


2019年03月15日

furusin

社内勉強会で「新しいメンバーがチームにやってきた時に行うこと」をやりました!

こんにちは。ピクトリンク事業部の古川です。

私は先日、DevLOVE関西さん主催の勉強会「新しいメンバーがチームにやってきた時に行うこと」に参加しました!

その時登壇された @bufferings さんのまとめブログはこちらです。

 

この勉強会の内容がすごく良かったし、近々年度が変わるということで人の入れ替わりもありますので、

「今こそこれをやる時だろう!」

と思い、社内のランチ勉強会で実施しました!

 

あ、ちなみに私の所属するピクトリンク事業部は、隣の部署であるプリントシール機事業部と合同で

「合同ランチ勉強会」を隔週で開催しています。

仕事以外で関わることができるのはいいことですね!

 

勉強会の様子

弊社の昼休みは45分なので、最初の15分はちゃんとごはんを食べる時間、残りの30分で勉強会をやっています。

30分間でできることは限られているので、DevLOVE関西さんの勉強会の中でやった

自分がチームに入った時に困ったこと、嫌だったこと

だけにフォーカスして取り組みました。

 

流れとしては以下のように進めました

・自分が感じたことを各自で付箋に書き出す(7分)

・書き出したものをホワイトボードに貼る

・皆で見ながらカテゴライズする

・出たカテゴリの中からフォーカスするものを決める

・フォーカスしたものを掘り下げる

・掘り下げた結果から改善案(トライ)を上げる

 

 

結果

IMG_20190313_122754995

私達は「人」に関して困ったことが多かったようです。

・誰に聞いたらいいかわからない

・名前がわからない

・人となりがわからない

・どんな人なんだろう

といったように、「チームメンバーのことをもっと知りたい、けどなかなか聞き出せない」という悩みが多かったようです。

そのため、最終的には以下の改善案がアウトプットとして出てきました。

・自己紹介カードを書く(ウェルカムボードとかを作るのもよさそう)

・合同休憩を取る(一緒に休憩する)

・ペア作業を作る

私の部署含め、4月には異動や新入社員の配属があります。

そのタイミングで、上で出たアウトプットを実際に活用して新規参入者の皆さんに少しでもお役に立てたらと思います!

 

最後に

今回は「困ったこと」だけにフォーカスしましたが、次は「こうしてあげたかったこと」にフォーカスできたらと思います!


2019年02月15日

furusin

GDG京都様と共催でミートアップを開催しました!

こんにちは。ピクトリンク事業部の古川です。

先日のブログで、GDG京都(Google Developers Groups)様との共催でGDG ミートアップ in 京都を開催することを宣言しておりましたが、ついに実現しましたのでご報告致します!

 

GDG ミートアップ in 京都

今回も合計で30名以上の方にご参加頂きました!

特色としては、海外からGDE(Google Developer Experts)が2名参加されることもあり、セッションのほとんどが英語となりました!

GDEの2名以外にもGDG NZ(ニュージーランド)の方も来られており、とても国色豊かなイベントとなりました。

GDG NZの方とGDEのうちの1名は、直前に東京で開催されていた日本最大級のAndroidイベント「DroidKaigi」にも参加されていたそうです。

(ちなみに私も参加していました。弊社はDroidKaigiのスポンサーでもあります!)

 

GDEであるEnrique Lopez Mañas さんの発表「 Kotlin/Native for Multiplatform development」

IMG_20190210_135625

 

GDEであるiñaki Villar さんの発表「 Diving in the WorkManager API」

IMG_20190210_142212991

英語のセッションということもあり、皆さんいつも以上に真剣に(必死に?)話を聞かれているなぁ、というのが印象的でした!

また、GDG京都のメンバーの兼高さんも英語で発表してくださりました!

IMG_20190210_153921186

Pin-point rebuildable and non-rebuild custom widget from cch-robo

僭越ながら、私も発表させて頂きました!

IMG_20190210_160011292

Build your first wear app from furusin

 

本来は私の発表が最後の予定だったのですが、懇親会のケータリングが届くまで時間が余ってしまいましたので、GDG四国、GDG京都のメンバーより発表を頂きました!

IMG_20190210_163719

 

MVIMG_20190210_164002

 

懇親会の様子

hoge

今回はたくさんの方が懇親会に関するツイートをあげてくださりました!嬉しい!

 

最後に

私たち京都Devかふぇとしては、イベントの共催は初の試みとなりました。

初の共催だし、英語ばっかりだしどうなることやら……と不安はありましたが、参加者の皆様にはとても楽しんで頂けたようで、

運営一同嬉しく思っております!

 

今後は色々なコミュニティと共催等を進め、技術コミュニティの活性化や発展により一層貢献したいと考えています。

ご参加頂いた皆様、ありがとうございました!