しょ〜うぃん広場

おもにTech系なブログ、ときどき個人的なブログ

cookpad のオフィスに遊びに行ってきた

Facebookに 中国から日本に帰ってきた! って書いたら、去年のインターンでお世話になったcookpad人事の方に、「新オフィス遊びにおいでー」って言われたので遊びに行ってきた! (図々しくてすみません…笑)

写真撮ってくればよかったんだけど、忘れちゃって載せられる画像が1枚もない…笑

去年のインターンで一緒だった@s_osa_くんがバイトしてたから、ちょっと時間頂いて「研究しながら週四でバイトしてるよ〜(スゴイッ)」みたいな話とか聞いた。 (夕飯一緒に行けなくてゴメン、また今度行こう!!)

人事の方にひと通りオフィスの中をぐるっと紹介してもらって、なるほどなるほど〜って感じだった。 ワンフロア貸切だけど、全部が見渡せる感じではなくて、社員さんたちのスペースは大きく3つぐらいのブロックに分かれていた気がする。 (どのチームをどこに配置するのかってすごく重要だと思うんだけど、だれがそれ決めるの?って聞き忘れて残念だ…)

そのあとは @taiki45 さんと1時間ぐらい時間頂いてお話させてもらって、RailsのFat Modelはどう解決したらいいのか、E2EとかModelのテストってどこまで書いているのか、最近注目しているミドルウェアはなんですか?とかを聞いた。 大学は文系の専攻で、卒業して3年目でバリバリプログラム書いてる方みたいだったから、自分ももっと成長スピード上げていかないとなって刺激を受けた。

(cookpad は)リモートワークしないんですか? って聞いたら、抽象度の高い話はホワイトボードとかに絵とか図を書きながら議論した方が効率が良いでしょ? という回答をもらって、確かに自分たちもそれでちょっと困っていることはあるなと思った。自分は仕事でSlackとSkypeでしかコミュニケーションを取っていないから、自分の意見を伝えるのに必ず言葉にして発しないといけなくて、「こういう感じ」をうまく伝えられなかったり、「この辺がターゲット」をマトリックスのこの辺 みたいな形で伝えられないのは確かに弱点としてある。

あとは、グループ内のToDo管理もポストイットを使ったカンバン方式で管理していて、 これはなんでオンラインで管理しないんですか? と聞いたら、(ないと思うけど)だれかが cheat する可能性があるし、チームみんなでポストイットを囲んで、「このタスクは終わったよね」とか確認しながらタスク管理できるのが良いとのことだった。 自分の仕事では Pivotal Tracker + Slack でタスクに変化があれば、Slackに通知が来るようになっているけど、ドカドカっとだれかがタスク整理したりすると、何が起こったのか把握しずらいし、その辺りもリモートワークに改善の余地があるなぁと思った。

自分は大学を出てすぐにリモートワークをしてしまったから、良いチームがローカルワークでどうやって仕事を進めているのかの知見が少なくて、今回みたいな機会があるとすごく勉強になる。

インターンで5日間お世話になっただけなのに、1年後も覚えててくれてこういう機会まで設けてくれて本当にありがとうございます!圧倒的感謝!!! という感じなので、ブログの記事にしてみました。

また機会があれば、遊びに行かせてください〜!

YAPC::Asia 2015 に参加してきた!

今回のYAPC::Asiaが10周年目で、一応今年で最後!とのことなので参加してきました。 Perl Conference のはずなのに、最近はWeb全般のTalkが増えてきているので、自分はPerlを全然書かないけどかなり楽しめました。

1日目はずっとA会場にいて以下のトークを

2日目はD会場とE会場をウロウロして

を聞きました。

その中でも印象に残っているというか、影響を受けた話は fukayatsu さんの esa.io - 趣味から育てたWebサービスで生きていく です。 詳しくはスライドが上がっているので、上のリンクから見てもらえば良いのですが、概要としてはハッカソンでササッと作ったオンラインドキュメント管理サービスで、それをデザイナーの方と2人でブラッシュアップして、今は会社立ち上げてやってるよ!って話です。 2014/11(?)からサービスインして、現時点で約800チームが使っているみたいなので、1チーム平均5人だと仮定して、500円/月*人なので、単純に計算して200万円/月ぐらいの売上ですよね。

