Cloud Native Computing Foundationが抱えるプロジェクトと会員を大幅増、最新コンテナ技術の教育/人材育成にも注力

人気続伸中のコンテナオーケストレーションサービスKubernetesや関連のオープンソースプロジェクトを管理提供するCloud Native Computing Foundation(CNCF)が、例年のデベロッパーカンファレンスを今日(米国時間3/29)から開催し、それを機に、DockerとCreOSのプロジェクト(containerdとrkt)を仲間に加えたことを発表した。

Dockerのcontainerdは同社のコンテナランタイムで、Dockerのコンテナ管理およびオーケストレーションサービスの中核的部分だが、Dockerとしては標準的なコンテナライフサイクル管理の機能を、コンテナの実行を担当するDocker Engineから切り離したかったため、ランタイムを別立てにした。しかし多くの企業ユーザーは、Dockerを使うことを通じて同時にcontainerdも使っている。DockerのPatrick Chanezonは今日からベルリンで始まったカンファレンスのキーノートで、同社がcontainerdをCNCFに寄贈することに決めたのは、その正しい世話役として中立的な機関を探していたからだ、と語った。

一方CoreOSのrkt(‘ロケット’と発音する)は、Linuxのクラスターのための同社のコンテナエンジンだ。containerdと違ってデーモンではなく単一の実行プログラムであり、Kubernetesなど、ほかのコンテナプロジェクトとの統合がねらいだ。CoreOSは最初、rktをDocker Engineの競合製品としてローンチし、同社独自のコンテナ形式を前提していた。でも今では、スタンダードに準拠したコンテナエンジンになっている。

CNCFのディレクターDan Kohnは、こう言う: “Kubernetesなどのコンテナオーケストレーションにとっては、rktのような信頼性の高い、コミュニティベースのコンテナランタイムの方が便利だ。うちのような単一の機関の下にrktのようなコンテナランタイムと、コンテナクラスターの管理システムKubernetesの両方があると、業界に堅実なエンドユーザーソリューションを提供できる。それは巨大な便益だ”。

CNCFの新しい会員も発表された。Linux Foundationが管理しているすべてのプロジェクトと同様に、CNCFの場合も会費が資金源だ。まず、Dellが大型のプラチナ会員になり、年間37万ドルを提供する。そのほか、Cisco, CoreOS, Docker, Google, Huawei, IBM, Intel, Red Hatなどもプラチナ会員だ。SUSEは年会費12万ドルのゴールド会員、HarmonyCloud, QAware, Solinea, TenxCloudはシルバー会員だ(会費は社員数により7000から50000ドル)。

Dell EMCのテクノロジー担当VP Josh Bernsteinが、今日の入会ご挨拶でこう述べた: “今日の環境では、オープンソースがアジリティの鍵だ。環境が、ソフトウェアが求める迅速な変化と進化を支えなければならないからだ。CNCFに参加することにより弊社は、変化の促進にさらに深くコミットでき、エンタープライズITの戦略の核として、ソフトウェアをオープンでアクセス性と利用性の良いものにしていける”。

なお、CNCFは今後、Kubernetes Certified Administrator Exam(Kubernetes認定管理者試験)のカリキュラムを、オープンソースのライセンスで無料提供する。このところオープンソースの世界は、いろんな認定事業がトレンドになっている。OpenStackやCloud Foundryのようなオープンソースプロジェクトも、CNCFと同様の人材枯渇を解消するために、認定事業を検討している(Cloud Foundryの認定事業については別記事あり)。それらは、企業の既存社員の教育〜レベルアップだけが目的ではなく、明確なカリキュラムに基づいた事業により、新しい人材のプールを作ることもねらいだ。

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

GitHubのエンタープライズバージョンが重すぎる企業のために通常Webサービスの“企業用プラン”が登場

Workers install a billboard for GitHub Inc. in San Francisco, California, U.S., on Tuesday, Nov. 11, 2014. GitHub, which provides open-source code hosting services and has raised more than $100 million from investors, is among tech startups boosting demand for billboard space around Silicon Valley. Photographer: David Paul Morris/Bloomberg via Getty Images

