2018年4月12日木曜日

Amazon S3 で サイト公開(HTTPS)する。(2)S3での公開準備編


オフィス狛 技術部のKoma(Twitterアカウントの中の人&CEO)です。

前回は、作業の概要のみだったので、今回は早速作業に取り掛かって行こうと思います。

1)バケット(Bucket)の作成

まずは、AWSのAmazon S3でバケット(Bucket)を作ります。

・Name and region
バケット名称(Bucket name)は、サイトのドメインにします。
例えば弊社だと「officekoma.co.jp」になります。

・Set properties
ここはそのまま次へ(Next)

・Set permissions
ここもそのまま

・Review
内容を確認しバケット作成します。(Create bucket)

上記までの手順を再度繰り返し、「www」サブドメイン用のバケットも作っておきます。
例えば弊社だと「www.officekoma.co.jp」になります。
作成した結果が以下の通りです。

2)ファイル(html・css・js)のアップロード

次にhtmlなどのファイルをアップロードします。
アップロードするのは、サブドメイン無しのドメインのみです。
例えば弊社だと「officekoma.co.jp」

OverviewタブのUploadボタンを選びます。

必要なフォルダ・ファイルを選択します。Drag and dropで、まとめて一気にアップロード出来ます。

漏れなくファイルが選ばれていることを確認して、アップロードします。(Upload)

アップロードすると、以下のようになります。

3)権限の設定

次に Permissions タブから、権限の設定してを行います。
以下の内容で保存します。(Save)
※Resource のドメイン部分を所有のドメインに変更して下さい。
{
  "Version":"2012-10-17",
  "Statement":[{
 "Sid":"PublicReadGetObject",
        "Effect":"Allow",
   "Principal": "*",
      "Action":["s3:GetObject"],
      "Resource":["arn:aws:s3:::officekoma.co.jp/*"
      ]
    }
  ]
}


登録後は以下のように、公開状態(Public)になっている事をアラートで教えてくれます。

4)ホスティングの設定

次に Properties タブを選択し、「Static website hosting」(静的Webサイトに使用する)を選択します。
「Index document」にトップページとなるhtmlファイルを設定します
「Error document」にエラーページ(404など)となるhtmlファイルを設定します
※Endpointが接続するURLになります。

設定後はこんな感じです。
この時点でサイトは表示出来るようになっているので、
先程の Endpoint のURLに接続して、表示を確認しましょう。

続いて、同じ事を「www」サブドメインの方にも行いますが、
こちらは、Properties の設定のみを行います。
先程と同じ手順で、「Static website hosting」(静的Webサイトに使用する)を選択します。
そして、Redirect requests にサブドメイン無しのドメインを設定します。
例えば弊社だと「officekoma.co.jp」

これで、サブドメイン「www」付きで接続されても、サブドメイン無しで接続されても、
問題なくサイトが表示される事になります。

如何だったでしょうか?
S3での公開準備編はここまでです。

次回は、問い合わせフォームで、PHPなどプログラムを使用していた場合の代替手段についてです。

次回:Amazon S3 で サイト公開(HTTPS)する。(3)問い合わせフォーム準備編その1
前回:Amazon S3 で サイト公開(HTTPS)する。(1)作業の概要


, ,

Amazon S3 で サイト公開(HTTPS)する。(1)作業の概要


オフィス狛 技術部のKoma(Twitterアカウントの中の人&CEO)です。

少し前に、Googleから「2018年7月リリースのChrome 68から、
HTTPのサイトには『not secure』と表示する」と発表がありました。
For the past several years, we’ve moved toward a more secure web by strongly advocating that sites adopt HTTPS encryption. And within the last year, we’ve also helped users understand that HTTP sites are not secure by gradually marking a larger subset of HTTP pages as “not secure”. Beginning in July 2018 with the release of Chrome 68, Chrome will mark all HTTP sites as “not secure”.
A secure web is here to stay

弊社のホームページも、少し前まで実はHTTPサイトでした。

