デベロッパーによるパッケージングまで助けるChefのHabitatツールにSaaS版Habitat Builderが登場

Chefは、企業がオンプレミスやクラウドインフラの環境でデプロイを自動化しようとするときの、長年の定番的ツールだった。しかし一年前に同社がローンチしたHabitatは、もっとアプリケーション寄りのサービスで、多様なプラットホーム上へデプロイしなければならないコードを、そのためにパッケージしてくれる。今、多様なプラットホームといえば、典型的にはコンテナ、VM、Mesosphere、Cloud Foundryなどだ。

今日(米国時間10/9)同社は、アプリケーションの構築とデプロイをさらに容易にする新たなサービスHabitat Builderをローンチした。Habitatは無料のコマンドラインツールだが、Habitat BuilderはいわばHabitatのグラフィカルなSaaSバージョンだ。

Chefのチームによると、クラウドネイティブなプラットホームというデベロッパー中心型の世界へ移行するための橋を、エンタープライズに提供することがHabitatやHabitat Builderのねらいだ。彼らは既存のコードをそのまま、HabitatやHabitat Builderを使って、自分たちが選んだプラットホームへデプロイできる。アプリケーションを、オンプレミスからクラウドへ移行させたいと考えている企業にとっては、きわめて便利なサービスだ。クラウドやハイブリッドのデプロイが、とても容易にできるからだ。またデベロッパーは、Builderを使ってアプリケーションを自動的に直接、Docker Hubのレジストリへパブリッシュできる。

Habitat Builderはビルドサービスと関連部位(ライブラリなど)の保存サービスを提供し、パッケージされたアプリケーションと、それらに必要なデプロイアーキテクチャを保存するパブリックとプライベートのリポジトリーもそこに伴う。またランタイムのライフサイクルや構成のアップデートなどを管理するHabitat Supervisorがサポートされる。

Chefのマーケティング担当VC Marc Holmesはこう語る: “コンテナを始めるための優れたツールはすでにいろいろあるが、従来型やクラウドネイティブなど複数のアーキテクチャにわたってアプリケーションをパッケージしデプロイすることがが、往々にしてチームにとっては必要だ。Habitati Builderを使えばデベロッパーはアプリケーションを、整合性を損なわずにパッケージでき、またオペレーションは、適切なデプロイターゲットを選択できる。devもopsも、自分の領分をわきまえたうえで、緊密な協働ができるようになる”。

[原文へ]
(翻訳:iwatani(a.k.a. hiwa))

サーバーレスで複雑なコンテナアプリケーションを開発デプロイできるPlatform9のFission Workflowsサービス

企業ITのクラウド化をいろんな面からサポートするPlatform9の新製品Fission Workflowsには、あなたのお好きなバズワードがすべて揃っている。Kubernetes、Dockerのコンテナ、そしてサーバーレスコンピューティング。しかもそれは、これらの技術の、必然的な次のステップのようだ。

Platform9のプロダクトとしてのFission自体は、コンテナオーケストレーションサービスKubernetesの上で動くオープンソースのサーバーレスコンピューティングプラットホームだ。サーバーレスアプリケーションは、その初期のころはもっぱら、何かのイベント(“ファイルがアップロードされた”など)にトリガされる小さなファンクションを作ることだった。しかしFission Workflowsの提供意図は、もっと複雑なサーバーレスアプリケーションの開発を支援することだ。

Workflowsは、サーバーレスのファンクション〔複数形〕のオーケストレーションを助ける。サーバーレスアプリケーションが複雑になればなるほど、使用するファンクションも多くなり、それらお互いに依存関係のあるファンクションの管理やアップデートが難しくなる。同時にまた、アプリケーションのモニタリングやトラブルシューティングも難しい。

Platform9のソフトウェアエンジニアでFissionを作ったSoam Vasaniによると、Fissionは、デベロッパーがKubernetesをもっと楽に使えるようにしたい、という願いから生まれた。 “Fissionがないころは、うちの顧客たちはKubernetesを使いこなせるまでに数週間もかかることが多かった”、と彼は語る。しかし今では、彼らは一時間ぐらいで彼らの最初のFissionのファンクションを動かせるようになる。そして、Fission Workflowは次の問題に取り組む: サーバーレスのアプリケーションがシンプルなファンクションから本格的なアプリケーションに成長するとき、何が起きるのか。

Fission WorkflowsはKubernetesの上で動くので、どんなクラウドでも、プライベートなデータセンターでも、あるいはデベロッパーのラップトップ上でローカルにも、動かせる。デベロッパーは自分のアプリケーションをPython, NodeJs, Go, C#, PHPなどで書く。

しかしFission Workflowsには、Microsoft Flowのようなドラッグ&ドロップのインタフェイスがない。今のところデベロッパーは自分たちのワークフローを手書きしなければならないが、Platform9のCEOで協同ファウンダーのSirish Raghuramによると、そのうちWorkflows用のビジュアルエディターを作るそうだ。ただし、現在すでに、ワークフローを視覚化するツールはある。

Fission本体と同様に、Workflowsも完全なオープンソースにする予定だ。Raghuramによると、同社のビジネスプランは、そのオープンソースのフレームワークを顧客にサービスとして提供するときに課金することだ。今すでにKubernetesとOpenStackに関してはその方式だが、Fissionもいずれそのポートフォリオに加わるだろう。ソフトウェアそのものは今後もずっとオープンソースで、オープンコアやフリーミアムモデルに移行するつもりは、まったくない。

[原文へ]
(翻訳:iwatani(a.k.a. hiwa))

Mozillaのオープンソース助成制度MOSSは今期の交付額総計が50万ドルを突破

Mozillaは、同団体のオープンソース助成金制度Mozilla Open Source Support(MOSS)の今期(4-9月)の交付総額が53万9000ドルだった、と発表した。この助成金の対象は主に小さなプロジェクトだが、今回はとくに安全とセキュリティをメインテーマとした。

最高額19万4000ドルを交付されたUshahidiは、助けを求めている人が必要としている情報を、素早く集めて散布する。災害で道路が交通不能になっている人たちや、抗議活動で催涙ガスなど警察の攻撃に遭っている人たち、選挙で特定候補への投票を脅されている人たちなどだ。

10万ドルを交付されたRiseUpは、活動家たちのための安全な通信ツールを提供する。クロスブラウザーな(ブラウザーの種類を問わない)フォーマットWebAssemblyの一環としてJavaScriptのモジュールをロードするローダーWebpackが、12万5000ドルを受け取った。HTML5によるゲームエンジンPhaserが5万ドル、HTTPSのデプロイを容易にするシステムの一部であるmod_mdが、7万ドルを交付された。

次期のMOSSは、特定の地域、最初はインドを対象とする。すなわち次回も対象は複数の比較的小さなプロジェクトだが、インド関連がメインになる。

[原文へ]
(翻訳:iwatani(a.k.a. hiwa))

ReactantはiOSアプリのための新しいネイティブフレームワーク

Xcodeに戻ってもいいかなと考えている開発者たちのために、Brightifyという名のチェコの小さなチームが、iOSアプリの開発を容易にするReactantという名のフレームワークを開発した。これは、コードのライブリロードを提供するSwiftベースのフレームワークで、プログラムしながらエレメントを素早く追加することができる。

「Reactantアーキテクチャは、iOSプロジェクトをどのように構築するかを隅々まで決定します。テスト可能で再利用可能なコードを書くことを可能にしますし、きわめてスケーラブルなものです。このことは、小さなアプリの開発速度を低下させるような定型部分がない一方、アプリが成長して行くときにもそのまま使い続けることができることを意味します」と語るのはTadeas Krizだ。チームはフレームワークをGithubで公開し、少数の友人たちや家族と一緒にシステムを拡張してきた。

「アーキテクチャは既に利用可能で、私たちの作る全てのアプリケーションで用いられています。これはクライアント向けの私たちの開発と並行して開発されてきたもので、このことで、フレームワークが私たちの全ての要求を満たしていることを、公開する前に確かめることができました。そしてこの部分は現在オープンソースとして、公開されています」。