いいな〜 って感じですね。

Ruby on Railsの作者のDHHも言っているんですが、FacebookとかTwitterとかYouTubeとか、世界的に超成功するサービスを作るのはすごく大変だけど、適度に儲かるサービスなら頑張れば作れるよね!って思うんですよ。

それで年収1000~2000万円ぐらいになれば、生活に困ることはないし、自分の好きなサービスのメンテナンスしていればいいわけだし、めちゃめちゃ楽しい生活の始まりじゃないですか。

Mac + 4K@60Hzディスプレイには LG の 27MU67-B が最適

4月から社会人になり、リモートワークをしています。 ほとんど自宅で仕事をしているので、作業環境を整えたいなと思って4Kディスプレイを購入しました。

27MU67-B を買った背景

MacBook Pro Retina(15'' Late 2013) + 4K@60Hz な環境が欲しかったのですが、Macで4Kディスプレイを使うネットの記事を見ていると

表示の一部が乱れたうえ、さらに元の解像度に戻せなくなる

via Macで4Kクラスの超高解像度ディスプレイを試す

モニタ付属のDisplayPortケーブルでThunderbolt2経由接続をしてみましたが、解像度・発色ともに破綻しており、使い物になりませんでした。

via Dell UP2414Q のカスタマーレビュー

のような書き込みが割とたくさんあって、どの商品も個体差があり、Macと相性の良い4Kディスプレイはほとんどなさそうでした。

Yosemite v10.10.2 までは60Hzの場合は標準でMulti-Stream Transport (MST)という方式で4K出力をするようになっていたため、それとディスプレイの相性がなかなか合わないのではないかというのが個人的な意見です。 MSTについて簡単に説明すると、これはもともと外部ディスプレイを複数枚つなげるときに使う転送方式で、4Kディスプレイの場合には右半分と左半分を2枚のディスプレイとみなしてデータ転送をする方法です。

Appleもこういった問題が多発しているのに気づいたのかもしれませんが、Yosemite v10.10.3からSingle-Stream Transport (SST)での60Hzに対応しました。 SSTだとGPUの力が更に必要になるようで、SST@60Hzに対応しているMacの機種はMST@60Hzに対応しているものよりも更に少なくなります。(参考: Using 4K displays and Ultra HD TVs with your Mac) Screen Shot 2015-07-23 at 09.15.30

よく見ると、ぼくが使っているMacBook Pro Retina(15'' Late 2013)はSST@60Hzに対応していない模様… ただこれは、MBPR標準のIris ProのGPUを使った場合であって、上位モデルに付いている外部GPU (Late 2013であれば NVIDIA GeForce GT 750M) であれば、SSTで60Hzいけるんじゃないの? と個人的には勝手に思っていました。

そんな感じで (1) MacBook Pro Retina(15'' Late 2013)の上位モデルであれば、SSTで60Hz出力できるか (2) LG製27MU67-B はMacと相性が良いのか

を試すために、人柱になって 27MU67-B を買ってみました。

結果

7月11日に届いて、約2週間使ってみましたが100点中、90点です!

良い点

(1) 表示の一部が乱れたりするような障害は一切起きなかった 特に設定もなにもする必要がなく、DisplayPort(ディスプレイ) to Thunderbolt(MBPR) で繋ぐとすぐに表示されました。 対応するケーブルも付属していたため、ディスプレイ到着後にすぐに使えたのも好印象です。

(2) 4Kディスプレイの解像度が変更できる 当然といえば当然なのですが、こちらも問題なく自分の好みの解像度に変更できます。 Screen Shot 2015-07-23 at 09.49.55