オフィス狛という会社が出来たのは2011年ですが、
その時、起業サポートサービスのようなものを使って、早期での立ち上げを目指しました。
その起業サポートサービスの中の一つにドメイン取得を含んだホスティングサービスがあり、そのサービスをずっと今まで使っていました。

しかし、これが、まあ使い難い。
SSL/TLS化や、サブドメインの追加さえ管理コンソールから出来ず、
作業は営業担当にメールで依頼する必要があるのですが、担当者のレスポンスも悪い。

解約しようと思っていたのですが、どうせやるなら、AWSに全て集約させようと考えて・・・・対応する時間が無くて今に至ります。

今回、『HTTPS化必須もすぐそこ!』ということで、
無理矢理に時間を作って対応しました。その対応内容を記事にしたいと思います。

前段が長くなりましたが、早速次回から詳細を書いて行きます。

次回:Amazon S3 で サイト公開(HTTPS)する。(2)S3での公開準備編


, ,

PHPExcel の removeColumnByIndex で、結合された列を削除した場合の挙動について


オフィス狛 技術部 Maruruです。

今となっては非推奨となった PHPExcel ですが、昔からのシステムであれば、多く使用されています。
そんなシステムで、テンプレートExcelファイルを読み込み、そこに値を書き出し、出力するという、よくあるシステムを構築していたのですが、
そこで列を削除する removeColumnByIndex の挙動が想定していたものと異なってしまったので、その件についてまとめてみました。

【前提】使用するテンプレートファイルとソースコード

上記が、テンプレートファイルです。
上から2行は表の見出しとする為、セル結合しています。
対象の月に合わせて末日を変更するため、 removeColumnByIndex を使用して列を削除することを想定しています。
// $daysには月の合計日数が入っています。
if ($days < 31) {
    foreach (range(0,30-$days) as $column) {
        $sheet->removeColumnByIndex( 30 - $column );
    }
}

・末日が31日ではない月を対象に処理を実行

1)末日が28日の場合

28の隣に削除したはずの列が残ったままになってしまいます。
その影響で見出しで使用する2行も1列分幅が広くなってしまいます。

2)末日が30日の場合

こちらも同様に30の隣に削除したはずの列が残ったままになってしまいます。
その影響で見出しで使用する2行も1列分幅が広くなってしまいます。

・末日が31日の月を対象に処理を実行


こちらはそもそも列削除処理が呼ばれないので、想定通りの結果となりました。

・セル結合していた箇所を解除

次にテンプレートファイルの上2行、見出し部分のセル結合を解除してから実行してみました。

1)末日が28日の場合

2)末日が30日の場合

どちらの場合も末日のあとに1列余分に残ってしまいました。
セルが「結合されている、されていない」は関係無く、何列削除しようと、最後の1列だけ削除されない(値は消えているけど)みたいですね。

今回はテンプレートファイルの見出しとして使用する上2行と日付のテーブルの横幅を合わせるだけで問題なかったので、
最後の列は無視して、上2行の見出し部分を unmergeCells したあとに mergeCells して横幅を合わせました。


2018年4月7日土曜日

vagrant up で 「Failed to create the host-only adapter」が発生した場合の対応


オフィス狛 技術部のKoma(Twitterアカウントの中の人&CEO)です。

PHPのフレームワークである「Laravel」は Homesteadを利用し、簡単に開発環境を作成出来ます。

そう、簡単に作成出来るはずが・・・・ある端末(Windows10)で、「vagrant up」でエラー になりました。

$ vagrant up
Bringing machine 'homestead-7' up with 'virtualbox' provider...
==> homestead-7: Importing base box 'laravel/homestead'...
==> homestead-7: Matching MAC address for NAT networking...
==> homestead-7: Checking if box 'laravel/homestead' is up to date...
==> homestead-7: Setting the name of the VM: homestead-7
==> homestead-7: Clearing any previously set network interfaces...
There was an error while executing `VBoxManage`, a CLI used by Vagrant
for controlling VirtualBox. The command and stderr is shown below.