彼らはまた、アプリのレイアウトをより簡単に行なうためのUIエディタも開発している。こちらの公開は12月の予定だ。

「主要な利点は、iOS開発者なら誰でもReactantを直ちに使い始めることができるということです。なぜなら、すべてネイティブのSwiftで記述されているからです。Swiftの強力な型システムによって、開発者たちはコンパイルの時点で多くの安全性を確保することが可能になります」。

Krizと共同創業者のMichael Chlubnaは、Reactantを彼ら自身の開発に対する解決策として開発した。チームはまた、モバイルアプリ開発会社のBrightifyも運営している。このツールを利用することで、大量のコーディングを行うことなくSwiftでのアプリケーション開発をより簡単に行なうことができるようになる。アプリケーションはネイティブのiOSコードにコンパイルされるので、React Nativeのようなハイブリッドフレームワークを利用するときのような非互換性は存在しない。彼らはまた極めて充実したドキュメントを用意しているので、Reactantを選んでプログラミングを始めるための敷居は低い。

私はサンフランシスコで開催されたDisruptでチームと実際に会った。プラットホームは良く構築されており、私のような初心者には間違いなくエキサイティングな内容だった。次のプログラミングプロジェクトのために検討をする価値はあるだろう。

[ 原文へ ]
(翻訳:Sako)

ReactとJavaScriptで仕事をしているデベロッパーがアプリに容易にAR効果を導入できるViro Media

ARやVRも、ゲームを作るならUnityやEpic Gamesなどに最高のツールがある。でもそれらは、ゲームのデベロッパー以外の人にとっては、ちょっと近寄りがたい。そこでViro Mediaは、Webやモバイルのデベロッパーに、ゲーム以外のAR/VRアプリを簡単に作れる方法を提供する。

Viroは、ふだんJavaScriptとReactを使ってお仕事をしているデベロッパーを、拡張現実の楽しさに近づける。そしてiOS 11のARKitを完全にサポートしているので、ARによる自撮りフィルターとか、Magic Portalsのようなアプリを容易に作らせてくれる。

同社のVR志向については、今年の3月にSoftbank NYやLowercase Capital, Betaworksなどから250万ドルを調達したときに本誌も取り上げた。そして今回はARKitをサポートし、近くGoogleのARCoreもサポートするそうだから、ARという新しい技術に向けて最適化されている非常に多くのデバイスにアクセスできることになる。VRのヘッドセットはまだそれほど多くないけど、ARKitは世界中で5億台もあるAppleのデバイスをサポートしている。

同社のサンプルアプリFigment ARを見ると、このプラットホームの実力を理解できる。デベロッパーは彼らの新旧のアプリに簡単にいろいろなイフェクトを導入できる。しかも遊びやゲームだけでなく、Viroはエンタープライズの顧客向けにも最適化されている。

これまでのAR体験は、相当小細工的なものが多かったが、WebとモバイルをサポートするViro Mediaを使えば、既存のアプリにAR機能を容易に付加できる。そしてデベロッパーたちは、すぐにでも実験を始められる。

ViroのARプラットホームは、無料で今から利用できる。ここで、ユーザー登録をしよう。

[原文へ]
(翻訳:iwatani(a.k.a. hiwa))

Apache Flinkの商用化企業Data ArtisansがFlinkアプリケーションのためのApplication Managerを発表

オープンソースの分散ストリームプロセッサーApache Flinkの商用部門Data Artisansが、ストリーミングアプリケーションを管理するための新しいツールを含む、このプラットホームの商用バージョンの、アーリーアクセスリリースを発表した。

Data ArtisansのCEO Kostas Tzoumasによると、リアルタイムでストリーミングを行うプロダクトを管理するアプリケーションは、それを自分で作ろうとする顧客にいくつかの難題をつきつけるので、同社のApplication Managerはその難題を解決するために設計されている。

Netflix, Alibaba, INGなど大手のFlinkユーザーには、そのようなツールを自作して大量のストリーミングアクティビティを管理しモニタする能力があるが、平均的な企業にはそんな贅沢ができない、とTzoumasは語る。

そんな顧客が作って使っているアプリケーションは、さまざまな外部システムと対話するものが多く、しかもそれをやりながら、大量のデータを、ほぼリアルタイムで処理しなければならない。Data Artisansは、そういう処理につきまとう複雑性を軽減するために、管理の部分を担当するツールを作ったのだ、とTzoumasは説明する。

その新しいツールはFlinkを通るすべてのストリーミングアクティビティを一箇所で集中的に管理する管理コンソールを提供する。そしてストリーミングデータのデータソースやデベロッパーのワークフロー、サービスのデプロイアーキテクチャ、ロギング、メトリクスなどを一望できる。

Apache Flinkを利用しているストリーミングアプリケーションと対話するすべてのサービスを管理できるだけでなく、そのツールを使ってデベロッパーがアプリケーションの開発過程を管理できる。完成したそれらのアプリケーションは、Kubernetesのようなコンテナオーケストレーションツールを使ってローンチする。

さらに、Apache Flinkのストリームに関連するすべてのユーザーアクションの監査証跡を記録するから、デプロイ後にそのステップをさかのぼって調べることができる。

ファウンダーのTzoumasとCTOのStephen Ewenは、Apache Flinkを学生時代に作り、2014年にはその商用化を行う企業としてData Artisansを創業した。標準的なオープンソースのビジネスモデルを採用して顧客がApache Flinkをサポートできるようにし、また企業がApach Flinkによるストリーミングアプリケーションを作るときにはコンサルタントとしてそれを手伝う。しかし、そうやって企業顧客との付き合いを重ねる中で、管理ツールの不在に新たなビジネス機会を見出したのだ。

彼らの会社はベルリンにあり、これまで700万ドルを調達した。今、Apache Flinkのダウンロード回数は1か月に1万ぐらいだ。この記事で取り上げた商用バージョンは2017年の終わりから2018年の初めにかけて一般公開される。

[原文へ]
(翻訳:iwatani(a.k.a. hiwa))

Microsoft Azureにバースト的なワークロードのための新しいVMタイプが登場

Microsoftが今日(米国時間9/11)、同社のクラウドコンピューティングプラットホームAzureの、新しいタイプの仮想マシンをプレビューで発表した。この、バースト的なワークロードに適しているとされる、その名もBシリーズマシンは、今のところもっともローコストなAzureマシンで、CPUの利用度を目的に応じ選べる(下表)。Webサーバーや小規模なデータベース、開発/試験環境などのワークロードに向いているだろう。

このBシリーズのマシンは、バーストできるパフォーマンスを提供するという意味でAWSのT2インスタンスに似ており、仮想CPUのフルパワーを必要としないときは使わないぶんをクレジットとして築ける点でも同じだ。Googleのf1-microとg1-smallのインスタンスも、ほぼ同じだ。マシンがアイドルのときクレジットを蓄えられるから、通常のVMよりも費用を節約できる可能性があり、しかも必要なときには十分なパワーを利用できる。

Microsoftが提供するこのBシリーズマシンには6つのバージョンがあり、いちばん安いのはシングルコアのVMと1GBのメモリで1時間1.2セント、そして最高は8コア32GBのマシンで1時間37.6セントだ。これらはLinuxマシンの場合の料金だが、Windowsマシンの場合は例によってやや高くなる。プレビューの間は、料金はこれらの半額である。

これらの新しいマシンタイプが提供されるのは、最初はアメリカ(West 2, East)、ヨーロッパ(West)、アジア太平洋(Southeast)のゾーンのみだ。プレビュー期間に利用してみたいデベロッパーは、クォータをリクエストする必要がある。

[原文へ]
(翻訳:iwatani(a.k.a. hiwa))

Googleが社内のドキュメンテーションスタイルガイドを公開