GitHubが今日(米国時間3/1)から大企業向けの提供物を拡張する。元々デベロッパーが効果的にコラボレーションし、ソースコードを共有するためのサービスだったGitHubだが、最近ではそのツールのエンタープライズバージョンを提供して、同じサービスを大企業が自社のために自社のデータセンターやAWS、Azureなどの上でホストできるようにしている。今日発表されたのは、企業自身が動かすバージョンというより、前からあるGitHubサービス本体の企業用バージョン、ビジネスバージョンで(下図)、というか‘プラン’で、それはユーザー一人あたり月額21ドルで利用できる。

では、無料や月額7ドルや9ドルの従来型サービスと、21ドルのビジネス用サービスプランは、どこがどう違うのか。この高い月額のサービスでは、上述の、GitHubツールのエンタープライズバージョンと同じく、Ping Identity, Okta, Azure ADといったSAMLベースのシングルサインオンがサポートされる。そしてアドミンがユーザーアカウントの供与やパーミッションの管理を行えるし、アカウントの供与/解消の自動化もできる。GitHubのエンタープライズバージョンにあってビジネスバージョンのサービスプランにないものといえば、Team Syncだけだが、これも年内にはサポートが予定されている。

さらに99.95%のアップタイムが約束され、その約束をSLAが支える。ウィークデーにはサポートにアクセスできる。

というわけでこれは、GitHubにとって当然のような次の一歩だ。エンタープライズバージョンを自分でオンプレミスでホストできるような大企業は多くないし、その必要のないところもある。しかしこれまでは、その必要のないところでも、エンタープライズ機能が使いたければ、GitHub Enterpriseのセルフホストしか選ぶ道はなかった。でもこれからは、もっと容易に、エンタープライズ級のGitHubを使えるし、アドミンの仕事も楽になる。

0919ffcc-f925-11e6-8571-4779da044270

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

Android Studioはいつまでこの体たらくを続けるのか?

android-studio-logo

年に2回程度、私はちょっとしたAndroid開発をすることが必要なプロジェクトに関わっている。そこで、年に2回程度Googleのいわゆる統合開発環境であるAndroid Studioを、祈るような気持ちで立ち上げる。…そして年に2回、それがいまだにエレガントで直感的なRube Goldberg機械(複雑怪奇な仕掛けでちょっとしたことを行うだけの機械)であることに気がついて、苦い失望に顔をしかめるのだ。

私が特定のOSに肩入れしているわけではないことは急いで付け加えておきたい、というより私はどちらかといえばGoogle贔屓なのだ。これまでの私のスマートフォンは全てAndroidだった。最初にHTC Magicを買った2009年以来、私は職業としても趣味としてもAndroidアプリを書き続けて来た。その後もAndroidが続き、Galaxy S2、Nexus 4、Moto X、そしてピカピカのPixelを手にしている。

しかし私は、iOSやtvOSのアプリ書いている。そしてAppleのソフトウェアに対する覇権的態度は嫌っているものの、AppleのIDEであるXcodeを立ち上げると、少しほっとした気持ちになるのだ。それは高速で滑らかに動く。そして、それがあまり上手く動作しないときでも、足手まといになることは滅多にない 、だがAndroid Studioの場合、足手まといになることが基本機能なのだ。

例えば、私はそのビジュアルツールを利用して、スクリーン上に要素を本当に上手くレイアウトできた試しがない。もちろんそれが理論的に可能であることは知っている。しかし試す度に強度のフラストレーションに襲われて、結局XMLでレイアウトを直接書くことになるのだ。これが私1人だけの問題ではないことは確かだ。逆にXcodeでは、自由奔放に楽しく、ドラッグアンドドロップをするだけだ。

最初の状態ではAndroid Studioは自動的にJavaクラスをロードしていない。これを行うためには、不可解な迷路の中に埋め込まれたメニューに辿り着かなければならない。最初の状態では、Android Studioは、おそらく私が必要とする無数のサポートライブラリをどのようにロードすべきかを教えてくれないし、Androidエミュレーター(いまだに耐え難いほど遅い)をどのように実行すれば良いかも教えてくれない。この両者への秘密の扉は、信じようが信じまいが、”Tools”メニューの中の”Android”サブメニューの中に埋め込まれている。このことについて、少し考えてみよう。何故GoogleのフラッグシップAndroid開発ツールに、”Tools/Android”メニューがあるのだろうか?全部がAndroidツールではないのか?これらの重要な要素がメニューである必要があるのか?