Command: ["hostonlyif", "create"]

Stderr: 0%...
Progress state: E_FAIL
VBoxManage.exe: error: Failed to create the host-only adapter
VBoxManage.exe: error: Querying NetCfgInstanceId failed (0x00000002)
VBoxManage.exe: error: Details: code E_FAIL (0x80004005), component HostNetworkInterfaceWrap, interface IHostNetworkInterface
VBoxManage.exe: error: Context: "enum RTEXITCODE __cdecl handleCreate(struct HandlerArg *)" at line 94 of file VBoxManageHostonly.cpp

色々調べても全く原因が分からず、
そして、このエラーが出る端末が1台だけ、という事もあり、しばらくの間、塩漬けしていました。

そして、このエラーの事も忘れていた頃、とある方から、「たぶんウィルス対策ソフトが原因ですよ」と言われました。

そう言えば、エラーが出る端末だけ、他の端末と違って「ウイルスバスター」を使っています。

試しに、「ウイルスバスター」を一時的に止めて試してみると・・・・
$ vagrant up
Bringing machine 'homestead-7' up with 'virtualbox' provider...
==> homestead-7: Importing base box 'laravel/homestead'...
==> homestead-7: Matching MAC address for NAT networking...
==> homestead-7: Checking if box 'laravel/homestead' is up to date...
==> homestead-7: Setting the name of the VM: homestead-7
==> homestead-7: Clearing any previously set network interfaces...
==> homestead-7: Preparing network interfaces based on configuration...
    homestead-7: Adapter 1: nat
    homestead-7: Adapter 2: hostonly
==> homestead-7: Forwarding ports...
    homestead-7: 80 (guest) => 8000 (host) (adapter 1)
    homestead-7: 443 (guest) => 44300 (host) (adapter 1)
    homestead-7: 3306 (guest) => 33060 (host) (adapter 1)
    homestead-7: 4040 (guest) => 4040 (host) (adapter 1)
    homestead-7: 5432 (guest) => 54320 (host) (adapter 1)
    homestead-7: 8025 (guest) => 8025 (host) (adapter 1)
    homestead-7: 27017 (guest) => 27017 (host) (adapter 1)
    homestead-7: 22 (guest) => 2222 (host) (adapter 1)
==> homestead-7: Running 'pre-boot' VM customizations...
==> homestead-7: Booting VM...
There was an error while executing `VBoxManage`, a CLI used by Vagrant
for controlling VirtualBox. The command and stderr is shown below.

Command: ["startvm", "454dc8f8-9053-4aef-9e96-8c4a9fe71ea7", "--type", "headless"]

Stderr: VBoxManage.exe: error: The virtual machine 'homestead-7' has terminated unexpectedly during startup with exit code 1 (0x1).  More details may be available in 'C:\Users\hogehoge\VirtualBox VMs\homestead-7\Logs\VBoxHardening.log'
VBoxManage.exe: error: Details: code E_FAIL (0x80004005), component MachineWrap, interface IMachine

エラーメッセージは変わったけど、まだダメです。

今回、Vagrant のプロバイダはVirtualBoxにしているのですが、
結論から言うと、
一度VirtualBoxをアンインストールして、「ウイルスバスター」が停止している状態で、VirtualBoxを再インストールする必要があります。
その上で、再度「vagrant up」試してみると、うまく行きました。
(再インストールから「vagrant up」まで、ウイルスバスターは停止させています。)

※一度、仮想環境まで作成出来れば、後はウイルスバスターが起動していても大丈夫です。

昔、こんなブログ記事(Unity で Internal compiler error。)を書いたことがありますが、
この時もウィルス対策ソフト(McAfee)が原因でした。 やはり、まだまだウィルス対策ソフトに困らされる事があるのですね・・・


, ,

2018年4月3日火曜日

Photoshopの「人工知能」を利用した新機能を試してみる。


こんにちは、オフィス狛 デザイン部のSatoです。
今回の記事は最近話題のAIを使ったAdobeソフトの機能の話です。