(3) HDMI2.0に対応している 今のMacには関係ありませんが、このディスプレイはHDMI2.0に対応しているので、HDMIでも60Hzで表示することができます。(従来のHDMIは4K@30Hzまででした) これからHDMI2.0に対応したPCやゲーム機が出てくると思うので、長期間使えるディスプレイになるでしょう。

悪い点

(1) 入力ポート切り替えが面倒 以下のレビューにもあるように、入力ポートの切り替えにMENUに入って選択する必要があり、切り替えまでに最低でも8回のボタン入力が必要です。 複数のマシンでディスプレイを共有するという使い方には適していないかもしれません。

4台のPCに接続しているのですが、切り替えが非常に面倒です。
MENUから入って一段奥に入力切替があるのでボタンを数回押さないといけないのでストレスを感じます。

via LG 27MU67-B のカスタマーレビュー

(2) Macが発熱する やはりMBPR(Late 2013)のIris Proでは60Hzに対応していないようで、ディスプレイを繋ぐと自動的にGPUNVIDIA GeForce GT 750M に切り替わります。 ディスプレイ上ではほとんど静的な画面を写しているだけなので、GPUの使用率は5%前後ぐらいなのですが、それでもファンの回転数が4000~5000rpmでGPUダイの温度も70℃弱になります。 GPUが力不足という事はなさそうですが、750Mの発熱によるファンの回転音が少し気になります。 (感覚的には、重い処理を走らせてCPUをブン回した時ぐらいのファンの回転音が常にしている感じです)

夏なので高温になりやすいという季節的な問題もあるかと思いますが、ぼくはフリップスタンドを使うことでこの問題が解決できました。
Screen Shot 2015-07-23 at 10.48.23

こういったものがあるのは今回初めて知ったのですが、結構人気の商品のようです。 (購入時には20個在庫があったのですが、翌日見たら在庫が2個になっていました)

フリップスタンドを使うことで、Mac本体の下部に隙間を作ることで排熱効率が良くなります。 これを使うとファンの回転数が3000rpmぐらいに落ち着き、ファンの音もほとんど気にならないぐらいになりました。 (音に注意すると、あっ回ってる! とわかるぐらいの音量です)

まとめ

悪い点の(2)が解決するまでは、80点ぐらいだったのですが、それが解決できたので90点になりました。 そもそもまともに動くかどうかわからない状態での購入だったので、その反動で自分の中での評価が若干高めになっています。

HDMIを使って30Hzでも接続してみましたが、マウスポインタが滑らかに動かず、これでは普段使っていてストレスが溜まるなぁ…という感じだったので、60Hzで使用できる環境を整えることが大事だと感じました。

27インチで6万円(執筆時)となかなかの安さなので、手を出しやすいモデルかなと思います。

Mouをコマンドラインから簡単に使えるようにした

結論から言うと、この記事はMouを[mou]というコマンドで起動できるようにするための記事です。

TextMateとかだと

$ mate filename

ってやると、filenameのファイルをTextMateで開ける。

これをマークダウンエディタのMouでもやりたかった。 調べてみたら下の参考1が見つかったんだけど、このページだけだとやり方がよく分からなかったので参考2のページも参考にしながら、実現させた。
【参考1】: コマンドラインでMouを開く
【参考2】: 自作のスクリプトをコマンド検索パスに保存する

そもそもMouにはコマンドラインから起動できるらしいのだけど、コマンドが

$ open -a Mou               # Mouを開く
$ open -a Mou filename.md    # filename.mdを開く

とか、ちょっと長くて面倒なコマンドになっている。 しかも下のコマンドでは、既存のファイルを開くだけで、新しいファイルは作成できない。。。

ということで、 ・[mou]だけ打てば良くて ・新しいファイルも作成できる コマンドを作ることにする。

作業開始

適当なディレクトリで

$ vim mou

mou

#!/bin/bash

if test $# -eq 0; then
    `open -a Mou`
elif test $# -eq 1; then
    `touch ${1}`
    `open -a Mou ${1}`
fi

中身はこれだけ。 touch ${1} の部分はなくてもいいけど、これを書かないと新しくファイルを作りたいときにエラーになる。 すでにファイルが存在する場合にtouchをしても、タイムスタンプが更新されるだけなので、問題なし。