…問題の1つは、もちろん、Android Studioがゼロから作られたものではないということだ。それは今やもう年老いたJava IDEであるIntelliJ IDEAプラットフォームに基づいている…まあそれでお分かりだろう。15歳という年齢を感じさせるソフトウェアだし、それはAndroid開発のために作られたというよりも、対応させたということが明らかなものなのだ(”Tools/Android”を思い出してみよう)。そして、もちろんそれはJavaで書かれていて、マルチプラットフォームで動作する…しかし動作は遅い。

Androidのエコシステム自身が、さまざまなライブラリとSDKの、目まいがするような過剰なバージョンへと断片化し、扱いにくくかつ複雑であることは事実だ。例えば、ビルドツールのGradleが開発者泣かせということは有名な話だ(とはいえビルドそのものは難しい。Appleのビルドツールも開発者の手をがっちりと掴んでいてはくれない)。しかし、良く設計されたIDEは、少なくともこの苦痛を緩和できる。Android Studioがマルチプラットフォームでなければならないのに対して、Xcodeは1つのOSだけで走れば良いというのは真実だ。しかし、他でもないGoogleは、マルチプラットフォーム上でネイティブコードをサポートできるリソースを持っている筈だ。

巨大怪物のGoogleが、10億台以上で使われているそのモバイルプラットフォーム向けのフラッグシップ開発環境を、これほどまでに遅く、ツギハギだらけで醜いもののままにしていることは本当に驚異的だ。負の効果は測り知れない。iOSの開発をより早くより効率的にしているものの理由の1つが、良いツールが提供されていることだ。両方のエコシステムに慣れた開発者たちは、AndroidよりもiOSの方を好む。なぜならそちらの方が遥かに使いやすいからだ。そのため私たちはスマートフォンソフトウェアとしてiOSを優先することになり、Androidは二の次になってしまうのだ。AndroidアプリはiOSプリよりも大きくなりがちなことで有名だ、それなのにIDEがそれに対処できないということは信じがたい。

まあ身勝手な話だが、仮にGoogleのIDEが優れていた場合には、Appleに対して改善を迫るとは思う。Xcodeは完璧からは程遠い。クラッシュもすれば、ハングアップもする。しかしそうした欠陥があるとしても、比較するまでもなく、iOSの開発はAndroidの開発よりも遥かに苦痛が少ないものだ。(まあ、それもデプロイしようとするまでの話だが。そこから先はAndroidには苦労がない。Appleの「改善はされたもののしばしば不可解な」、ビルド、署名、アップロード、提出、そしてベータ版ビルドですら承認を待たされるプロセスは、iOS開発者に深い恨みと怒りを引き起こすものだと知っている)。

しかし最近、半ば疑いながらの期待ではあるが、真のライバルが初めて現れてきたようだ。このことは、最近Microsoftによって買収されたXamarinのおかげで、.NETプログラマーたちにとっては既に知られていたことだ。Xamarinを使えば.NETを用いてAndroidとiOSに対してネイティブアプリを作成することが可能になる。しかし最近ではFacebookのRact Nativeが、(あまり沢山の)ネイティブコードを書くことなしに、クロスプラットフォームネイティブコードを書くための現実的なソリューションとなりつつある。すなわちAndroid StudioもXcodeも利用する必要がないのだ。

私はAppleとGoogleの開発環境が消え去ってしまうと言っているわけではない。しかしAppleとGoogleのデファクトで塞がれた道を、誰かが少なくとも押し退けようと努力しているのを見ることができることは良いことだ。彼らは、特に後者は、競争の欠如によって自己満足的に成長してきた。彼らがReactに、どのように対応(react)するかを見守ろう。

[ 原文へ ]
(翻訳:Sako)

同一のコードベースからiOSアプリとAndroidアプリを並行開発できるUXツールキットFuseが$12Mを調達

fuse_laptop

エンドユーザーにとっては、アプリケーションのユーザー体験(user experience, UX)こそが、まさにそのプロダクトそのものだ。だからデベロッパーは、良質なユーザー体験ツールキットに大きな投資をする。Fuseは、そんなツール集のひとつだ。同社の目的は、複雑なアプリケーションの開発時間を半減すること。今日(米国時間1/24)同社は、NorthzoneAlliance Ventureからの1200万ドルの資金調達を発表し、今後はそのツールキットをもっと広いオーディエンスに周知していこうとしている。

The ability to show the app design on multiple platforms and screen sizes is a boon for developers