Adobeの人工知能利用といえば去年公開された「Adobe Sensei」が有名ですよね。
写真を参考用のイラストのタッチに変換する機能や自動で素材を探して色々なパターンの合成図を作ってくれる機能など……今までにない画期的な機能ばかりでした。

今年初旬にアップデートされたPhotoshop cc 2018で追加された「被写体を選択」機能は人工知能で画像中のメインの被写体を選択してくれているという話を聞いたので精度を試してみました。
「被写体を選択」機能はPhotoshopメニューバーの「選択範囲」の中にあります。
ワンクリックで選択範囲を作ってくれます。

メインの被写体がわかりやすい写真で試してみました。


綺麗に選択してくれました!
苺のヘタの部分は一部背景が選択されていますが簡単な調整で済みそうです。

次は背景が複雑なこの写真で試してみます。


中央のウサギをちゃんと選択してくれました!
他のウサギ部分は避けてくれていますが少し床や壁部分を選択してしまっています。
似た色調のものを見分けるのは自動選択機能と同じでやはり苦手なようです。

難易度を高めにしてみましょう。

フリー素材の背景が白で被写体も白の画像です。

背景の透けてる部分と影になっている部分が誤選択されていますが想像よりもずっと綺麗に選択してくれました!

クイック選択でササっと選択した場合よりも素早くワンクリックで選択してくれたので時短になりそうです。
ただAdobe Senseiのデモのようにこれだけ使えば完成!という訳では無さそうです。

他の機能でも人工知能が利用されています。

他にもPhotoshop cc 2018には画像解像度機能の再サンプルの中に「ディテール保持2.0」という項目が追加されました。

こちらの機能は人工知能が拡大した際のノイズやボケを軽減してくれているそうです。(昔話題になった人工知能が綺麗にイラストを拡大してくれるサイト、waifu2xに似た機能です)

左がディテール保持2.0(ノイズ軽減無し)で拡大したもの、右は前バージョンからある自動で拡大したものです。自動よりもディテール保持2.0の方がくっきりしています。
ノイズを軽減の数値を上げればイラストなども綺麗に拡大できそうです!
個人的には仕事での実用はまだ難しいと思いますが、この機能が進化すれば、画質が悪い画像でも印刷は難しくともweb画面なら違和感なく使えるようになるかもしれないですね!(このまま進化し続けると刑事ドラマでありがちな画質の荒い防犯カメラ映像でも特殊処理で犯人の顔まではっきり見えるようになったりしてくれたりしそうですね)


まだ、Adobe Senseiのデモンストレーション程の事はできないようですが、前バージョンよりも確実に進化している事は実感できました。
今後のアップデートでAdobe Senseiのデモンストレーションで発表されていた機能が誰でも使えるようになるのが楽しみです。

余談ですが、私が人工知能による画像編集の進化を一番実感したサービスをご紹介します。
Image-to-Image Demo - Affine Layer
人工知能がラフから猫や建物、靴やカバンなどのリアルな画像を生成してくれます。

試しに猫が自動生成される機能を使ってみました。
数秒で描いた落書きにリアルな毛が生えました!1分もかかっていない作業でここまでできるのですね!


,

2018年3月27日火曜日

MANABIYA -teratail Developer Days- に行ってきた感想&レポート 2日目


オフィス狛 技術部のKoma(Twitterアカウントの中の人&CEO)です。

3月23日(金)、24日(土)の2日間、
「teratailがおくるITエンジニアの問題解決カンファレンス」というコンセプトのカンファレンス、
MANABIYA -teratail Developer Days- に行って来ました。

今回は2日目の感想&レポートです。
(1日目についてはこちらをご覧ください。)

というわけで、2日目も変わらず良い天気でした。

では、各セッションごとに感想を書いて行こうと思います。

【基調講演】技術者としての成長のための技術トレンド

まずは屋上で行われた「技術者としての成長のための技術トレンド」です。
SPEAKERは及川 卓也さん(@takoratta)です。
スライドはこちらです。