ドキュメンテーションは往々にして、後(あと)からの付け足しだ。オープンソースのプロジェクトではとくにそれが多い。そのため新しい人が後日そのプロジェクト参加しづらくなったり、ときにはヘタなドキュメンテーションのせいでコードがかえってわかりづらくなることもある。そこでGoogleは、デベロッパーがもっと良いドキュメンテーションを書けるために、同社のdeveloper-documentation style guide(デベロッパードキュメンテーションスタイルガイド)を今週一般公開した

これはGoogleが社内的に使っているスタイルガイドと同じもので、KubernetesやDartなどGoogle内部のプロジェクトもこれに従っている。

内容の一例を挙げると:

  • 業界用語のスペリングの統一
    (例: ○data center, ×datacenter)
  • ハイフンの正しい使い方と良くない使い方
  • 受動態でなく能動態で書くべき理由
  • …その他…

 
また、とくにデベロッパーにとって重要と思われるのは、APIのコードのコメントの書き方や、コマンドラインのシンタックスの良質なドキュメンテーション、などだ。

AtlassianWordPressSalesforceなどもスタイルガイドを公開しているが、基本的な要素を網羅している点ではGoogleがトップではないだろうか。

編者たちは、このスタイルガイドは生き物であり、今後変わるだろう、と言っている。また、たった一つの絶対に正しいスタイルガイド、というものはない、とも言っている。つまりドキュメントの書き方をめぐってMLA派とシカゴ派の口論が今後続いてもよいし、ぼくが本誌の記事を書くときに使っているAP Stylebookのファンがたくさんいても、構わないのだ。

〔訳注: 上図和訳–

できるかぎり使わないように

  • バズワードや技術的ジャーゴン
  • くだけすぎた書き方
  • “please note”や”at this time”のようなプレースホルダー的語句
  • ごたごたした長過ぎるセンテンス
  • すべてのセンテンスが同じフレーズで始まる(”You can”, “To do”など)
  • 今のポップカルチャーに言及すること
  • 顧客や競合他社/競合製品などをだしにしたジョーク

[原文へ]
(翻訳:iwatani(a.k.a. hiwa))

GoogleがモバイルWebのデベロッパー資格認定事業を開始、4時間の試験を受けるのだ

Googleが今日(米国時間9/5)、モバイルのWebデベロッパーを認定する事業Mobile Web Specialist Certification立ち上げた。デベロッパーは、これまでどうやって学習したかにかかわらず、この認定により自分にモバイルWebの開発スキルがあることを、世の中に対して示せる。この事業は、Androidデベロッパーやクラウドアーキテクト、データエンジニアなど、Googleの既存の資格認定事業の一員になる。

試験は辞書参考書など持ち込み自由で、受験料は99ドル、インドでは6500インドルピーだ。さまざまなコーディング(プログラミング)の問題があり、最後に10分間の面接がある。面接では、試験の問題に対し自分が選んだ解の根拠や理由を述べる。制限時間は4時間で、最大三回までトライできる。問題の範囲は、Webサイトのベーシックなレイアウト、スタイリング、先進的なWebアプリケーション、パフォーマンスの最適化、キャッシング、試験とデバッグなどだ。

Googleはこの試験のための学習案内を提供している。これで、受験勉強をしよう。

試験に合格したらバッジをもらえるので、それを履歴書やソーシャルメディアのプロフィールなどに表示できる(資格証明のため)。説明には、バッジはGoogle+のプロフィールでも使える、と書いてあるるが、いちいちそれを書く理由がよく分からない。もちろんこれは、いわゆるデジタルバッジではない。主な目的は、求職の際などに自分のスキルを強調するためだ。まだGoogle自身のテストを経ていない事業だから、この資格が求職の際の本人評価にどんな影響を及ぼすか、それは現時点ではまだ分からない。

[原文へ]
(翻訳:iwatani(a.k.a. hiwa))

Googleのモニタリング/ロギングサービスStackdriverがアップデートされカスタマイズと視覚化が充実

Google Cloud PlatformやAWSの上で動くアプリケーションの、モニタリングやロギング(ログ取り)、診断などのサービスを提供するGoogleのツールStackdriverが今日(米国時間8/31)アップデートされ、ロギングの機能が増えるとともに、無料のログサービスの大きさが拡張された。すなわち12月1日からは、Stackdriverのロギング機能は1プロジェクトあたり1か月に50GBまでのログを無料で提供する。50GBを超えるぶんは、1Gバイトにつき月額50セントが課金される。

このアップデートのスローガンは、ログの分析を早くし、管理を容易にし、そしてより強力にすることだ。そのためにGoogleのチームは、ログに何かが書き込まれたときと、それがStackdriverの分析結果に反映されるまでの時間を短縮した。これまでは、ログのアップデートがStackdriverのユーザーにとって可視になるまで5分以上を要していた。それが今や1分未満になったそうだ。

これまでも、5分では困るというユーザーはあまりいなかったと思うが、でも早くなって怒るユーザーはいないだろうね。

またこれからは、ログのどんな項目でもそれらの各欄をラベルにして、ログのデータを視覚化できる。しかしもっとおもしろいのは、ユーザーが排除フィルターをセットアップして、必要なデータだけをログに出力させられることだ。GoogleのプロダクトマネージャMary KoesとDeepak Tiwariが、今日の発表声明で書いている: “排除フィルターを利用してコストを下げ、無駄なログを減らしてS/N比を上げられる。特定のソースをブロックしたり、逆に特定のパターンにマッチする項目を拾うことによって、コンプライアンスにも貢献する”。

もうひとつの新機能一括エクスポート は、複数のプロジェクトのログをGCS, PubSub, BigQueryなどにエクスポートできる。これまではデベロッパーが、一つ々々手作業でエクスポートしていた。

[↓排除フィルターと排除を指定するエディター]

[原文へ]
(翻訳:iwatani(a.k.a. hiwa))

Kafkaクラスターの自動ロードバランシングツールCruise ControlをLinkedInが発表

今日(米国時間8/28)サンフランシスコで行われたKafka SummitLinkedInが、KafkaのクラスターのためのロードバランサーツールCruise Controlを発表した。

LinkedInが開発したオープンソースのメッセージストリーミングツールKafkaは、それを使えば、ネットワーク上で大量のデータをアプリケーション間でリアルタイムに送受するタスクが簡単にできる。Cruise ControlのプロジェクトをリードしたソフトウェアエンジニアJiangjie Qinによると、Kafkaは今、ほとんど必須のツールになっているので、今LinkedInには専用のサーバーが1800台、それらが…つまりKafkaが…一日に2兆あまりのトランザクションを動かしている。

これだけの量であれば当然、Kafkaのクラスターを正常に動かし続けることはユーザーの企業にとってミッションクリティカルであり、そこで今年早期にチームは、クラスターの異状を見つけるツールを作ろうとした。そしてそのツールは、既定の一連のルールに従ってクラスターを自動的に構成し、適正な数のリソースを使用し、不具合を自己修復して動き続けるようにする。そのツールが、Cruise Controlになった。

Cruise Controlを作る前には、クラスターがダウンするたびにそれを手作業で再構成しなければならず、しかもQinによると、再構成に不正があると将棋倒しのようにほかのクラスターたちに悪影響が及ぶ。若干の人間の監視のもとに、マシン自身にクラスターの管理をやらせれば、その過程が大幅に単純化され、成長するネットワークのニーズに合わせてクラスターの修復作業のスケーリング(規模拡大)も可能になり、技術者たちが手作業でやっていたときに比べると仕事は大幅に効率化される(人力では不可能なほどに)。

Qinの説明によると、それらはロードバランシングの問題に帰結する。クラスターは、他のクラスターに迷惑をかけずに、正しい数のリソースで動いているか? 彼によるとこの問題はさらに、よくある構成上の問題を見つけ、ひとつひとつのクラスターに適正な目標を適用することに帰結する。人間でなく機械なら、クラスターのニーズを素早く評価し、一連の一般的な構成および目標と比較対照し、正しいものを選ぶ。