複数のプラットホームや画面サイズに対応できるデザイン能力は、デベロッパーにとってありがたい。

同社がとくに力を入れているのは、アプリケーションのユーザー体験のインタフェイスを作るデザイナーと、アプリケーションの中にそういうユーザー体験を実装するデベロッパーとのあいだのコラボレーションを、良くしていくことだ。Fuseの主張では、同社の製品を使えば両者間のシナジー効果が大きいので、ネイティブアプリケーションの制作とその後の進化が迅速かつ容易になる。

Fuseの協同ファウンダーでCEOのAnders Lassenはこう語る: “アプリケーションの市場競争で勝つためには、UXが優れていることがすべてだ。しかし最近ではますます、ユーザー体験の優れたアプリケーションをより短時間で作りたい、という声が大きくなっている。うちのプラットホームに対する初期の反応は、私たちに大いに自信を持たせてくれるものだった。そして、こうやって投資家が注目してくれたことは、なお一層すばらしい”。

Fuseを利用すると、同一のコードベースからiOSアプリとAndroidアプリをリアルタイムで同時に開発できる。つまりこのプラットホームでは、開発中のアプリに対するUIのアップデートや、コンテンツやデータの反映がリアルタイムでできるから、相当早く、アプリのテスト工程へ移行できる。

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

フロントエンド開発の未来はデザインそのもの

Software developer programming code on computer. Abstract computer script source code.

【編集部注】著者のCarson MillerはイノベーションストラテジーとデザインファームFahrenheit 212(現在はCapgemini Consultingの一部)のデジタルヘッドである。

私たちの子供たちにコード作成を学ばせるべきか?この質問は、最近のディナーパーティーで私が受けたものだ。社会的サークルの中で、キャリア全体でソフトウェア開発に携わってきた唯一の人物の1人として、私はこの種の質問を頻繁に受けている。そのときの私の対応はとても肯定的で、その選択がきわめて明白であるすぐに思いつく理由をいくつか紹介した。

その時の会話はそれで終わったが、その質問は私の心に残ったままだった。おそらくその理由は、「コード作成」というフレーズにある。これはあまりにも多くの意味を内包しているのだ。自動運転、バーチャルリアリティ、その他の野心的な将来の技術を構築するために必要な、膨大な課題に注力するエンジニアの役割が常に存在していることを、私たちは否応なく思い浮かべるが、これらが私の友人たちがその子供たちのために心に描いていたものかどうかは自信がない。

もし彼らが、子供たちがウェブやモバイルアプリのコードを行う未来を想定していたのなら、私は正しい推奨をできたかどうかが疑問だ。デザインツールとソフトウェア開発インフラの大幅な技術革新を考えれば、このタイプのコーディングは、将来的には劇的に違って見えるものになるだろう。実際、設計と開発の境界線はもはや存在せず、製品を市場に出すために必要なスキルセットとチームには根本的な変化が起きることになる。

開発への障壁は急速に消滅しつつある

過去10年間、ソフトウェア製品をローンチするためのコストは指数関数的に減少してきた。たとえば、元々のドットコムブームの際には、資本の中の大きな部分をサーバー、インターネット帯域幅、ソフトウェアライセンス、オフィススペースなどが占めていたため、インターネットスタートアップのローンチにかかるコストは数十万ドルに及んだ。それ以降、Amazon Web Servicesのようなクラウドインフラストラクチャ、GitHubのような開発ツール、Ruby on Railsのようなオープンソースフレームワーク、検索のためのAlgoliaのような便利なバックエンドサービスが登場し、10年前に比べればほんの僅かなコストで、迅速なデジタル製品開発を可能にした。もし現在、あなたが時間とデザインと開発のスキルを持っていれば、数百ドルで製品を開発してローンチすることが可能だ。

デザインと開発は収束しつつある

新製品の構築はとても容易になった一方で、ユーザーが好む製品を生み出すことは大きな課題だ。あなたの狙っているユーザーたちに関する深い理解と、ユーザーのニーズに対応した楽しい体験をどのように届けるかへのビジョンが必要とされるのだ。また、製品チームが製品体験や、ビジネスモデル、そして提案価値を、迅速にテスト、学習、反復するためのワークフローが必要だ。