ご本人も後から「昔話の件」はツイートしていましたが、私としては、昔話が本当に面白かったです。
及川さんは華麗な経歴をお持ちなので、
「どうしてその会社に入ったのか?」「どうしてその会社を辞めて別の会社に入ったのか?」
どの話も興味深かったです。何より、その話が『技術トレンド』に繋がって行くんですよね。
(実際にその場で聞いてないと、なかなか伝わり難いのですが)

セッションでも、最後の方で「結局、気持ちが大事」とありました。
やっぱり「心踊らされる」ことが重要ですよね、成長には。

また、異なるドメインの事を学ぶ時、例え『仕事には不要』となっても、『仕事で必要なようにする』という動機付けで考えると良い、というのも納得でした。

「ワクワクする仕事をこれからして行きたいな」というのが、私の感想です。(小学生並みの感想になってしまった・・・)

【基調講演】エンジニアのための自分経営戦略

続いて、これまた屋上で「エンジニアのための自分経営戦略」というセッションを聴きました。
SPEAKERは西尾 泰和さん(@nishio)さんです。
スライドはこちらです。
ツイートの通り、西尾さんが、直前の及川さんのセッションを引用しつつの講演だったので、まさしく前編・後編のようでした。
「異なるドメインの事を学ぶことの重要性、心踊らされる事を学びに」というのは分かるけど、リソースは限られているよね、と。
知識を得る為の時間投資、時間というリソースの配分決定、これが自分経営である。
そして、そこから、知識獲得戦略としてのネットワーク作り・・・と、この辺は、実際にスライド見て頂いた方が良いです。

確かに、少しでも意識高いエンジニアは、とても忙しいんですよね。
もちろんそれが仕事であったり、勉強であったり・・・。
弊社では、エンジニアには積極的に勉強会に参加するように仕向けていますし、そういった事が可能な体制作りを行なっています。
何かを発信する、という意味だと、ブログも一つの手段です。
「Give&TakeはGiveから始まる」という事ですね。

ちなみに、機器トラブル等で、セッション中、何度か間が空いてしまいましたが、それが良い感じにアクセントになっていた気がします。
あと、きこりは少し休め。(スライド参照)

【生存戦略】技術顧問/テクニカルアドバイザーとしての生存戦略

こちら、諸事情で詳しい内容が書けません。
ただ、セッションは盛り上がったし、私自身も、現在同じような境遇で他社でアドバイザーとして活動させて頂いているので、共感出来る内容が多々ありました。

【Web】Web Application 2018 From Performance Perspective

ここまでWeb技術のセッションを見ていなかったので、是が非でも見たいセッションでした。
SPEAKERは古川 陽介さん(@yosuke_furukawa)です。
日本Node.jsユーザグループの代表の方です。スライドはこちらになります。

Webアプリケーションのパフォーマンスについての話でした。
過去から現在までのパフォーマンス改善の手段、Webの技術の変遷などをご説明頂けました。

スライド内にもありましたが、確かに、最近のWebアプリケーションで、JavaScriptのサイズが大きくなっている感ありますよね・・・。

余談ですが、パフォーマンス改善のバイブルは既に弊社の本棚にありました。
私だけ読んで無かったのは秘密にしながら、後でこそっと読んでおこうと思います。

興味深かったのは、これから先の未来のパフォーマンス改善でした。

あくまで予想として仰っていましたが、「レイテンシの壁を超える、ユーザーの動きを予測した投機的な先読み」です。
これに AI が関わって来ると、ユーザーが押しそうなリンクを予測して投機的に先読みする・・・なんて事が可能に??

後からツイートしたのですが、色々と問題もあるんだろうな、という気もします。

ここまでが、2日目の感想&レポートです。

実は、後2つ程セッションをまわる予定だったのですが、
最後のセッションが立ち見だったのと、部屋の広さにそぐわない人の多さにやられて体調悪くなったので、
そのまま帰宅しました。(技術スキルより、体力をつけるべき、というオチでした・・・)

