ユニファ開発者ブログ

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

テクトモ #5 で私と Python について話してきました

 先日 8/23(木)に、テクトモという勉強会シリーズの第5回に登壇させていただきました。

techtomo.connpass.com

 このシリーズではエンジニアやデザイナー向けに、未来×希望×キャリアをテーマに情報発信を中心としたイベントを開催されていて、以前 R&D チームの志田がこのシリーズの第3回に登壇しました。

techtomo.connpass.com

 この時私は一参加者として参加していたのですが、懇親会で主催者の方とお話しさせていただく中で、登壇させていただくこととなりました。

プレゼン資料

 第5回のテーマは「Pythonエンジニアが描く未来と希望〜キャリアを中心に考えるLT大会〜」ということで、私はこれまで業務のメイン言語としては Python を使っていたことはなかったのですが、必要に応じてツールとして Python を使っていたことはそれなりにあったので、これまでのキャリアを踏まえてどんなシーンで Python を使っていたかということを、多少の Ruby との比較を交えてお話しさせていただきました。

 当日使用した資料はこちらです。今回は Prezi で資料を作成しました。

わたしとPythonの出会い、別れ、再会、そしてこれから

f:id:akanuma-hiroaki:20180827231048p:plain

まとめ

 当日は私を含む4名のLTがあり、その後その4名でパネルディスカッション形式で会場の参加者からの質問に答えるという形で進みました。アットホームな雰囲気で、参加者の方にも楽しんでいただけたようです。

 Python については AI系技術や IoT などの領域で中心的に使われている言語であり、今後さらに利用範囲が拡大していくと思っています。現状のユニファでのメインの言語は Ruby ですが、 R&D チームでは Python をメインとして使用し始めていますし、ユニファの業務でもさらに活用されていくものと思われます。

 ユニファでは Python を活用してAI系技術領域で活躍したいエンジニアを募集しておりますので、興味のある方はぜひご連絡ください。

【サーバサイドエンジニア】家族×ITで家族コミュニケーションを変革する自社サービスのAI系技術サーバサイドエンジニアを募集!

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であります。

続きを読む