過去数年の間に、反復的な製品デザインが主流となってきた。Lean Startupの重要な指針、特に最小限の実行可能な製品(MVP)を迅速に市場に投入し、実際の顧客のフィードバックから学ぶべしというバイアスは、企業や製品を構築するためのより良い方法として広く受け入れられている。

コーディングの基礎技術とフロントエンドの開発との間には違いがあり、その違いは拡大しつつある。

そうした新しい作業方法をサポートする新しいツールのエコシステムが登場し、製品デザインチームは共同でより効率的に作業することができる。チームは、Photoshopの静的なデザインを作成する古典的なプロセスから、はるかに広大なツールセットを使うようになっている。そこにはSketchFigmaなどの共同デザインツール、InVisionMarvelなどの極めてシンプルなプロトタイププラットフォーム、UserTesting.comValidlyLookbackのようなユーザーテストサービス、そしてZeplinなどのデザイナーと開発者のコラボレーションツールなどが含まれる。

これらのツールはすべて、近代的な製品デザインワークフローの1つまたは多数のコア側面をサポートし、ほぼすべてがシームレスに連携することが可能だ。最終的な結果:製品をコーディングする前に、アイデアを体験、テスト、検証が可能な没入型プロトタイプにすることは、指数関数的に速くなった。

これは、フロントエンド開発に対して何を意味するのか?

今後数年の間に「製品デザイン」と「フロントエンド開発」に対する別々の機能としての意義は消滅する。多くの企業では、既にこのアプローチを採用していて、製品デザインとフロントエンドWebテクノロジ双方に精通した個人(クリエイティブ技術者(Creative Technologists)と呼ばれることも多い)を雇用することで、通常はデザインをコードの中に活かすために必要な引き継ぎをなくそうとしている。

この収束はまた、製品デザインチームが使用するツールの高度化においても起こっている。デザインとプロトタイピングを行うツールがフロントエンドの開発置き換え、選択したフレームワーク(React、Node、その他)のための高品質なフロントエンドコードをシームレスに生成するようになるのは時間の問題だ。Squarespaceは既に基本的なウェブサイトのためにこれを実現している。Webflowはインタラクティブなコンテンツ駆動型のWebサイトを作成するための、ドラッグアンドドロップ環境を提供している。AtomicOrigamiは再利用可能なコンポーネントとデータに対して幾つかの面白いことを実現している。

これらはすべてデザイン先行型のツールだが、多くはユーザーが作成されたコードに対して編集または追加を行って、製品を調整して洗練することを許す。これらのツールや他のツールが5年後にどうなっているのかを想像して欲しい。

このプロセス、スキルセット、そしてツールの収束は、製品デザインにおけるいくつかの重要な変更へとつながる:

  • チーム構成が変更される。チーム内にデザイナーとプロントエンド開発者の両者を抱える必要はなくなる、これによってチームはさらに身軽なものになる。
  • リアルタイム反復が標準となる。チームは継続的なデザイン改善の状態の中で運用することができるようになる。プロトタイピング、テスト、学習、そして新機能のロールアウトをこれまで以上に迅速に行えるようになる。
  • 業績が改善される。プロダクトチームはビジネス成果を駆動する最前線に立って、新しい機会を活用し、問題が悪化する前に対処することで、最終的な収益に対して意味のある行動を素早くとることができるようになる。

さて私たちの子供たちはコードすることを学ぶべきだろうか?私は、全ての子供たちがソフトウェア開発の実践的な知識を持つという価値に反論することはできない。しかし、コーディングの基礎技術とフロントエンドの開発との間には違いがあり、その違いは拡大しつつある。後者は、デザイナーたち優位性やデザインツールのおかげで絶滅の道を辿ろうとしている。よりよい体験を消費者とビジネスに対して作って届けることに興味のある子供たちは、深いソフトウェア開発専門知識を得ることよりも、デザインとビジネスに対して深い関心を寄せる必要があるだろう。

[ 原文へ ]
(翻訳:Sako)

FEATURED IMAGE: MACIEK905/GETTY IMAGES

Microsoft、Visual Studio for Macを今月中旬にリリース

2016-11-14-visualstudioformac

クロスプラットフォームのコーディングのファンに朗報だ。Microsoft言うところの「.NETとC#のための真にモバイル・ファーストでありクラウド・ファーストであるデベロプメント・ツール」、Visual StudioがMacにやってくる。これは今月ニューヨークで開催されるConnect (); 2016カンファレンスで発表される予定だ。