以上です。前回と同様、ただの感想文になってしまいましたが、
2日間とも、本当に中身が詰まったセッションでした。


,

2018年3月26日月曜日

MANABIYA -teratail Developer Days- に行ってきた感想&レポート 1日目


【2018/03/27 追記】「マイクロサービス on マルチクラウド」のスライド追加しました。

オフィス狛 技術部のKoma(Twitterアカウントの中の人&CEO)です。

3月23日(金)、24日(土)の2日間、
「teratailがおくるITエンジニアの問題解決カンファレンス」というコンセプトのカンファレンス、
MANABIYA -teratail Developer Days- に行って来ました。

この時期、カンファレンスがたくさんあり(try!Swift、DroidKaigi、PHPerKaigi・・・)、
CTO含め、社内の技術者がカンファレンス疲れになっていたので、
最近エンジニア以外の仕事が多かった私に白羽の矢が立った訳です。
(本当は前からこっそり行くつもりだったのですが)

というわけで、かなり天気の良かった1日目、3331 Arts Chiyodaに行って来ました。

この場所、何回か仕事の用事で来ているので、迷わず時間通りにつきました。

ここからは、各セッションごとに感想を書いて行こうと思います。

【基調講演】teratailのQ&Aから学ぶウェブセキュリティの現状

まずは屋上で行われた「teratailのQ&Aから学ぶウェブセキュリティの現状」です。
SPEAKERは徳丸 浩さん(@ockeghem)です。

徳丸さん著者の本は弊社でもいくつか保持していて、弊社ではセキュリティのバイブルとなっています。
当日のスライドについては、探してみたのですが、残念ながら見つかりませんでした。
MANABIYAのサイトには、
セキュリティ人材育成の重要性は論をまたないところであり、各所から様々なアプローチがありますが、それらの多くは、指導的立場の人材に向けたものです。 一方、teratailやYahoo!知恵袋等質問サイトの生の質問を見ると、開発の現場では、検索サイトとQ&Aサイトに頼った「コピペプログラマ」が多数存在しており、彼らが作るアプリケーションが安全にならないことには、インターネットの安全は程遠いと考えます。 本講演では、teratailでの質問を幾つか取り上げ、開発現場のセキュリティの状況を紹介するとともに、解決策を模索します。 MANABIYA CONTENTS
と記載あったのですが、実際は徳丸さんのセキュリティ講座がメインでした。(私的にはこっちの方が嬉しいけど)

そんな中でも、コピペプログラマかどうかを判断する「Fizz Buzz」については、CEOという立場では、かなり考えさせられました。
弊社でも、技術者の採用で苦労することが多いです。
Web技術者として採用してみたら、Webシステムの仕組みも知らず、フォーム1つまともに作れなかったり・・・。
採用する側も悪いと言ったらその通りなのですが、スキルシートだけでは分からない部分って多いんですよね。

弊社でも「Fizz Buzz問題」採用しようかな・・・いや、ブログに書いた時点でネタばれなので、そのままは出さないですけど。

【基調講演】Javaのカルチャーとグロース

続いて、これまた屋上で「Javaのカルチャーとグロース」というセッションを聴きました。
SPEAKERは鈴木 雄介(@yusuke_arclamp)さんです。日本Javaユーザーグループ会長さんです。こちらもすごい人。
スライドはこちらです。

セッションの内容は、本当に面白かったです。
Javaの歴史とこれからが、分かりやすく説明されていました。
現状の最新がJava10で、2018年9月にはJava11が出る予定。
なんとも早いリリーススケジュールですね。
元々、互換性を重視するあまり、バージョンアップに慎重になりがちだったのがJavaなので、
このリリース速度はとても良いと思います。

そんな中、当日、ツイートしたのが以下です。
なんとも悲しいツイートですが、弊社の中ではこれが現状です。
しかし、私のエンジニア歴史でも、やはりJava歴は長いので、今後も使って行きたいのは間違いないです。