書き終わったらmouファイルの実行権限を変更しておく。

$ chmod a+x mou

でもこのままだと、コマンドを打つときに

./mou filename.md

とかしないといけなくて気持ち悪いし、そもそもmouのファイルがあるディレクトリにいないと絶対パスを打たないといけない… クソやん!!!!

ってことで、mouコマンドを使えるようにする。

$ sudo cp mou /usr/local/bin/mou

このコマンド一発で完了。 (このやり方を調べるのに10分ぐらいかかったんだけど…笑)

これで

mou filename.md

ができるようになりました! 便利!!!!!!

要らなくなったiPhoneで玄関監視をした

実家では、人が入ってきたら分かるように、こういうドアアラームを使っているのだけど

電池の消耗が激しくて10日に1度ぐらいエネループを充電しなければならず、とても面倒だと父親が言っていた。 それなら、要らなくなった古いiPhoneをビデオカメラ代わりにして、それをMacに転送して、Macでリアルタイム画像解析してやればいいのでは? と思って、システムを作ってみました。

全体の流れ

  1. MacReflectorをインストールして、iPhoneをAirPlayで繋げられるようにする。

  2. iPhoneでカメラアプリを起動して、AirPlay先にMacを選択し、ミラーリングにする。

  3. Macの画面上にiPhoneの画面が表示されるので、定期的にそのウィンドウのスクリーンショットを撮る。

  4. そのスクリーンショットを解析し、玄関のドアが開いていると判断できれば、チャイム等を鳴らす。

です。 以下で詳しく説明していきます。 (詳しい説明が要らない場合には、最下部のソースコードを直接見てください。)

手順1

Reflectorは1アカウント1200円ぐらいするちょっと高めのアプリですが、パソコンに繋いだ(音質の良い)スピーカーでiPhoneに入っている音楽をAirPlayで流す使い方もできたりするので、しっかり使えば12000円ぐらいの価値はあると思います…笑

手順2

上の説明そのままです。

手順3

一番面倒だったのはこのiPhoneのウィンドウのスクリーンショットだけを撮る部分です。

普通に画面全体のスクリーンショットを撮ると Screen Shot 2015-03-30 at 11.09.51
となりますが、これでは周りの画像が解析の邪魔になるので、今回欲しいのは、以下のiPhoneの部分だけのスクリーンショット
Screen Shot 2015-03-30 at 11.10.48

コマンドラインからスクリーンショットを撮る方法を調べると

usage: screencapture [-icMPmwsWxSCUtoa] [files]
  -c         force screen capture to go to the clipboard
  -C         capture the cursor as well as the screen. only in non-interactive modes
  -d         display errors to the user graphically
  -i         capture screen interactively, by selection or window
               control key - causes screen shot to go to clipboard
               space key   - toggle between mouse selection and
                             window selection modes
               escape key  - cancels interactive screen shot
  -m         only capture the main monitor, undefined if -i is set
  -M         screen capture output will go to a new Mail message
  -o         in window capture mode, do not capture the shadow of the window
  -P         screen capture output will open in Preview
  -s         only allow mouse selection mode
  -S         in window capture mode, capture the screen not the window
  -t<format> image format to create, default is png (other options include pdf, jpg, tiff and other formats)
  -T<seconds> Take the picture after a delay of <seconds>, default is 5
  -w         only allow window selection mode
  -W         start interaction in window selection mode
  -x         do not play sounds
  -a         do not include windows attached to selected windows
  -r         do not add dpi meta data to image
  -l<windowid> capture this windowsid
  -R<x,y,w,h> capture screen rect
  files   where to save the screen capture, 1 file per screen

とのことで、特定のウィンドウのスクリーンショットを撮るには

-l<windowid> capture this windowsid

のオプションを使えば良さそう。しかしwindowidをどうやって調べればよいのか… How do I find the windowid to pass to screencapture -l? を見ると、Apple純正のアプリでは