この動きはMicrosoftのIDEがMacに移植される最新の例だ。Visual Studio for Macに先立ってMicrosoftのクロスプラットフォーム・エディタ、Visual Studio CodeがすでにOS X向けにリリースされている。

MicrosoftはWindowsでの覇権を捨て去ろうとしているのだろうか? 「クラウド・コンピューティング」がいわば「壁に書かれた文字」だ。この予言に従えば、クラウドこそが未来であり、Amazon AWSやMicrosoft Azureは急速にオンプレミスのサーバーを置き換えていくことになる。MicrosoftはDockerやHerokuのようなツールに負けており、プログラマーがWindows環境よりMacBookやVimを使うようになるのも時間の問題だろう。

Hacker Newsのユーザー、BoysenberryPiは、「MicrosoftはAzureその他のサービスで金を稼いでいる。 つまり、その売上は主としてデベロッパーから得ている。そうなるとデベロッパーのコミュニティーに好かれることが最大の関心となる。これがMicrosoftが長年のドル箱ツールを突然Mac/Linux向けにオープンソースし始めた理由だ」と書いている。

Visual Studio for MacはWindowsに極めて近い。またそこがセールスポイントだ。OS X上で作業するユーザーがWindowsとの間で簡単にプラットフォームを行き来できるようにする―プログラマーに対してプラットフォームを意識させないか、あるいはそうでなくてもWindowsをまた使ってみようという気にさせるのがポイントだろう。プレス・リリースによれば、

本質的にVisual Studio for MacはWindows版Visual StudioのmacOS版です。Visual Studioでの開発を楽しんだ経験があるがmacOSを使いたいというデベロッパーにまさにぴたりです。UXはVisual Studioをベースにしていますが、ルック&フィールはmacOSのネーティブアプリとなるようデザインされています。またVisual Studio for Windows同様、フル機能のIDEを必要としない場合は、機能豊富ながらもっと軽いスタンドアローンのコード・エディタ、Visual Studio Codeが用意されています。

Microsoftの開発プラットフォームについてはこちら。こちらにVisual Studio CodeとC#プログラミングについての情報がある。

[原文へ]