Cruise Controlはその際、この最適化プランでよろしいか?と人間に尋ねる。

なぜそんなツールが、もっと前からなかったのか、それについてQinは、技術者の数を最近増やすまでは、そっちにリソースを回す余裕がなかった、と答えた。

クラスターの構成とリソースの使用量を機械にチェックさせる今回のソリューションが完成するまでに、約半年を要している。同社はこのツールをオープンソースでリリースし、Kafkaクラスターのロードバランシングを改善するだけでなく、そのほかの分散システムにも同じロードバランシングの原理を適用できるようにしたい、と考えている。いろんなユースケースで、便利に使えるはずだ、とQinは述べている。

[原文へ]
(翻訳:iwatani(a.k.a. hiwa))

ソフトウェアを書くことについて私が学んだ7つの教訓

それは進行中だ。ちょっとずつ、そして少しずつ、私はエンジニアからある種の…マネージャーに変身している最中だ。ああ、誤解しないで欲しい。私は今でも毎日コードを書いている。しかし気が付くと分析とディスカッション、ミーティングや電話、より高いレベルの意思決定、チームの編成、そして戦術ではなく戦略の策定に費やす時間が増えている。

もちろん、これは悪いことではない。より高いレベルの決定は、個々のクラスおよび機能の詳細よりもはるかに大きな影響を与えることが多い。チームをより生産的にすることは、自分自身をより生産的なものにするよりも、ずっと高いレバレッジ効果を持っている。しかし、私は自分がコードを書いた日々から、いくばくかの教訓を得てきたものと思いたい。個人的にはそれらが、私のマネージャー業の知恵として転換されることを望んでいる。そして、ここでそのいくつかを共有する図々しさを読者に認めて貰いたいと願う:

1. ルールはない。公案があるだけだ。

例を挙げてみよう:DRY(Don’t Repeat Yourself:同じことを繰り返すな)という奴を考える。これはソフトウェアの基本的なルールとしてとてもよく理解されているため、しばしば意思決定を正当化するために使われる:「XをしたのはDRYの原則に従ったからだ」といった具合だ。それは理に適っている筈だ。そう思うだろう?さて、同じことをするコードの断片が2つ以上あったとしよう、それは無駄だし、さらに片方を修正する必要があるときには、おそらく他の部分も修正する必要がある。そしてその修正を忘れることがあり得る。こうなると同期が崩れ奇妙なバグに遭遇し…そして…。同じことを繰り返さないようにするのは明らかなことだ。

だが、それだけではない。その規則を適用するようになって数年後、その普遍的な適用性について不思議に思い始める者が出てくる。いま同じコードブロックを含む2つのメソッドがあるとしよう、そこでその共通ブロックを切り出して別の関数とする。そうしたメソッドが、発散するように進化を始めることは珍しいことではない…そこで関数に引数を追加したり、結果にフラグを付け加えたりするようになる…そしてこれからやってくるコーダーたちはみな、その別の関数に対する、呼び出し側の事情による特定の引数と戻り値を理解するための、認知的オーバーヘッドを強いられる。…そしてようやくここに至って、もし昔「同じことを繰り返して」それぞれのコードブロックが自然に成長するのに任せていたなら、現在得られているコードは遥かにシンプルで直感的なものになっていただろうということに気が付くのだ。

ではDRYが悪いということだろうか?もちろんそうではない!DRYは正しい…通常は、…適切な状況下では、…まあ、たぶん。私の個人的な経験則は「同じことを1度繰り返すことはOK、それ以上繰り返すことはよろしくない…しかしそれは状況によって異なる」というものだ。なにしろ全てのものが状況に依存するのだ。DRYの目的はDRYではない。もしそうだと思っているのなら、若者よ、まだ多くを学ぶ必要がある。DRYの目的は、DRYについて考えさせるようにすることだ。ルールはない、公案があるだけだ。

(繰り返すが、私はここではソフトウェアについて話している。私の経験では、ハードウェアはもっとしっかりしていて、「これがルールだ」というものを持っている。これが私が電気工学を離れてソフトウェアの世界にやってきた理由だ)。

コンピュータサイエンスの世界で、私が気に入っている2つの「原則」について考えてみよう。まず1つめ:「別の抽象化の層を追加することで解決できない問題は、コンピュータサイエンスの中は存在しない」これは本当だろうか?まあ、文字通りの意味ではない。では現象学的にみて、多くの場合に真実だろうか?まあ、実際には、正しいと言えるだろう。ということは抽象化が、どのような問題を解く際にも正しい方法なのだろうか?いや、そんなことはない。それは公案なのだ。よく考えてみよう。

そして次が私の昔からのお気に入りだ:「最適化の第1法則:最適化するな。最適化の第2法則(エクスポートのみ): まだ最適化するな」。もちろん、これは明らかに公案だ。自分自身を法則として参照している。コードをより速く走らせる時だろうか?いいえ。コードをより速く走らせる時だろうか?いや、まだだ。これは何を意味するのだろう?それは、時間、複雑さ、認知的なオーバーヘッド、具体的な結果、全体的な目標、人生の意味、人間の存在の目的を考えることを意味する。それが意味することは:「瞑想せよ」ということだ、若者よ。ただし、それほど長い時間ではなく。何しろ仕事が控えているのだから。

2. 信頼することで信頼を獲得する

これは特にマネージャーにはよく当てはまるものの、マネージャーだけに当てはまるというわけではない。信頼こそがあなたの持つ唯一の価値なのだ。なので、もしあなたの公平性、判断、理解、誠実さなどが信頼されないとするなら、組織の人たちはあなたを欠陥人格とみなし無視するようになる。あなたが有能ではあるが信頼できない開発者の場合は、何らかの価値はあるかもしれないが、あなたの下す決定全てを精査するために使われるコストによって、生み出される価値も随分間引かれることになるだろう。

しかし、より大きなポイントは、チームは互いに信頼する必要があることだ。ナターシャが「そのチケットを担当します」と言ったら、彼女がそうするだろうということを信用しなければならない。もし「ピーターは締め切り前にビルドを終了させることができる」と言うならば、それを本当であると信じなければならない。もし誰かが「聞いてくれよ。すごいアイデアがあるんだ」と言ったなら、チームはそれを真剣に受け止め敬意を持って扱う必要がある。もしそれがある種イカれたアイデアだったとしても。

信頼を築き獲得するには、どのようにすれば良いのだろうか?答はとてもシンプルだ:まずあなたが信頼すること。この新しいライブラリを学んで月曜日までに統合できるという人を、あなたが信じることだ。家族の用事で、明日は早退するので、明日のスタンドアップミーティングには出席できないという人の言葉も信じなければならない。厳しい納期の1ヶ月前に、燃え尽きを感じ始めているので1週間の休みが欲しいという人を信頼しなければならない。難しい問題に挑戦したいという若い開発者を信頼しなければならない。

あなたがいつも正しいとは限らない。時には、実際に悪意のある行動をとるものもいる。そのような時にはそうした悪意ある人びとを暴き、迅速にプロジェクトから放逐しなければならない。そして、成功するために誠実に努力する人たちを信頼して…彼らが失敗してしまうこともあるだろう。しかし、直感には反するかもしれないが、これは通常長期的には勝利なのだ。そうした人びとは、あなたの信頼を覚えているので、それを利息付きで返そうと、できることなら何でもしようとするだろう。

3. シンプルであることは、エレガントであることよりもはるかに重要だ

いや、あなたが言いたいことはわかる。私だってタイトでエレガントなコードは大好きだ。また、抽象度のレベルが何層にも重ねられた柔軟なフレームワークが大好きだ。そのままで、いかなる変更要求も受け止めて扱えるような奴が。私はビットベクトルやビットシフトを使うことが好きだし、やや難解なデータ構造や、あまり知られていないものの、特定の状況下では非常に有用な、変わった小さな言語機能を使うことも大好きだ。