screencapture -l$(osascript -e 'tell app "Safari" to id of window 1') test.png

のようなコマンドで、特定のアプリのウィンドウのwindowidを渡せるようですが、ReflectorはApple純正のアプリじゃないし、無理…

GUIのQuartz Debugアプリを使えばwindowidが分かるようだけど、それではプログラムに組み込めないし…

ということで、原点に戻ってCocoaを使って取得します。RubyからCocoaを叩きたいので、

require 'osx/cocoa'

として、

all_windows = OSX::CGWindowListCopyWindowInfo((OSX::KCGWindowListOptionAll | OSX::KCGWindowListOptionOnScreenOnly | OSX::KCGWindowListExcludeDesktopElements), OSX::KCGNullWindowID);

とすれば、現在表示しているwindowの全ての情報が取得できました。 (rbenvでRuby管理してたら、RubyCocoaが上手く使えなかったので、その解決方法は YosemiteでRubyCocoaを使う に書きました。)

あとはこの中から欲しいwindowidを抜き出して、コマンドラインからスクリーンショットを撮るだけです。 (詳細は下部のソースコード)

手順4

得られたiPhoneスクリーンショットから、どうやってドアが開いている、もしくは人が入ってきたのを判断するかという部分ですが 1. 顔認識をする 2. 動作検出をする 辺りが簡単にできるかなと思いました。

1に関しては過去の記事にも書いたようにOpen-CVを使えば簡単に顔認識ができます。 ので、実際に実装してみたのだけど、落ち込んだ気分の人が(頭を下げたまま)玄関から入ってくると顔が認識されないのと、家から出て行く場合には後頭部しか映らないので、そういった場合には検出ができませんでした。

ということで、動作検出の方に方針を切り替えます。 具体的には、1分毎に"元画像"を保存して、2秒ごとに"現在の画像"を撮って、"元画像"と"現在の画像"を比較して変化が大きければ、玄関が開いたもしくは人が写っていると判断するようにしました。 1分毎に"元画像"を変更しているのは、うちの玄関が 2015-0327-191139
こういうドアで外の光が透過して、朝と夜とか、晴れと曇りで明るさが変わってしまうので、それに対応するためです。

2つの画像の比較はImageMagickコマンドラインツールを使って

$ composite -compose difference original.png now.png diff.png
$ identify -format "%[mean]" diff.png

とすると、最初のコマンドでdiff.pngに差分の画像が生成されて、次のコマンドでどれだけの差分があったかを数値で出力します。 (詳しいことは2枚の画像のdiff(差分)を超簡単に調べる方法を参照)

あとは、"元画像"を変更する時に、それがちょうどドアが開いている時でないことのチェックとか、 何かが起きてずっと動作検出状態になってしまっても、復帰するような工夫も一応しておきました。 (細かい部分はソースコード見てくれ〜)

ソースコード

ここまで4時間ちょっとで完成して、仕事後帰宅した父親にKyokoさんの声で

「ぴんぽおん、ぴんぽおん、ぴんぽおん、ぴんぽおん。(父親の名前)さん、おかえりなさい。私はげんかんしです。今日から玄関の監視を担当します、げんかんしです。よろしくおねがいします。」

と大音量で流したら、 「これは要らない」 と言われて、結局このシステムは採用されませんでした。 (画像解析にCPUを意外と使うから、電気代が結構掛かるかもと説明したのが採用されなかった主な理由ですが…)

1ヶ月リモートワークでインターンしてきた @中国&日本

11月は1件も記事書いてなくて、気付いたら2014年最後の月に突入していた。 11月は何をやっていたかというと、週1日だけ株式会社MMMという企業でリモートワークインターンをさせてもらっていたので、そのことについて書こうと思う。

今回はインターンの内容というよりも、リモートワークに焦点をあてて書いていく。 ちなみに、来年4月以降はこの企業で働かせていただくことが決まったので、就職した際のメリット/デメリットも少し書いてみる。

1.インターンの概要