(翻訳:滑川海彦@Facebook Google+

自動車修理店自身が、ユニークで使いやすいショップ運営ソフトを作り上げた


ハイブリッドカーへの注力で知られるサンフランシスコのLuscious Garageは、その真の特徴を隠している、それは人びとへの注力だ。創業者のCarolyn Coquilletteは2007年にサンフランシスコにオートショップを開店した、そして上のビデオからも分かるように、室内装飾からそれが占める空間に至るまでが、メカニックの現場に期待されるものとは大きく異なっている。そしてそれは店舗を運営するソフトウェアにも及んでいて、Coquilletteが訪問中に紹介してくれた。

Coquilletteにとって、オートショップの空間配置や対人関係といった部分を変えるだけでは十分ではなかった;サービスを追跡し、在庫を管理し、顧客とコミュニケーションする部分も大規模なオーバーホールを必要としていたのだ。典型的なショップバックエンドソフトウェアは、本質的に石器時代の遺物である、特に顧客がスマートフォンの上に持っている平均的なソフトウェアに比べればその差は大きい。

Coquilletteは改善の必要性を、Luscious Garageにとってだけの機会と捉えず、仕事を管理し、在庫を扱い、顧客が容易に理解できる方法で伝達を行うことのできる優れたソリューションを探している、他のオートショップにとっての機会でもあると捉えたのだ。当初構築したカスタムショップ管理プラットフォーム「Hyspace」を手本に、Coquilletteはそのシステムを、更に成熟した、それ自身独立して似たようなバックエンドの近代化に挑んでいる他の店舗でも使えるようなものへの転換を図った。

Screen Shot 2016-08-25 at 1.53.58 PM

リード開発者Tyler Olmsteadを擁するチームと共に、Hyspaceは2013年に全く新しいコードベースを使って書き換えが始まり2014年にはMVP(minimum viable product:必要最小限の機能を持った製品)が発表された;Shop-Wareは2015年1月にフル機能搭載のショップ管理プラットフォームとして正式デビューを果たした。

そのウェブベースのインターフェイスは、さまざまなプラットフォーム上で使用するためのナビゲートしやすく、視覚的に魅力的で、動的なもので、スタッフに向けた在庫やワークフロー管理と同様に、顧客向けの作業承認と作業履歴のコミュニケーション、そして統合された帳簿管理のためにQuickBooksとの統合も果たしている。Coquilletteは私に、車に必要なサービスが何か、それが何故必要なのかを顧客に対して明らかにする過程で、システムがコミュニケーションという観点から正確に何ができるのかを示した ‐ Shop-Wareは、そのわかりやすい報告機能のお陰で、間違いなく消費者とサービス提供者の間のより強い長期に渡る信頼関係を構築する手助けをしてくれるものだ。

顧客にとって、カーショップに対する指示は困難に思える仕事である、特に顧客が技術的な専門知識を持っていない場合には。Shop-Wareによって、Coquilletteはその過程をはるかに簡単なものにした。一方スタッフメンバー同士のコミュニケーションや、一般的な作業もはるかに容易になっている。Slak同様に、このShop-Wareは、自身のビジネスの追求のためににテクノロジーツールを構築する際に「自らの手で作り上げる」アプローチが、最後には他の多くの人も使うようになる何かを生み出すことを示す、良い例である。

[ 原文へ ]
(翻訳:Sako)

ソフトウェアにバグがあるのは仕方のないことなのか?

languages-pao

何もかもがひどいものだ。ほとんどのソフトウェアは、たとえそれがクリティカルなシステムソフトウェアだとしても、まるでダクトテープとプチプチとヘアピンで梱包されたスイスチーズの如く安全性の低いものだ。例えば先週の怖ろしくも興味深い投稿記事「How to Crash Systemd in One Tweet」(Systemdを簡単にクラッシュさせる方法)を見てみると良い。しかしそれはsystemdだけの問題ではなく、Linuxだけの問題でもなく、ソフトウェアだけの問題でもない;業界全体に問題があるのだ。私たちが自分自身に間違って教え込んできたきたのだ。他にやりようはない、と。

それでは、そのAndrew Ayerによる面白い投稿をもう少し詳しく見てみよう、なぜならこれはより大きな問題の見事な例となっているからだ。まったく「Yay non-determinism!(非決定性バンザイ!)」だ。

もしあなたが筋金入りのギーク(技術オタク)なら、自分で投稿全体を読んだほうがいいだろう;もしそうではない場合には…簡単に説明すれば以下のようなことだ、systemdはほとんどのLinuxディストリビューションの不可欠なコンポーネントであり、その大切な役目の1つとして、システムを起動するために使用されている。Ayerはそれをクラッシュさせるためのとても簡単な方法をみつけて、それに哲学的な考察を行った。ということである。

このバグによってすぐに喚起される疑問は、一体どういった品質保証プロセスが、このような単純なバグを2年以上に渡って見逃していたのだろうかというものである。[…]systemdの問題はこの1つのバグよりも遥かに深いものだ。systemdは、設計に欠陥があるのだ。バグのないソフトウェアを書くことは非常に困難なことだ[…]良いプログラマはバグのないソフトウェアを書くことの難しさを知っているし、バグの可能性を最小にするか、少なくともその影響を低減させる方向へソフトウェアを設計することの重要性を理解している。systemdの開発者たちは、こうしたことを理解していない。不必要な複雑性を膨大に詰め込むことを決定し[…]メモリ安全ではない言語で記述した。

私が思うに、最後の点がキーとなる大きなポイントである。何もかもがひどいものだ、なぜなら私たちが今でも使っている基本的なツールは、使われる際に、必然的にひどいものを作り出してしまうような欠陥を抱えているのだ。こうした適用は、systemdのような低レベルのコンポーネントから、最近大規模なDDoS攻撃の奴隷として使われたカメラや他のIoTデバイスの事例 ‐

– そして1億5000万ドルが失われたイーサリアム上のDAOの大惨事(実際にはその後の対応で経済的損失は防がれたが技術的、倫理的に大きな禍根が残された)のような高レベルのSF的抽象世界に至るまで、広く行われている。あまりにも長い間、ほとんどすべてのソフトウェアがバグを持ち安全ではないことに慣らされてきて、私たちはこれがソフトウェアの自然な姿だと思うようになっているのだ。しかし、この学習性無力感(長期にわたってストレスの回避困難な環境に置かれたために、その状況から逃れようとする努力すら行わなくなること)は正しくない。すべてがひどいものである必要はないのだ。

原理的には、コードは形式検証(formal verification)を用いて正しいことを証明することができる 。これはとても困難で、時間もかかり、常に実践するには現実的ではないものである;しかし、長期間に渡って何百万という機械を制御するクリティカルなソフトウェアの話をしているときには、または数百万ドルもの投資を行おうとしている際には、少なくとも考慮すべきものである。

これよりは苦労と厳密さが少なめで、ひいてはより有望なものの1つはlangsec構想だ:

言語-理論的アプローチ(LANGSEC)が関心を寄せているのは、ネットワークスタックや、その他のソフトウェアスタックの全ての階層における、入力の取扱いに対するアドホックなプログラミングが引き起こす、インターネットの非安全性の広がりである。LANGSECは、信頼できない入力を取り扱うソフトウェアを、信頼できるものにするための唯一の道は、すべての正しい或いは期待される入力を形式言語として取扱い、それぞれの入力処理ルーチンを、その形式言語への認識装置であるように取り扱うことだ、と想定している。

…このようなやりかたは着実に現実世界に近付いている。そしてフランスのセキュリティ会社Prevotyのような仲介者に依頼すれば時期尚早ということもない。

前述したように、プログラミング言語自身が大きな問題だ。膨大な経験が明らかにしたのは、プログラマたちにメモリ安全でない言語を使って安全なコードを書くことを期待するのは、現実的ではないということだ(私の昨年の記事「 Death to C(Cに死を)」が書かれたのはそれが理由だ)。しかし希望はある!破滅の予言をしたあと、Andrew Ayerはこのように注意を促している「しかし、私には改善の兆しが見えている。GoとRustはこれまでCで書かれていたようなシステムソフトウェアを書くための注目すべき安全な言語だ」。

最善は善の敵である(最初から最善であることに拘ると、次善にすらたどり着けない)。私たちは現在の不名誉な状態から一足跳びに名誉ある状態に行くことはできない。しかし産業としては、少なくとも進むべき道を設定しよう。まず最初に、より良い言語でシステムコードを書くことへ向かおう ‐ これはセキュリティスピードを改善する筈だ。 そして、ミッションクリティカルなコードの形式仕様記述と検証に向かおう。

そしてレガシーコードとレガシーシステムに捕らわれているときには、もちろん今でもそれが大部分の時間を占めているのだが、それを徐々にでも良くして行くことを学ぶために、プログラミングの原則と基礎に注目し、最大限の努力をしよう。(例えば、JavaやC#のプログラマたちは、私の昔の同級生によって書かれた素晴らしい書籍であるPractice your JavaPractice Your C#を読むことを検討した方が良い)。「ひどい状態」を避けられない事態だと受け入れてはならない。たとえそれが「現在の」状態だとしても。よりよい状態を目指して努力しよう。

もちろん、業界の多くが伝統的なプログラミングから離れて、様々なフレーバーのAIに向かって移行しようとしているのを見ながら、私はこれを書いている。私たちはどのように「畳み込みニューラルネットワーク」をきちんと定義すれば良いのだろうか?そこへ流し込む現実世界のデータに対して、どのようLANGSECを適用すれば良いのだろうか?これらのことを、どのように量子コンピューティングに適用するのだろうか?(もしそんな疑問を抱くのは時期尚早だと思うなら、私の友人のChristineによる、極めてクールな5ビット量子コンピューターシミュレーターをチェックしてみると良い。 Github上でオープンソースとして公開中だ)。

ああ、いや、私は最後のいくつかの疑問に対する答を持っているわけではない。しかし少なくとも問いかけることから始めよう!そしてその間に、従来のプログラミングの修正を最終的に始めることができるように、できることは何でも試みよう。それは非現実的な夢ではない。それは実際に可能なのだ。そして、もしそれを受け入れたなら、すべてが良なって行くことが可能だろう(私はそうなると信じている)。

訳注:本記事の原タイトルは「Learned helplessness and the languages of DAO」というものである。「学習性無力感とDAOの言語」という直訳になるが、「学習性無力感」の方は文中に説明がある。「DAOの言語」の方は古いSFである「The languages of Pao」(アイキャッチ画像の書籍)のタイトルをもじって、最近のソフトウェアバグに起因する有名な事案の「イーサリアムのDAO」と関連付けている。

[ 原文へ ]
(翻訳:Sako)