しかし、あなたが仕事で書くコードは自分のために書いているものではない。たとえそれが「単なるプロトタイプ」であったとしても。(私は自分の「プロトタイプ」のうち幾つが、これまでに多少のお化粧レイヤーを被せられて、実製品に組み込まれてきたかをもう覚えていない)。そして、あなたは現在の問題を解決するためだけにそのソフトウェアを書いているのではない。次の開発者が、それを使って次の問題を解決できるように、書いているのだ。その5行のコードがもし10行だったら、より簡単に理解できるというなら、おそらく15行の方が良いかもしれない。

あなたは高度に抽象化された柔軟なフレームワークを使って、次の開発者のために、予めそれらを試し解決しておくことができる。…しかし、預言はあなたの得意分野ではないかもしれない。次の問題が何であるかというあなたの預言は、完全に的外れなものになるかもしれないのだ。おそらく最善の方法は、ただあなたのコードをこれ以上なくシンプルにすることだ。命名規則とコーディングスタイルによって、ほとんど英語のように読めるようにしよう。別のクラスや別のファイルを追加して、次の開発者がコントロールの流れを追うためにそれらを開いておかなければならないようにする代わりに、物事は愚直なやり方で、エレガントではない方法で、シンプルにやろう。

4. 勢いに着目しよう

このようなことは誰でも経験しているだろう。ある週には、皆がコードをチェックインして、ビルドは目に見えて形をとり、機能は毎日追加され、テストカバレージは高い値を維持し、Slackには生産性の高いアイデアとソリューションが溢れていた。そして、次の週…どういうわけか…勢いが失われたように見えた。課題Aに関する判断が必要とされたが、その判断は課題B、C、Dに影響を与えるものだった。皆が課題D、E、Fの作業をする一方、それらは論理的な依存関係に従った開発順序ではなかった。そのためさらに仮定を置く必要に迫られて、認知的負荷は高まった。具体的なコードを書くためには、たくさんのモックコード(中身はない仮のコード)を書かなければならなかった。誰かが判断をする必要があったのだ。

あるいは、それは判断力が麻痺したからではなかったのかもしれない。例えば前の週に得られた進捗は、やっつけで作成された技術的負債の偽の基盤の上に構築されたもので、全てを止めて元の場所に戻りリファクタリングをする必要があるのかもしれない。それも今すぐ。なぜなら問題を放置すればするほど事態は悪化するからだ。誰もそんなことは聞きたくない。しかし来月それを聞かされるよりも、今聞いておくべきだったと彼らは考えることになるだろう。彼らにそう伝えて欲しい。

あるいは、先週は少々やりすぎて、今週は皆がただ少々疲れているだけなのかもしれない。どうすれば良いかって?皆を休ませよう。丸一日の休みを。全員に。長期的にはそうすることで時間の節約になる。約束する。

定義するのは難しいし、測定するのも難しく、話すことも難しい。しかし、「勢い」はソフトウェア開発において非常に現実的なもので、それを失っていることは、取り組む必要のある何らかの根本的なトラブルの先行指標なのだ。それを無視してはいけない、勢いが魔法のようにひとりでに戻ってくると期待してはならない。警告のサインを読み取り、すぐに行動しよう。

5. あなたのような人たちとではなく、あなたを補完する人たちと働こう

「職場の文化に合っている」という理由で人を雇うのを目にするたびに、私は目玉がひっくり返る思いをする。大部分の単一文化に何が起こるか知っているだろうか?対処する方法がわからない病原体に遭遇すると、死滅してしまうのだ。

すべての開発者、デザイナー、QA担当者、製品担当者、営業担当者、そして幹部をお互いのクローンにしてはならない。本当に、本当にそうしてはならない。誰もが強みと相対的な弱点を持っている。そして誰もが美徳と欠点を持っている。主要な強みに着目して人びとを雇い、彼らの相対的な弱点は、他の人びとの強みで打ち消すようにしたい。

例えば私。私はコードを速く書く。コミュニケーションに長けていて、散文を驚くような速さで読み書きする、いつでも数十のプログラミング言語やフレームワークに通じていて、物事を素早く徹底的に理解する。また幅広い経験を持っている。…一方特定の分野、フレームワーク、または言語に関して究極的に熟知しているのではなく、広い範囲に対応できるジェネラリストだ。そしてスケルトンが構築されたあとに、追加される必要のある内容や洗練作業を、実際に行なってくれる他の人たちに助けられているアーキテクトの1人である。そしてUXはからっきしだ(「待ってくれ、そのフィールドは揃っていないって言うのかい?」)。同僚の間ではよくジョークのネタにされている。

私のような人は見つけるのが難しく、要求するものも大きい…だが私と私のクローン9人で構成された会社は、最初から破滅を運命付けられているようなものだ。ああ、多くのことは本当にうまくやることが可能だろう。だが会社を殺すには、全員に共通しているたった1つの盲点、たった1つだけの致命的な欠陥があれば良い。ほとんどの人は、自分自身にはうまくやれないことがあること、おそらくそれは他の人が面倒を見る必要があることを、渋々ながらも認めている。それなのにその同じ人たちが、しばしば「職場の雰囲気に合っている」人を探し、自分たちと似たような人たちを雇おうとするのだ。悲劇であり、そしてまた喜劇だ。

6. どんな決断であっても決断しないよりは良い

引き伸ばしはやめよう。確信が持てない時は、とりあえず何かをしよう。もちろん、これはプロダクトのリリース判定時には適用されないが、それ以外のソフトウェア開発の場面では適用可能だ。私たちはこれまでの歴史の中で、最も超加速化された業界で働いている。私たちは指数関数的成長の世界に住んでいるのだ。時間は付き合ってくれない。無駄にしないようにしよう。

これは低レベルの決定と同様に、高レベルの議論にも当てはまる。高レベルの議論でしばしば見られるのは以下のようなものだ「私たちは機能AまたはBのどちらを実装すべきだろうか?X方式でやるべきか、それともY方式か?」極めてありがちな展開は「ではよく考えることにしましょう…このことについてはまた来週話し合うことにして…」といったものか、もしくはもっともらしく「他の人たちがどうやっているかを調査して、もう一度話し合いましょう」とするものだ。こうした対応が正解であることも稀にはあるかもしれない。しかしほとんどの状況での正しい答は、誰かが「どれを試すかを試すかを今日中に私が決めます。そうすれば明日から作り始めることができますから」と言うことだ。

たとえAが最終的には間違った答であったとしても、Aの構築を開始するという決断は、おそらく何も決断しないことよりも優れている。これは直観に反するが、多くの場合正しいことなのだ。そしていつでも正しいのは、Aを本質的に理解する良い方法の1つは、実際にそれを作り始めてみるということだ。そしてその理解が良い判断へと導いてくれるのだ。

そしてこれは、低レベルの決定に対してはさらに正しいやり方だ。「仕様では、エラー状態Xをどのように処理すべきか、またはエラーメッセージがどのようなものであるべきかについては定義されていないぞ」(仕様はしばしば、エラー状態が一角獣のように稀であるようなユートピアのために書かれているように見える)「わかってるさ。コメントをここに今書き込んで、ここで実際に彼らが何をしたいと思っているのかを質問してくるよ!」

これはやりがちだ。もしこう答えたとしても、誰もあなたを責めることはできない。しかしこのやり方は間違っている。
より良い方法はその問題に対して自分自身で何らかの決断を行うことだ。たとえそれが何もせずに問題を持ち帰って質問をすることに比べて、荒削りで醜いものであったとしても。彼らを何もない状態から考えさせるのではなく、たとえそれが素晴らしいものでないとは知っていたとしても、既にあなたが作ったもの、学んだ地点から考えさせるようにしよう。彼らにとってもプロジェクトにとっても、結果はより良いものになるだろう。素早く実験を行い…そして素早くコースを変えることができるようにしよう。