リモートワークに焦点を当てるといいつつ、いきなりインターンそのものについてのことだけど、背景も大事だと思うので書いておく。 今回のインターンは週1日で1日8時間労働を基準にして、合計32時間分の仕事を与えてもらうことになっていた。MMMさんは"コアタイムのないスーパフレックスタイム制"なので、空いている時間に作業してもらえればOKという方針で、特にコアタイムなどは指定されなかった。APIサーバーの開発の一部を担当することになったので、リモートワークでコードを書くことも体験できた。

作業場所に関しては、11月上旬は中国にいたので、中国の杭州からリモートワーク。中旬以降は帰国したので、京都からのリモートワークで参加した。

2.リモートワークのメリット

どこでも仕事ができる

大学卒業後は上海で生活するつもりなので、これはぼくにとってとてつもなく大きなメリットである。 中国で生活するといっても、半年に一回はビザの関係で帰国しないといけなかったり、たまには2週間ぐらい日本に帰りたくなったりする(かもしれない)ので、日本でも中国でも仕事ができるというのは非常に素晴らしい環境である。 今回も上述のように11月は中国と日本に半々ぐらい滞在していたけど、特に大きな問題なくインターンに参加できた。

いつでも仕事ができる

これは正社員になってからというよりは、インターンに関すること。 今回のインターンでは一応自分の中で毎週金曜日に作業すると考えていて、社員の方にも伝えていた。 しかし、木曜日に帰国して、翌日金曜日にいろいろ書類を整理したり、1ヶ月放置していた部屋の掃除をしたり… あるときは、研究が忙しくて昼間に時間が取れなかったりと、思うように"金曜日昼間"の時間が確保できないことがあった。それでもリモートワークなら、金曜日夜にも作業できるし、あるいは土曜日午前中にも作業ができる。 これを正社員になっても続けてしまうとコミュニケーション面でいろいろと問題が起こるけれど、別の事をしながら短期間のインターンに参加させてもらうという状況では、リモートワークのメリットが出たかなと思う。

仕事中に邪魔されない?

「?」が付いているのは、リモートワークの記事を読むとよくこのメリットが書かれているのだけど、今回はこのメリットが実感できなかったからである。というのも実際にオフィスで働いたことがないので、同僚たちがどれぐらいうるさいものなのか知らず、比較ができない…笑 MMMさんではチャット上でも主に業務に必要な情報しか流れてこないし、たまーに気晴らしに雑談が入るぐらいなので、特にうるさいと感じることもなかった。

3.リモートワークのデメリット

作業環境がネットワーク環境に依存する

ローカルワークでも、そうといえばどうなのだけど、リモートワークではさらに顕著になる。 ミーティングをするときにはSkypeなどの音声通話コミュニケーションツールを使うのだけど、ネットワーク環境が悪いと突然切れたりする。 特に日本↔中国間では、回線が細く、最高で7Mbspしか出たことないし、Free Wi-Fiとか適当な場所で繋ぐと数百kbspだったりするので、複数人Skypeをすると少し厳しいこともある。 もちろん上海では最高速度の固定回線を引くつもりだけど、リモートワークはどこでも仕事ができるからといって、"どこでも"仕事ができるわけではない。

自己管理ができないと大変

今回のインターンは週1だったので、あまり感じなかったけど、普段リモートで受託開発をしているとこれを感じたりする。特に作業場所が自宅だと、自分の中でいつからが仕事で、いつからが自分の時間なのかという区切りが付けづらい。週末ずっと家に引きこもっている自分なんかだと、家の中の風景は見飽きてるし、ずっと同じ座った格好だしで、特にそれがひどい。 そういう人はコワーキングスペースに行って、働く時間をある程度固定するのが良いと思う。

4.リモートワークをしてみての感想

