ユニファ開発者ブログ

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

PlantUMLで状態遷移図を書いてみた🌱

こんにちは、ビールが大好きなQA/ディレクターの鶴岡です。

先日WACATE2018 夏 ~もちもちモ・デ・リングで、もぐもぐテスティング~ 開催概要 - WACATE (ソフトウェアテストワークショップ)に参加して、モデリングについて勉強してきました。

そこで、テキストベースで簡単にUMLを書けるツール、PlantUML(http://plantuml.com/)を教えてもらったので使ってみたお話です。

セットアップはこちらのブログを参考にしました。 (とてもわかりやすかったです^^)

qiita.com

なんならこのブログを見てもらえば十分なような

やってみた!🌱

ということでPlantUMLで状態遷移図を書いてみました!

こんな感じでテキストで書いていくとプレビューにごりごり反映されます。 f:id:unifa_tech:20180815120547g:plain

画像ファイルとして出力もできます!

出力形式はpng, svg, eps, pdf, vdx, xmi, scxml, htmlから選べます。

pngで出力してみたものがこちら f:id:unifa_tech:20180815114043p:plain

Confluence上でも書けます!

インフラエンジニアにお願いしてConfluenceにPlantUMLのプラグイン(無料版)をいれてもらったら

  1. PlantUMLを選択してf:id:unifa_tech:20180815131257p:plain
  2. テキストベースで書いていくf:id:unifa_tech:20180815131720p:plain
  3. 「⇒」を押すとプレビューが見れますf:id:unifa_tech:20180815131242p:plain
  4. 完成!🎉f:id:unifa_tech:20180815131306p:plain

あとがき

  • この状態遷移図はブログ用に書きましたが、もちろん仕事用のまじめな状態遷移図もちゃんと書いてます(`・ω・´)

  • 状態遷移図を書くのは楽しい!PlantUMLを使うともっと楽しい!(WACATEに感謝)

  • このブログ用の状態遷移図はエンジニア勢みんなでレビューしてくれました。

f:id:unifa_tech:20180815134328p:plain

そんな弊社ではQAマネージャ候補やRubyエンジニアやデザイナー等々を募集しております!!!

www.wantedly.com

最後まで読んでいただきありがとうございました!

ママエンジニア1年目

こんにちは、Androidエンジニアのあいばです。 昨年7月に第一子を出産し、今年4月から職場へ復帰しました。今回は子育てと仕事の両立をするために、私がユニファで選択したワーク&ライフスタイルをご紹介したいと思います。

ワークスタイル

業務内容

産休育休前はAndroidエンジニアとして働いていましたが、復帰後はiOSアプリの開発を多く担当しています。

時短勤務

復帰時は8:30-17:30のフルタイムを選択しましたが、現在は9:00-16:00の時短勤務にしています。
勤務時間が以前の3/4になったため集中力を高める工夫は必要になります。毎日定時直前はシンデレラ気分です。
また、作業時間が減った上に子供の体調不良も割り込んできます。そのため、思うように仕事が進まずに周囲に迷惑をかけて口惜しく感じることもあります。

最近はタスクを15分か30分区切りで管理するようにしていますが、どちらかというと自分の作業スピードを把握するのに役立っています。(育休明けは色々な負い目から適切な工数を出せない病を患っていたためこれから役に立つかもしれません)
そのためこの点に関してはまだまだ課題を感じています。

リモートワーク

ユニファ ではエンジニアの自宅勤務が可能です。主に以下のツールを利用してコミュニケーションを取っています。

  • Slack
  • zoom

私も通勤に1.5hかかるため主にリモートワークをさせてもらっています。夫の勤務先も週1回はリモートワークができるため、週1回は夫に子供を託して出社しています。
保育園からの呼び出しがあった場合も自宅からならすぐに駆けつけられ安心ですし、帰りに小児科、買い物に行く時間もあります。

ライフスタイル

0歳児を保育園に預ける

子供を保育園に預け始める時期についても悩みましたが、1歳児の保活はかなりハードとのことでやむなく0歳児で入園しました。
しかし、保育園に預けてみるとメリットも大きいように感じています。それまでは親子の閉じた空間で悶々と育児の悩みに向き合っていましたが、一緒に子供を見守ってくれるプロフェッショナルの存在に助けられました。
また、子供と離れ社会との関わりを持つ時間が生まれたことでストレスの発散にもなりました。

1日のスケジュール

だいたいこのようなスケジュールで生活しています。

6:00-8:00 起床、朝食、準備
8:00-9:00 登園
9:00-16:00 業務時間
16:00-17:00 お迎え
17:00−18:00 必要なら買い物、遊ぶ
18:00-20:00 お風呂、夕食、遊ぶ
20:00-21:00 寝かしつけ
21:00- 残った家事、自由な時間

リモートワーク&時短勤務のおかげで時間にも気持ちにも余裕が生まれました。
今のスタイルになるまでは子供と遊ぶ時間が確保できなかったり、離乳食を用意できなかったり、毎日タスクをこなすのに精一杯で保育園の連絡帳に書くネタが無かったり、このままでは子供の成長を見逃すことになるのではとかなり焦っていました。

フルタイムも不可能ではありませんが0歳児は初めての保育園にとても体力を使っていることを認識し、一緒に過ごす時間を充実させるために余裕を持つのは大事なことだと思います。

最後に

周囲の理解、サポートがあって現在の状況にあった働き方を見つけることができました。
とはいえ毎日バタバタ過ごし、自身のキャリアプランにも頭を悩ませています。
ただ、子供はいつまでも0歳児でいるわけではないので、子供の成長と共にこれからも柔軟に働き方を選択していけたらいいなと思います。

なぜ違う値を見たのかーーMemory Barrier

こんにちは、ヘルスケア事業本部のちょうです。前回

tech.unifa-e.com

CPUレベルでなぜ並列プログラムはなぜ思った通りに動いてないのを分析しました。要するに、CPUのキャッシュ間でMESIなどのCache Coherenceプロトコルがあるものの、Store BufferとInvalidate Queueなど最適化するための仕組みによって、命令がreorderされたように見えます。

違う値を見ただけでまだいいですが、reorderにより並列プログラムの動作は予測できなくなり、つまりundefined behaviorは一番の問題です。reorderを制御するには、memory barrierという仕組みがあります。CPUアーキテクチャによって命令が変わるのですが、目的は一緒です:前後命令の実行に制限をかけます。

https://en.wikipedia.org/wiki/Memory_barrier

前回のプログラムで、 a = 1f = true の間に smp_mb() (symmetric multiprocessing memory barrier)を入れてみます。結果はどうなるでしょう。

CPU 0にfのキャッシュがあり、CPU 1にaのキャッシュがあるとする

int a = 0;
bool f = false;

void cpu0 {
  a = 1;
  smp_mb();
  f = true;
}

void cpu1 {
  while(!f);
  printf("%d\n", a);
}
続きを読む

なぜ違う値を見たのかーー並列実行におけるCPUの動作

こんにちは、ヘルスケア事業部のちょうです。今日は並列プログラミングによくある間違うコード及びその原因について共有したいと思います。

まずはコード(抜粋、C言語)

int a = 0;
bool f = false;

void cpu0() {
  a = 1; // 1
  f = true; // 2
}

void cpu1() {
  while(!f); // 3
  printf("%d\n", a); // 4
}

関数cpu0とcpu1が別々のスレッドで実行されると、結果がどうなるでしょう。

1?もちろんそのはずですが、100回やると、たまに0も出るかもしれません。

続きを読む

続・RailsアプリからGoogleフォトに写真をアップロードしてみる

暑い!Webエンジニアの本間です。

早速で恐縮なのですが、半年ほど前「RailsからGoogleフォトに写真をアップロードしてみる」というエントリーを書きました。

tech.unifa-e.com

こちらの記事では、PicasaのAPIを使って写真をアップロードしていました。 やりたいことは一通りできたのですが、記事の後半でも書いた通り、いつまでサポートされるかわからない問題がありました。

その後、2018年5月8日Googleから Google Phtos API の発表がありました。 正式なGoogleフォト専用のAPIということで、今後はこちらのAPIを使う方がよさそうです。 今回こちらのAPIを使って、前回作成したアプリケーションの改修を行い、使い勝手などを確認しようと思います。

続きを読む

ログ収集サービス「LogDNA」を試してみた

おはようございます、こんにちは、なますて、こんばんは

ボルダリングに週1で通い始めて2ヶ月ほど立ちましたが5Qで止まってるユニファのインフラ見てます残念なすずきです。 先週朝起きたら右足がつり、気にせずボルダリング行ったら左足がつってしまい体のヤバさを実感しています。

さて本題

からだもやばいですが、弊社のログサーバもやばい。 FluentdとFluetdクラスタで集めたログを、ログサーバに溜め込んでるのですがログを順番に一箇所にまとめるためログサーバは一台構成にしています、つまりSPOF(単一障害点)になってます!やばい!
そのためFluentdのバッファに頼ってるやばい構成なのでやばい
やばいしか言ってないですけどやばい

そんなやばい状況で存在を知った LogDNAであります。

続きを読む

ソラコム様の"Discovery" 2018にて出展して参りました。

梅雨開けにも関わらずやけに雨が多いな……と思っているエンジニアの田渕です。 暑くなったり少し涼しくなったりかんかん照りだったり雨が続いたり……なかなか体調管理の難しい季節ですので、みなさまお体ご自愛ください。

さて、本日の話題は、タイトルにも記載した通り、ソラコム様のSORACOM Conference "Discovery" 2018です。

discovery2018.soracom.jp

その歴史やイベント全体のレポート等は他の方々が既に書いてくださっておりますので、私は出展側(と登壇側)としてのレポートをさせて頂こうと思います。

今年は見るだけじゃない!

言わずと知れた一大イベント、昨年の"Discovery" 2017には弊社のCTO赤沼が参加者としてうかがっておりました。 今年は有難くも、赤沼の登壇および「るくみー午睡チェック」の出展のお話を頂き、イベントの少し前から色々と準備、調整をして参りました。

私は普段オフィスに篭って居ることが殆どで、こういう場に出展側として1日参加するのは初めてです。 しかもなんだか立派な会場で、服もどうしよう!?と前日まで右往左往。 当日朝、自宅から直行するも、案の定迷子になりました。。。

立派な受付を通り、更に会場の中でも迷子になりながら弊社のブースまで辿り着くと、とても素敵な看板が! 準備終わり、開場前に記念写真をパチリ。 f:id:unifa_tech:20180705142447j:plain

ありがたいことに大盛況

今年我々がブースを出させて頂いたのは、IoT Touch & Tryというエリアです。

medium.com

このエリアは、ソラコム様の各種サービスを利用して作られた製品等を実際に体験可能な場所になっており、興味深いブースがたくさん。 準備しつつも、あちこち気になり。。。 午前のキーノートを終え、タイムテーブル上はお昼休みの時間帯に相当する12時以降、徐々に参加者のみなさんの姿が増えてきました。 今回はマーケティング、営業、広報、エンジニアの系5名という体制で、ちょっと多いかも?と思っていたのですが、とんでもない。。。 ありがたいことに、お話を聞きに来てくださる方がたくさんいらっしゃって、全員埋まってしまう場面もあったり。 この状況は、セッションの合間、及び終了後も同じく続き、メンバー一同想定外の嬉しい悲鳴をあげていました。

エンジニアとして参加させて頂いて

今回はソラコム様のイベントということで、いらしている参加者の方もエンジニア、もしくはそれに近しい立場の方が多くなっています。保育業界向けのサービスを展開している弊社のことや、その製品を他業界の方が知る機会は殆どないため、初めて聞きますという方が殆どでした。とても印象深かったのが、説明すると一様に「るくみー午睡チェック」というサービスに対して共感を頂けたこと、また、その仕組みについても肯定的なお言葉を頂けることが多かったというところです。実際にご自身が何らかのものづくりをされている方が多いこともあり、労いのお言葉や、「頑張ってね!応援してるよ!」というお言葉を頂くこともありました。 午睡の現場における課題解決のお手伝いにと「るくみー午睡チェック」というサービスを試行錯誤しながら作り上げてきた訳ですが、例えば第三者のエンジニアから見た時に、この課題に対して現在の仕組みはどう映るんだろう?実はもっといいアプローチがあったりするんじゃないのか?ということは常々考えていました。そんな中、同業の方々から共感や感心のお声を頂けたことはとても心強く、また自信に繋がりました。

イベント終了後は、懇親会にも参加させて頂き、そちらでも色々と勉強になるお話を伺うことができました。 普段立ちっぱなしなんてことが殆どないので、お家に帰ったらご飯を食べて寝る支度して倒れるように寝てしまうくらいでしたが、とても楽しいイベントでした。

赤沼の登壇

冒頭でも書きましたが、今年は弊社CTO赤沼が登壇! 「IoTで新たな価値を顧客に届けるスタートアップの挑戦」という午後の一番はじめのセッションでした。

discovery2018.soracom.jp

このタイミングで、私は他の皆さんにブースをお願いし、応援に。。。(送り出してくれたみなさま、ありがとうございます。) f:id:unifa_tech:20180705153104j:plain 我々の期待を他所に?大きく噛んだりすることもなく、転んだりすることもなく、安定した登壇でした。発表資料等は後日公開されるそうです。

まとめ

  • SORACOM Conference "Discovery" 2018とっても楽しかったです。
  • 来年もお声がけ頂けるように頑張ります。
  • 似たような悩みを持つエンジニアの皆さんとお会い出来、刺激を頂くことが出来る貴重な場だと思いました。

それでは!