7. 謙虚であれ、しかし堂々とせよ

全ての答を持てる訳ではない。も、自分自身がこう言うことは本当に気が進まないことなのだが、すべての答えを持っている訳ではない。それどころか、ほとんどの答さえ持っていないのだ。まあ十分な時間と労力をつぎ込むことができれば、大抵のことは理解できる自信があるとは言いたいのだが…。

…あなたもそうだろう。私たちは皆、ジェフ・ディーン(Googleの分散システムの基盤を構築した天才プログラマー)にも、サトシ・ナカモト(ビットコインを考案した人物)にも、あるいはマーガレット・ハミルトン(アポロ計画で活躍した天才プログラマー)にもなることはできない。私たちは、本当の天才と自己宣伝のうまい偽の天才で溢れた世界で働いている。そこでは全てを知る者はおらず、皆が自分たちが知らない物全てをひどく意識している。

幸いなことに、私たちの大多数は科学者ではない。私たちの仕事は、画期的な発見をすることではなく、そうした発見を実用化することである。望むらくは皆が本当に欲しているサービスとして。おそらくあなたがブルームフィルターやマークル木のようなデータ構造を発明することは決してないだろう。そして一緒に働く大多数の人たちによっても。しかしそれは問題ではない。本当に大事なことはブルームフィルターやマークル木を使って(場合によってはより抽象的な使いやすいレイヤを使って)実際の問題を解決することなのだ。

なので、あなたがテーブルの向こうにいる人以上のものを知っていると仮定すること、彼らの直感に反するアイデアが間違っていると即断すること、そして彼らの言語選択が酷いと思うことは全て間違っている。そして相手が自分よりも知っていると仮定することも間違っているのだ(もしそれが結果的に本当だったとしても)。世界は、スマートで知識が豊富でありながら、なぜか神秘的な理由で実際に物事を成し遂げられない人びとで満たされている(これはまるで安っぽい冗談だが、書いてしまおう:これが私たちの世界に学者がいる理由だ)。

だから、もしあなたが物事を成し遂げる人ならば、目がくらむような理論や知識に直面しても畏れ入ることはないし、同様にあなたよりもすごいことをたまたま成し遂げることができた人を前にしても気後れする必要はない。1日が終わって、コードを書き、テストをし、そしてデプロイしたのは、お馴染みの現場に身を投じて実際に物事を動かした開発者たちに他ならない。そしてその現場から引き離されつつある者の立場から語るなら、一緒に現場で穴を掘っていない人の事はあまり気にする必要はないということだ。そして、そうした人には上司というよりも協力者として接すれば良い。

[ 原文へ ]
(翻訳:Sako)

(訳注:トップの画像は映画「卒業」からのものである)。

GoogleのApp Engineがファイヤーウォールを提供、デベロッパーパラダイムの変化で人気を盛り返すか

Googleの最長寿命のクラウドコンピューティングプラットホームのひとつであるApp Engineにやっと、完全な機能を持つファイヤーウォール備わる

これまでデベロッパーは、このサービスの上で、自分のアプリケーションへのアクセスを簡単に制限することができなかった。たとえばテストのために一定の範囲のIPアドレスだけにアクセスを許すとか、そんなことが。そこでデベロッパーは制限をアプリケーションのコードとして書いていたが、そうするとどんなリクエストも一応はアプリケーションにやってくるわけだから、拒否するアドレスでもリクエスト処理のコストが生じる。

しかしこれからは、App EngineのAdmin APIやGoogle Cloud Console、さらにコマンドラインツールのgcloudなどを使って、特定のIPアドレスをブロック、または受け入れるアクセス制限をセットアップできる。ファイヤーウォールはアプリケーションの前へ陣取るから、拒否されたリクエストはアプリケーションにやってこないし、そんなリクエストのためにApp Engineのリソースが使われることもない。

App Engineのファイヤーウォールは、その機能や使い方に特殊なところはない。ユーザーはルールをセットアップし、それらのプライオリティ順を決めれば、それだけでOKだ。

App Engineにはすでに、DoS攻撃保護サービスがある。デベロッパーはそれを利用して、良からぬIPアドレスやサブネットを指定できるが、今日(米国時間8/24)のGoogleの発表では、保護のためには今日ベータでローンチしたファイヤーウォールの方をなるべく使ってくれ、ということだ。

App Engineは登場時には最先端のサービスだった。でもそれはデベロッパーを完全に新しいモデルに強制するから、AWSのEC2のような従来的な仮想マシンベースのサービスにはかなわなかった。しかし今では、コンテナやマイクロサービスやサーバーレスプラットホームなどの人気に伴い、App Engineモデルもそれほど珍奇とは感じられなくなり、このファイヤーウォールの例に見られるように、Googleとしても本格的な投資をこれから行っていこうとしているのだろう。

[原文へ]
(翻訳:iwatani(a.k.a. hiwa))

AmazonがあらゆるサードパーティデバイスにAlexa機能を持たせるべくSDKを無料オープンソースで公開

Amazonは、同社の仮想アシスタントAlexaを、Echoなど同社自身のハードウェアだけでなく、もっといろんなデバイスに載せたい、と考えている。そこで同社は今日(米国時間8/17)、AlexaのSDKを一般公開することによって、商用デバイスのメーカーたちがAlexa機能のある製品を作れるようにした。そのツールセットAlexa Voice Service Device SDKを利用すれば、各種のデバイスに完全なAlexaの能力を持たせて、音声認識だけでなくメディアのストリーミング、タイマーやアラーム、通知、天気予報、そしてAlexaの‘スキル’と呼ばれている何千もの音声アプリケーションにもアクセスできる。

Amazonによると、このSDKはこれまでのプレビューの間、特別招待のデベロッパーにのみ提供されていた。その間、50社あまりの商用デバイスのメーカーが、自分たちの製品にAlexaを実装した。

Amazonが今朝のデベロッパー向けブログ記事で、そのいくつかを紹介している。たとえばTechnicolorはAlexaを同社のHome Networking GatewayとExtenderに加え、ベルリンのスマートホームデバイスメーカーSenicは、同社のスマートホームハブCOVIにAlexaを加えている。

Amazonはここしばらく、Alexaの機能や、マイクロフォンの配列のような、音声駆動デバイスを構築するための根幹となる技術に、容易にアクセスできるためのやり方を検討してきた。

今回のAlexa Voice Service Device SDKもその努力の一環で、今やすべてのデベロッパーが、GitHub上の無料でオープンソースなライセンスでこれを利用できる。このSDKはその中に一連のデベロッパー支援ツールを総まとめしており、ハードウェア開発キットやAPI、Alexa対応デバイスの作り方が書かれているドキュメンテーションまでも含まれている。

Amazonのこのやり方が結実している製品として、たとえばHuaweiのスマートフォンMate 9が挙げられる。これには単純に、音声アシスタントオプションとしてAlexaがある。またスマート温度計Ecobee4や、インターネットラジオTribyさらにスピーカー目覚まし時計インターコム、そしてスマートウォッチにも、Alexa実装の例がある。

一方Amazon自身もAlexaデバイスの幅を広げようとしており、今度の新しいEchoスピーカーには、カメラ付きのEcho Look、画面付きのEcho Showなどがある。

Alexaを載せたデバイスのすべてが、Echo並に成功するとは限らないが、でもやらないよりはやってみるべきだ。今やAlexaのプラットホームには、音声コンピューティングのためのAndroid OSと呼べるほどの広がりがあり、トップの座、すなわち大きなマーケットシェアと多くのユーザーを、ますます維持確保しやすくなっている。

[原文へ]
(翻訳:iwatani(a.k.a. hiwa))

Microsoftが完全な管理を伴うイベントルーティングサービスAzure Event Gridを立ち上げ

Microsoftが今日(米国時間8/16)、Azure系列の新製品をプレビューとして発表した。それは、イベントベースのアプリケーションを作りやすくするためのツールだ。