受託開発では1人でリモート開発しているので、チームでのリモート開発というは今回はじめてで、最初はコミュニケーション面での心配があったのだけど、思ったよりも障害がなくて特に不自由は感じなかった。 MMMさんではSqwiggleのような社員の顔が見えるようなツールは使っていなくて、HipChatを使って連絡しあっている。ただ、チャットでも顔文字を多用するように心がけているようではあったし、単なる文字だけではなくて、感情を上手く伝えようとしているのが感じられた。 ぼくは個人的には、カフェで作業するような"見られている感"が大事で、それがないとダラダラしてしまうことがよくあるので、機会があれば社員の顔が見れるツールを使いませんか!と提案してみようかと思っている。(コワーキングスペースに行けば"見られている感"があるのでいいのだけど)

1ヶ月間リモートでずっと仕事していたのではなくて、実は11月末に(1人を除いた)社員さんみんなで名古屋に集結して、社員の方々と顔合わせをして、直接コードレビューをしてもらったりした。 この時感じたのは実際に会うと、"一緒にいる時間を大切にできる"ということで、普段リモートで働いているからこそ実際にあった時の時間がさらに濃く感じられるのかなと思った。(実際に社員の方も夏にローカルワーク開発合宿をやったのがスゴイ良かったと言っていた) ぼくは中国に住んでいる彼女と遠距離恋愛をしているのだが、これは遠距離恋愛と通じるものがあると思った。彼女とは実際に会うのは年に数回だけで、いつもはFacetimeとかで連絡を取っているが、普段一緒にいないという面では、(努力すればカバーできるレベルの)不便や不都合が起きることもある。しかし、その分実際に会った時には、喧嘩せず楽しい時間を過ごせるようにしようとお互い心がけるし、その時間を最高の時間にすることでお互いの仲ももっとよくなれることを実感している。 そういったメリットもリモートワークにはあるのかなと思った。その証拠にMMMの社員さんはすごく仲が良さそうである。

まとめ

将来日本と中国を数年おきに行ったり来たりする可能性もあって、リモートワークができる能力を今のうちに身に付けておくことが必要だと思っているので、新卒でリモートワークが経験できるのは非常に嬉しい限りである。 リモートワークを許可している企業でも、新卒は最初1年間オフィスで働いてもらいますとか、フリーランスの方のみリモートワークを許しているんですよ、とか言われることがあったので、自分にあう株式会社MMMを見つけることができて本当に良かったなと思っている。 来年4月から頑張ります!╭( ・ㅂ・)و ̑̑グッ !

30倍使いやすくなったFeVPN 1.1.0をリリースした!

2ヶ月前にFeVPNを作ったんだけど、使い勝手が良くなくて自分でも使ってなかった…笑 (まぁ日本にいる時にはVPNなんて必須じゃないしね)

10月2日から中国に滞在してて、再びFeVPNを使い始めたんだけど、やっぱり使いにくいから修正してバージョン1.1.0としてリリースした。 (ここから1.1.0のFeVPN.zipをダウンロードしてね。)

使いにくかった点

  • スリープから立ち上がったばっかりでWi-Fiがまだつながってない時にも、VPNを繋ぎにいこうとして「VPNが繋げません!!」ってダイアログが出てくるからうるさくて嫌だった。
  • オフラインのまま作業する時にも15秒ごとにVPN繋げませんダイアログが表示されてまともに作業できないし、その度にいちいちアプリを落としたり起動したりしないといけなくて面倒だった。

追加機能

1. オンラインの時のみVPN接続を試みる 上の問題を解決するために導入した。 オンラインかどうかを判定するにはwww.apple.comにpingをして、レスポンスが返ってくればオンラインと判定してる。 確認先をgoogle.comにしようかと思ったけど、中国からはgoogle.comにつながらないのでダメだった…笑

2. 連続で複数回接続に失敗したらFeVPNを終了する VPNサーバーの調子が悪くて、しばらくうまく繋がらない時があるけど、その間ずっと15秒ごとにダイアログが出てくるのはクソなので、3回(15秒x3)連続で接続に失敗したら「アプリを終了しますか?」と聞いてくれるダイアログを出すようにした。

あとはたいした機能を追加してないけど、気になる人はCHANGELOGを見てください。  

これ使ってくれてる人がいるのか知りたいんだけど、ダウンロード数とか簡単にログ取れないかなぁ…