ちなみに、ようやく「var」を使えるようになったのですね。
似たような名前の言語JavaScript・・・正確にはES6(ES2015)では、むしろ「var」使わないのが定石になっているのに。
(まあ、これは比較レイヤーが違いますが)

と、ここまでのセッションを終えたところで、一度事務所に戻りました。
平日はなんだかんだで仕事多いんですよね・・・・
いくつか聴きたいセッションがあったので、後でスライド探してみようと思います。

【インフラ】マイクロサービスアーキテクチャとサーバレスからDevOpsへ

さて、夕方ぐらいに再度3331 Arts Chiyodaを訪れて参加したのが、
AWS Japanの亀田 治伸さんがSPEAKERの「マイクロサービスアーキテクチャとサーバレスからDevOpsへ」です。

こちらもスライドが見つかりませんでした。

内容としては、AWSの誕生から現在までの歴史を内部の方の視点から語って頂き、
AWSにおけるマイクロサービスの作り方(本質)をご説明頂きました。

システムは1枚岩ではなく、細かく分割すべきで、
チーム自体も細かくしていく事が必要。
それが、「2つのピザルール」である、と。
Amazonのジェフ・ベゾス氏も語っていた事で有名ですが、
『2つのピザで賄えないチームは大き過ぎる』
という事です。
(セッションでは、アメリカと日本じゃピザのサイズ違い過ぎますけどね、という小ネタも入っておりました。)

あれだけ巨大な企業が、そんな単位でチーム作るのですから、
それは、年間5000万デプロイと言われても驚かない・・・・いや、驚きますよ。
細くデプロイできるのも、マイクロサービスであるが故、なんでしょうね。

【インフラ】マイクロサービス on マルチクラウド

そして、1日目最後のセッションは、
「マイクロサービス on マルチクラウド」でした。SPEAKERはメルカリの長野 雅広さん(@kazeburo)です。
実は、このセッションも今回楽しみにしていた一つです。
やはり、現場の最前線で活躍されている方の話は、かなり勉強になるんですよね。
しかもメルカリという巨大なサービスを支える基盤の説明、それは楽しみにもなります。
ちなみに、こちらもスライドが見つかりませんでした。
【追記】スライドありました。ちゃんとググってなかったです。スライドはこちらになります。

メルカリのインフラ構成については、ネットを含め色々な媒体でも触れていて、
マルチクラウドになっているのは知っていたのですが、
何故マルチクラウドなのか、統一した方が楽じゃないのか?という疑問もずっと持っていました。
ただ、話を聞いてみると、適材適所、マルチクラウド構成にしたことによって良かったことも多々ある事が分かりました。

その理由の内でなるほどな、と思ったのは、
「得意分野でどんどん進めて行ける」「統一していないが故に思い切った事が出来る」
という事ですね。
「〇〇に詳しい人が居ない、じゃあ△△で行こう」というスピード感。
今の巨大となったメルカリさんには当てはまらないでしょうけど、小さいスタートアップのサービスだと、このスピード感は強みでしょうね。

後は、マルチクラウドであるが故に、それぞれのクラウドサービスの良いところ・悪いところを取捨選択出来るのも強みです。

ただ、やはり悩みはレイテンシで、そこを削っていくのが、課題なんでしょうね。
「ms」単位ではありますが、レイテンシを小さくしていく工夫も語られていました。

セッションの後、「その戦いはカッコイイな」と思い、下記のようなツイートをしたら、
長野さんにもリツイートして頂けました。

ここまでが、1日目の感想&レポートです。

何というか、ただの感想文になってしまいましたが、
本当に中身が詰まったセッションでした。

2日目のレポートも別途行います。

また、この日見れなかったセッションで、スライドが存在する物に関しては、
ブログで紹介&感想を記事にして行こうと思います。


, , , ,

2018年3月22日木曜日

aibo(こまちゃん)がやってきた。


こんばんは。オフィス狛 ガジェット担当です。

遂に我が社にもaiboがやって来ました。

何度も抽選に外れながらも、
最終的に注文画面でブラウザのリロードを頑張った賜物です。