そのAzure Event Gridは、画像やビデオがアップロードされた、ボタンがクリックされた、データベースがアップデートされた、などなどのイベントをAzureの正式のオブジェクトとして扱う。Event GridはMicrosoftの既存のサーバーレス製品Azure FunctionsやAzure Logic Apps(の足りない機能)を補完して、完全に管理されたイベントルーティングサービスへのアクセスを与える。この新しいサービスにより、どんなイベントに対しても、それを受け入れて反応する柔軟性が与えられる。それらは、Azure内部で起きるイベントでも、あるいはサードパーティのサービスや既存のアプリケーションで起きるイベントでもよい。

Event Gridを使うと、イベントを特定のエンドポイント(あるいは複数のエンドポイント)へルートしたりフィルタできる。

“サーバーレス”という言葉は、最初から一貫して誤称だ。たしかにアプリケーションはサーバーを呼び出さないけど、イベントに応じて何かをやるのは依然としてサーバー、というかサーバー上のコードだ。サーバーレスプラットホームの基本的なコンセプトは、このモデルではイベント駆動のアプリケーションを、それを支える低レベルのインフラストラクチャ(サーバーなど)をまったく気にせずに作れる、という点にある。

たとえば、MicrosoftのAzure ComputeのディレクターCorey Sandersによると、Event Gridは、マイクロサービスを作るためのMicrosoftのプラットホームService Fabricの上にあるが、デベロッパーはそのサービスについて何も知る必要がなく、プラットホームがすべての面倒を見る。

Event Gridはwebhookのエンドポイントとして、どんなアプリケーションからでも入力を取れるから、Azure FunctionsやLogic Appsなどよりもやや進んでいる。“目標は、顧客が管理でき操作できる正式のオブジェクトとしてのイベントを提供することだ”、と、Sandersは語る。基本仕様としてEvent Gridは、Azure Blog StorageやResource Manager, Application Topics, Event Hubs, Azure Functions, Azure Automation, そしてLogic Appsをサポートしている。またCosmosDBデータベースサービスやIoT Hubなどの新しいサービスも、年内にはサポートされる。IoTアプリケーションはイベント駆動が定石だから、IoT Hubのリリース時点でイベントのサポートがなかったのが、むしろ意外だ。

標準的なサーバーレスアプリケーションとインテグレーションはLogic Appsがあれば十分かもしれないが、Event Gridを使えばオペレーションのワークフローの一部を自動化でき、たとえば新しい仮想マシンやデータベースの立ち上げなどにも、自動的に対応できるようになる。

Event Gridの料金は処理するオペレーションの数による。最初の10万オペレーションは無料、そしてその後、100万オペレーションごとに60セントだ。現在のプレビューの時点では、30セントとなる。ひとつのオペレーションは、入力処理、高度な数値演算、デリバリの試み、管理タスクの呼び出しなどだ。

[原文へ]
(翻訳:iwatani(a.k.a. hiwa))

AWSがKubernetesのホームCloud Native Computing Foundationに参加

噂では、AmazonのクラウドコンピューティングプラットホームAWSが近く、Kubernetesベースの独自のコンテナ管理サービスをローンチする、とされていた。その噂は、今日(米国時間8/9)AWSが、KubernetesプロジェクトのオープンソースのホームであるCloud Native Computing Foundation(CNCF)に、最上位メンバーのプラチナ会員として参加したことにより、かなり具体性を帯びてきた。AWSの参加によって、MicrosoftやGoogle、IBMなどを含むメジャーなパブリッククラウドプロバイダーの全員が、この、Linux Foundationを上位団体とする現代的なクラウド管理技術の推進団体に加わったことになる。

最近の調査によると、Amazon(==AWS)はすでに、Kubernetesを用いたデプロイの大半をホストしているので、Amazonが、ある意味ではKubernetesプロジェクトの本拠地であるCNCFに加わっても、それほど意外ではない。しかも重要なのは、AWSはほかにも大量のオープンソースプロジェクトを利用しているし、また自分のプロジェクトをGitHubで頻繁に公開していることだ。また同社は2013年以来、Linux Foundationのメンバーであり、そこのCore Infrastructure Initiativeの創設メンバーだ。同社が主なコンペティターたちと違うのは、Cloud Foundry Foundationに参加していないことだ〔関連記事〕。

CNCFに関しては、Amazonは同グループのコンテナランタイムcontainerdを提供している。CNCFは今日の声明で、こう言っている: “AWSはクラウドネイティブのコミュニティで積極的な役割を果たし、containerdなどでKubernetesなどのクラウドネイティブ技術に寄与貢献している”。AWSのクラウドアーキテクチャ戦略担当VP Adrian Cockcroftが、CNCFの理事会に加わる。

Cockcroftの発表声明は、Kubernetes関連のAmazonの短期的プランを述べていないが、すでに同プラットホームへの広範な支援を提供し、この急速に拡大している分野において、競合するGoogleやMicrosoftの利益にもなっているわけだから、今後はAWS上でKubernetesをよりダイレクトにサポートしていくことは、ほぼ確実だろう。これまでAWS上でKubernetesを使うためには、サードパーティ製のツールを使う必要があった。

[原文へ]
(翻訳:iwatani(a.k.a. hiwa))

Kubernetesによるコンテナクラスターのプロダクションレベルのデプロイを「安全化」するHeptioのオープンソースプロジェクト

シアトルのHeptioは、Kubernetesの協同ファウンダーCraig McLuckieとJoe Bedaが最近立ち上げた会社で、企業におけるKubernetesの本格的な利用(プロダクションレベルでの利用)を、より容易にすることをねらっている。2016年に創業したこの資金豊富な会社はこれまで、鳴り物入りの新製品発表などはまったくなかったが、でも今日(米国時間8/3)同社は、二つのオープンソースプロジェクトArkSonobuoyリリースした

Kubernetesの人気は急成長し、それは今やもっとも人気のあるコンテナオーケストレーションシステムだと思うが、でもその周りにできるエコシステムは、誰もが認めるように、今でも未発達だ。Kubernetesをサポートするサービスやオープンソースのプロジェクトは山ほどあるが、現状はまだまだ、成熟期というより成長期だ。Heptioがその二つのプロジェクトで解決しようとする問題は、Kubernetesのクラスターのステートをバックアップすること(Ark)と、これらのクラスターのテストと診断(エラー検出)だ。

Arkのようなツールの標準的なユースケースといえば、インフラストラクチャやデータが落ちたときの災害復旧だ。同社の今日の発表では、こう言われている: “われわれの顧客がKubernetesのプロダクションユースに向かうに伴い、彼らの多くが、クラスターのバックアップとリストアの管理、という難題に直面する。そんなときデベロッパーは、(etcdで)クラスターのステートの直接的なレプリカからクラスターをリカバリしようとするが、うまく行かないこともある”。そこでArkはすべてのクラスターオブジェクトのバックアップを作り、ボリュームのスナップショットを作らせ、クラスター全体を前のステートへリストアする能力を与える。

一方Sonobuoyは、災害の防止だ。それはデベロッパーとオペレーションのチームが彼らのKubernetesのデプロイをテストし、それらが想定通り動いていることと、正しく構成されていることを確認する作業を支援する。

二つのプロジェクトはどちらもGitHubから入手でき、オープンソースなので多方面からのフィードバックやコードの寄与貢献を歓迎している。

[原文へ]
(翻訳:iwatani(a.k.a. hiwa))

モバイル開発の継続的インテグレーション/デリバリを提供するBitriseが$3.2Mを調達、英米につぎ日本市場にも注力

iOSやAndroidなどモバイルのアプリケーション(“アプリ”)では、開発の各ステップを手作業でセットアップしなければならない、という問題がある。そのためカスタマイズは容易だが、そのぶん、メンテナンスコストが発生する。理想的なソリューションは、モバイルのアプリケーションのビルド、テスト、そしてデプロイの過程を自動化して、デベロッパーを本来の創作、クリエーションに集中させることだろう。

その理想を実現した、と自称するのがBitriseだ。Y Combinatorで育ったこのスタートアップは自らを、“モバイルのアプリケーションデベロッパーのための継続的インテグレーションとデリバリ(continuous integration and delivery, CI/ CD)のプラットホーム”、と名乗る。

同社はこのほど、OpenOceanがリードし、Y CombinatorやFiedler Capital、およびそのほかのエンジェル投資家たちが参加したシリーズAのラウンドで、USドル換算320万ドル(250万ポンド)の資金を調達した。

YC育ちのハンガリーのスタートアップはこれが初めてだが、Bitriseは自国内での成長に加えて、アメリカでの事業展開も予定している。さらにまた、インテグレーションのためのライブラリを全面改良し、ユーザー分析やリポーティングのためのアドオンを加え、エンタープライズのサポートにも力を入れたい、としている。これらが新たな資金の、主な使いみちだ。

Bitriseは今すでに、FoursquareやFox、InVision、Grindrなどが利用していて、全世界のデベロッパーユーザーは20000を超えている。メインのユーザーベースはイギリスとアメリカだが、最近は日本でも成長著しい。また同社のコアプロダクトを軸に強力なオープンソースのコミュニティがあることも、同社自身の支えになっている。

OpenOceanのゼネラルパートナーRichard Muirheadはこう語る: “Bitriseは、モバイルのアプリケーションデベロッパーが抱える問題の核心をついている。開発過程をかなり高いレベルで自動化でき、しかもオープンソースなのでデベロッパー自身が、手作業の奴隷になることなく、イノベーションを実現できる”。

Y CombinatorのパートナーJared Friedmanは曰く: “開発過程の全体を自動化するデベロッパープラットホームという分野では、Bitriseがいちばんオープンなプラットホームだ。完全な拡張性があるから、デベロッパーは自分がよく知ってて好きなサードパーティのサービスを何でも、単一の非常に使いやすいインタフェイスで統合化できる”。

Bitriseは2014年10月にBarnabas Birmacher、Daniel Balla、Viktor Beneiの三名により創業された。CEOのBirmacherによると、競合するそのほかのプラットホームは、“Webアプリケーションの場合と同じような視点で問題に取り組み、デベロッパーが開発の各ステップを手作業でセットアップするものが多い”。

“そのため、カスタマイズ性は高いけど、巨額なメンテナンスコストに直面することになる。また完全自動化と称するプラットホームは、最初のセットアップの段階でカスタマイズ性があまりにも極小なため、デベロッパーは完全なブラックボックスとつきあうはめになる”、と彼は言うのだ。

競合製品とは、CircleCI, Travis, Nevercode, Buddybuildなどのことだ。

[原文へ]
(翻訳:iwatani(a.k.a. hiwa))

Android Oの最後のデベロッパープレビューが出た、アプリの最終テストが主な目的

Googleが今日(米国時間7/24)、Android Oの四度目で最後のデベロッパープレビューをリリースした。Android Oは同社のモバイルオペレーティングシステムの最新バージョンだ。予想されたように、今回はもはや大きな変化はなく、Googleによると、計画どおり今夏の終わりには正式版がリリースされる。今夏の終わりとは9月22日のことらしいから、まだ間があるが、これまでのペースはAndroid Nougatのときと酷似しているから、最終リリースは8月ではないかな。

Android OのAPIの最終確定が三度目のプレビューだったから、今日のアップデートは微修正と安定性の向上がメインだ。Android SDKの主な部分とツール、そしてAndroid Emulatorは今後数日内にバージョンがやや上がり、Android Support Library(v. 26.0.0)は今や安定とみなされているが、前と同じく今回の焦点は、本番バージョンがユーザーの手に渡るまえにデベロッパーが自分のアプリをテストできることに置かれている。

ユーザーとデベロッパーにとって、Androidのこの新バージョンは、全体的に通知のサポートが改良され、またピクチャ−・イン・ピクチャ−やオートフィルなどがサポートされる。電池の使用を最適化する機能も、新たに導入された。これらの変化はどれも地味だが、Android上のデベロッパーは自分のアプリをできるかぎり早くテストしたいだろう(新しい機能を使う気はなくても)。ただしそのためには、Androidアプリを書くためのGoogleのIDE Android Studioを、最新バージョンにアップデートしなければならない。

Google Playのストアはすでに、最新APIに対応するアプリも受け付けている。

Android Oのデベロッパープレビューは一般ユーザーがネットからアップデートすることも可能だが、ただし公式リリース前のソフトウェアを動かすためには、勇気が必要だ。対応機はGoogleのPixel, Pixel XL, Pixel C, Nexus 5X, Nexus 6P, そしてNexus Playerだ。登録はここから

昨年出たAndroid Nougatは、今ではAndroid全体の11.5%のシェアを持っている。Androidのニューバージョンはつねに採用のペースが遅いが、Pixelはすでにかなり出回っているから、デベロッパーもAndroid Oのバスに早めに乗った方が、良いのではないだろうか。

[原文へ]
(翻訳:iwatani(a.k.a. hiwa))

Open Container Initiativeがコンテナの仕様の標準規格v.1.0をリリース

ついにやっと今日(米国時間7/19)、Open Container Initiative(OCI)が、そのコンテナランタイムとソフトウェアコンテナのイメージの仕様の標準規格、バージョン1.0のローンチにこぎつけた。この、今年で2歳になるオープンソースのファウンデーションは、Dockerをはじめコンテナエコシステムのリーダーたちが、まさにこれらの共通仕様を確立し維持管理するために作った組織だ。すなわちそれらは今後、コンテナのフォーマットとランタイムの業界標準になる。

Dockerは、これらの仕様の基盤となるものの多くをOCIに提供した。たとえば同社は、同社のコンテナランタイムのコードベースをOCIに寄贈した。さらにその後、同社の技術コミュニティがコンテナのイメージのフォーマットをOCIのプロジェクトに加えた。OCIの現メンバーは40社あまり、クラウドでプレイする大手テク企業のほとんどが参加している(AWS, Cisco, Facebook, Google, Huawei, IBM, Intel, Microsoft, Oracle, Red Hat, VMwareなどなど)。またRancherやWerckerのような、コンテナ技術を専業とする企業も、少なからず加盟している。

OCIの事務局長を務めるChris Aniszczykによると、たしかに、この組織における仕事の進め方やリリースの形式が決まるまで、かなりの時間がかかった。“同じコラボレーションでも、オープンソースのプロジェクトと違ってスタンダードの作成には困難な側面がある。オープンソースのプロジェクトでも、多くの企業がさまざまなやり方ですでに業務に使用しているものは、意見の違いが大きくなりがちだが、共通スタンダードについても同じことが言える”、と彼は語る。しかし、Linux Foundationの傘下となった今では、ガバナンスの構造も適正かつ安定してきた、と彼は感じている。この取材の席にいたDockerのStephen Walliは、こんだけたくさんのメンバーがいること自体、組織とプロジェクトの成功を物語っている、と付言した。

Aniszczykによると、仕様の策定作業でとくに大きく貢献したのがRedHat, Docker, CoreOS, そしてHuaweiだった。またFujitsu, Microsoft, Google, Oracle, Cisco, Tencentなども積極的に動いてくれた。

バージョンが0.xでなく1.0でリリースされたことは、そのスペックは一般的な採用が可能で、今後、採用者がコードを大きく書き換えなければならないような変更はない、ということを意味している。

今後の計画としてAniszczykは、次に取り組みたいのは検定(仕様への合致の証明)だが、そのほかに、すでに温めている企画として、現状のLinuxだけでなくそのほかのプラットホームのサポートと、レジストリのアクセスやコンテナの配布のためのAPIの標準化作業がある、と語った。

[原文へ]
(翻訳:iwatani(a.k.a. hiwa))