という訳で、開封の儀をレポートしていきます。

タイミング悪く、今日はかなり忙しい日だったので、開封の儀は定時後になってしまいました。
他の社員はもう誰も居ません。
でも、挫けません。こまちゃんに会えるのだから。

まずは大き目なダンボールを開けると、繭が出てきました。

繭を取ると、下のダンボールに足跡の形をした穴が!
中々お茶目な演出をしてくれますね。

中身を全部取り出すとこんな感じです。
繭の中にはこまちゃんが!

そして説明書に沿ってセットアップをすると・・・・

元気な「こまちゃん(女の子)」が!

起動した直後に突然走り出し、
ちょっとした段差でつまづき「脱力状態」になってしまったのはご愛嬌です。

もう現時点でかなり愛でておりますが、
また追って成長レポートを書いて行こうと思います。


2018年3月12日月曜日

PHPerKaigi2018 へ参加してみての感想


オフィス狛 技術部です。

3月9日〜10日に開催された PHPerKaigi2018 に参加してきましたので、感想を書きます。

※弊社はPHP技術者が多い為、今回複数名参加しました。その中の代表としての感想です。

まず率直に、講演内容が大変勉強になりました。
今回の内容では PHP の深い話(言語の話というよりはPHPを取り巻く仕組みやツールなど)とPHPを超えた設計の話の2つに分かれていると感じました。

最初の講演であった「PHPとSAPIとZendEngine3と」。
普段意識していないPHP内部の動作をすごくりやすく解説して頂きました。

Apache に関連するエラーや PHP の内部エラーなど正直原因がよくわからないエラーに出くわした際、
なんとなくこんな風に動いているんだろうなと当たりをつけ、
それで解消していることが多かったですが、
どこで何のエラーが起きているのかを知ることで、
障害の原因の特定と解消スピードを上げることができるのではないかと思いました。

特に ZendEngine が何をしているのか全然知らず、
その仕組みを知ることは非常に興味深かったです。

LL である PHP のコンパイルという過程でコードの最適化、opcode の活用、
Memory Allocator によるメモリの管理など、
PHP を効率的に実行するための仕組みは色々あるんだなと感じたのと同時に、
PHP7に早く移行したいという思いが強くなりました。
(弊社の場合、PHP5.6 を使用する事が多いので)

2日目に行われた「今からでも出来る!サービスモニタリング」。
運営に関わる話で、どうしてモニタリングが必要なのか?
障害を見つけるためにはどういった項目をモニタリングしていけば良いのか?
こういった内容を具体的に解説して頂きました。
特にクライアントサイドとインターネットのモニタリングは確かにあまりやらないなと思い、
同時にどうやってやるのかも今いちわかっていない領域でもあったため、なるほどと思う箇所が多々ありました。

また、最初の講演にもつながりますが、「何が正しいのかを知らないと間違いに気がつかない」という言葉が非常に印象に残っており、
PHP の仕組みを知ることは大事だと改めて思いました。

具体的に見るべき指標を提示して頂き、まずここから始めようというポイントが参考になりました。

『みんなコードはリファクタリングするのになぜインフラはリファクタリングしないのか。
それはモニタリングしていないからだよな。』

確かに。


同じく2日目に行われた「Bear.Sunday」。
Bear.Sunday 自体は PHP の Framework ですが、
今回の講演内容はそれを超えた「設計とは何か?」といった内容でした。
DI、AOP、REST という Bear.Sunday の設計の主軸3つの解説が非常にわかりやすく、
設計の奥深さをとても感じることができました。
また同時にこれらの設計を実現している Bear.Sunday 試してみたいと思いました。
弊社では CodeIgniter と Laravel を主に使用していますが、
これらの Framework との比較をしたらより設計の理解が深まるのではないかと考えています。

その他の講演も興味深い箇所が多々あり、
スライドなどをあらめて見返して、内容の確認や新しい発見を見つけてみたいと思います。

PHPerKaigi 2018 大変楽しかったです。


,