Author Archive

初代iPodのプロトタイプ

土曜日, 10月 23rd, 2021


信じられないことに、iPodが誕生して20周年です。

振り返ると、iPodという製品はそれまでのAppleとはまったく異なるApple — 新しい市場に参入し、その市場でベストな製品を生み出そうとする — そんな企業になった最初期のものだったことがよく分かります。もちろん、それまでのAppleも毛色の違う製品(QuickTake! PowerCD!)などを作っていましたし、競合するポータブルMP3もたくさんありました(”less space than a Nomad“のコメントで知られるNomadなど)。しかし、iPodは業界標準となるようなパワフルさ、「Appleが手掛けたらこうなります」というムーブメントの最初の製品と言えます。それはパーソナルでデザイン性が高く、革新的で存在意味があり、スペックや機能比較表で語られる以上のものでした。正に私たち(私だけ?それとも業界関係者?)が欲しい、必要なものでした。当時、Dave(彼は現在、Playdateのエンジニアとして知られています)がiPodのデータベース保存形式をリバースエンジニアリングし、Audionで対応させたことは本当に良い思い出です。クリックホイールは触り続けてついつい遊びたくなるし、ポータブルハードディスクとして使うことができたのもクールで、本当に素晴らしい製品でした。

さて、誕生20周年を記念して、あるモノをお見せしたいと思います。

謎多きPanicのアーカイブス(又の名をクローゼット)の中でも最も謎に満ち溢れている物の1つが、今回ご紹介する初代iPodの初期プロトタイプです。

どこからやって来たのか?私たちも良く知りません。とにかく、皆さんにお目にかかれる日を20年間、ずっと待ち続けておりました。

ご覧の通り…かなり大きいです!この巨大なケースはiPodの開発最初期に使われていた基盤に合わせて設計されたものと私たちは予想しています。上下左右のナビゲーションのための黒いガッチリとしたボタンがたまりません。

中はどうなっているのでしょう?

見ての通り…かなり小さい!そして無駄なスペース!

明らかに、このプロトタイプの内部ユニットは改訂が重ねられ、製品版とだいぶ近いことが分かります。実際、2001年9月3日という日付は初代iPod発売の2ヶ月前です。

右サイドにはJTAGが備えられており、デバイス上でのデバッグが容易になっています。

飛行機でのフライト中にバッグのジッパーをサッと開け、周囲の視線を意識しながらこの素晴らしいビーストを取り出してヘッドフォンを装着、実際に”ポータブル”音楽プレーヤーとして使う日を夢見続けています。

以上です。物事がそこに到達するまでどういう道を辿り、そしてどこからやって来たのかを知るのは常に興味深いことです。Apple製品でそれを知ることはかなりレアです。

ありがとう!そして誕生日おめでとうiPod!

PS: 私のお気に入りのApple・iPodイースターエッグは第5世代”Video iPod”で追加されました。まだ絵文字がユニコード化される前、著作権情報の一番下に雪だるま: ☃ が表示されていました。ネット検索しましたが、写真はこの1枚しか見つかりませんでした:

些細なことですが、私はこれが大好きでした。往年のAppleらしさ — エンジニアとデザイナーの人間味溢れるちょっとした遊び心 — が大好きでした。もちろん、Appleはそれがプレスに知れ渡ると後のファームウェアで削除しました。時代は移り変わります。(そして私は程なくして、使命感から https://☃.net を登録しました。)最後までお読みいただき、ありがとうございました。お読みいただいた皆さんは Playdate の認証情報画面になぜ、真顔の雪だるまがいるのかご理解いただけるでしょう。

The 2017 Panic Report 〜 2018年によせて

日曜日, 5月 6th, 2018

あけまして(既に第2四半期に突入しておりますが)おめでとうございます。
2017年の私たちについて振り返る時間がやってまいりました!

2017年に私たちが何をしたのか、そして2018年の展望についてお知らせします。

【リリース】

Transmit Transmit 5

2017年の出来事で最初に触れるべきは、みんな大好きトラックアイコンでおなじみTransmit 5でしょう。

私たちは実に、このmacOS用ファイル転送アプリを7年ぶりにメジャーアップデートさせました。ここ数年はCodaの開発に集中していましたので、その間の「取り組むべきリスト」は膨大なものになっていました。実際にTransmitへ取り組み始めると、完了までに2年とちょっと掛かりました。おかげで、私たちが盛り込みたいすべてをこの5.0に込めることができました。更に、この開発においては品質管理と工程管理を徹底しました。その結果、極めて信頼性の高い高品質なアプリを最初からリリースできたと感じています。

改善された箇所は多岐に渡ります: 転送速度や動作スピードが大幅に向上しました。11のクラウドサービスを新たにサポートしました。無料でセキュアな同期サービスであるPanic Syncが利用可能になりました。便利な”インスペクタ・サイドバー”や”バッチ・リネーム”機能などはFinderに標準採用されるべきものです。認証鍵を管理するための優れたインタフェースも準備しました。

その他、すべての新機能をぜひご確認ください。また以下のようなビデオも作成してみました:

 

[youtube https://www.youtube.com/watch?v=8yTG0xy1Fjk&rel=0&w=750&h=422]

 

リリースした後ユーザの皆さまからのフィードバックを集計し、SFTP接続で利用可能な”ProxyCommand” config設定やAmazon GovCloudのサポート、フランス語、ドイツ語、中国語ローカライズの追加などTransmit 5.1でそのほとんどを盛り込みました。

さて一方、macOS用仕事効率化ソフトウェアのビジネス面はどうだったでしょうか?嬉しいことに、私たちの直販サイトのみで販売されているTransmit 5の販売はとても好調で、私たちの収益に余裕をもたらしました。人々はまだまだ、良いmacOS用製品に喜んでお金を払ってくれることが再確認できました。だからこそ私たちはここに居ることができますし、私たちがやりたいことをこれからも行うことができます。

興味深いメモ: 今回のリリースで私たちはリクエストの多かったクラウドサービスのサポートを追加しました。素晴らしいことですが、QAに指数関数的な負担(接続タイプ × 個々の機能 = 膨大なテスト工程)を強います。ですが興味深いことに、最もポピュラーな接続タイプは常にSFTPで、セキュアでないFTPがなんとそれに続きます。匿名の統計情報をベースに作成したドーナツグラフから、接続タイプ別の割合が見てとれ、とても興味深いです。

紫や黒の部分は何でしょう?その他のすべてのクラウドサービスの総計です。それらをサポートする価値があった、と私は将来を踏まえ信じたいと考えています。ユーザの皆さまも、今後どのプロトコルを使用していくか厳選されることをお勧めします。

今回のリリースに関して特に酷いヘマはやらかしていない認識ですが、いくつかの苦労がありました。私たちは多くのユーザが、Transmitが現在何を転送しているかを最も知りたい情報だろうと考え、アクティビティウインドウをシンプルにデザインし直しました。しかしながら保留中の項目をより細かく管理する必要のあるお客様が一定数おられ、必要とされている機能は失われてしまいました。将来のバージョンでより良いものにすることをお約束します。またTransmit 4ユーザからは、Transmit 5へアップグレード価格での販売が無いことにガッカリされたとのご意見をいただきました。既存製品のお客様に割引価格を提供するのが私たちのこれまででしたが、7年間無料でアップデートを提供してきたことよりも、割引価格の方が価値があるでしょうか?(興味深いことに、ご意見いただいたほとんどの方が7年前からのユーザでした。)最後に、新しい同期ツールバーアイコンが理解できないと何件かお問い合わせいただきました。元々は  で、現在は  です。ツールバーには他の機能のための  があり、また  もあります。矢印ばっかりなので変更しました!

しかしながら全体的に、本当に穏やかでスムースなセーリングとなりました。
そしてもちろん、私たちはより進化させるための努力を続けます!

この度Transmit 5をお求めいただいたすべての方に、Panic一同より感謝申し上げます。また多くのフィードバックをお寄せいただきありがとうございます。最後に、本プロジェクトをリリースまで先導したWadeとWillはもちろん、関わったすべての社員の素晴らしい仕事を称えます。

【速くなりました?】

私たちは事あるごとに”より速くなりました!”と言います — 特に理由や根拠も示さずに。そこで今回、Transmit 5を速くするために何を行ったのかを双子の兄弟エンジニアWadeとWillに聞いてみました。— Transmit 5をもっと速くするために何をしましたか?

ご興味ある方はテクニカルなこちらの回答をどうぞ!

   ////////
  //    //  P A N I C
 ////////   E N G I N E E R I N G
//

Transmit 5に取り組み始めた時、私たちはスピードとクラウド(Transmit 5で新たにサポートされたすべてのクラウドサービスをご存知ですか?)を重要視しました。サポートするクラウドサービスを追加していくことは単純な作業でしたが、速度を向上させることは少々抽象的な作業です。私たちは改善できる明確な領域とそうでない領域を発見し、問題を根本から解決することにしました。

最初に着手し、また同時に、最も明白な変更は大きなファイル転送時における階層処理でした。以前のバージョンのTransmitでは、まずファイルのグループとフォルダの転送をし始め、個々に接続を確立して上位階層の項目からサーバに転送していましたが、フォルダと内包する項目も1スレッドとして処理されます。この方法は複数のフォルダを転送する場合にうまく機能しましたが、1つのフォルダを単に転送する場合でも内容に関係無く1スレッドしか使用されません。今日のインターネット接続は高速で、デバイスはマルチコアです。このような環境においては可能な限りすべての転送をマルチスレッド化する必要があると感じました。Transmit 5ではほとんどすべての転送で利用可能な最大接続数が使用されます(1部のクラウドサービスではAPI呼び出し量に制限があるため、2接続に限定しています)。これにより、複数の項目を含む1つのフォルダ転送時の速度が劇的に向上しました。

これだけでも大きな改善でしたが、私たちはこれに止まりませんでした。

古くからのTransmitユーザは私たちがTransmit 4でデュアル・プログレスバーを導入したことをご記憶かも知れません。この特許取得レベルのクールな転送状況を知らせるためのバーは、転送の全体と現在進行中のファイル転送の両方を単一のバーで表示することができました。これは転送状況をユーザに示すのに威力を発揮しましたが、サイズを転送前に計算する必要があったため、その分の遅延が生じていました。いくつかのケースではTransmitがサイズ計算を行う時間よりも先に、転送自体が完了してしまうことを発見しました!Transmit 5では全体のサイズ計算をダイナミックかつ非同期に行うため転送は即座に開始され、状況もプログレスバーで確認いただけます。

バックエンドを完全にマルチスレッド化したところで、私たちはストレス度の高い転送下で、ちょっとした挙動の引っかかりに気付きました。数ギガビットのイーサネット上で何千ものファイルを数秒で転送すると、内部的に多くのメッセージが送信されています。プログラミングについて知っている人であればメインスレッド上でUIの更新を処理する必要があることをご存知と思いますが、ユーザからの入力もそのスレッドで処理する必要があり、そのスレッドがメッセージで溢れている状態だと結果として動作が重く感じられる場合があります。これは進行中の更新を常に行なっていたためでした。私たちは接続スレッドから更新を収集して冗長なメッセージは統合し、メインスレッドへの配信を一括してUIを更新する軽量なメッセージキューを開発しました。これにより多くの不必要な転送状況の更新やバッチ処理が削減され、メインスレッドが更新サイクル毎に実行する作業量を微調整することができました。同様に、様々な接続クラスからの2番目のレイヤーメッセージもメッセージキューに追加し、内部メッセージの量を削減しながらも高いパフォーマンスとレスポンスを維持することに成功しました。

私たちはTransmitのパフォーマンスのあらゆる側面を改善しようとする絶え間のない努力の中には、メモリ使用量に関する改善も含まれていました。結局のところコンピュータは、メモリが常にディスクにページングされていると重く感じられます。そのことから私たちはメモリ使用量を分析しました。すると驚いたことに、多数のディレクトリリストを解析する際にNSScannerは非常に大量のメモリを使用していました。私はすぐにメモリの膨張を解決するためのAPI互換の代用コードを書き、その結果パフォーマンスも向上させることができました。まさにWin-Winというやつです。このような改善により、非常に多くの数量のファイル転送を処理する方法が再構築されました。現在、Transmitを使用して数ギガバイトのファイルを転送してもメモリ使用量は安定したままです。

バックエンドシステムのパフォーマンスがハイレベルとなった後、私たちはUIに着目しました。プログレスバーを頻繁に描画しアニメーションさせると、CPU使用量をかなり必要とします。Transmit 4では転送リストを表示させた状態で転送を進行させると、CPU使用率がスパイクします(それについてご指摘いただいこともありました)。ラッキーなことに、Transmit 4のリリース後にコンピュータの世界でいくつかの変化がありました。UIのデザイントレンドはシンプルでフラットなものになり、これは描画作業が大幅に少なくて済みます。さらに高パフォーマンスなレイヤーベースの描画サポートも提供されています。私たちはプログレスバーをCALayerベースに書き直し、CPUオーバーヘッドを大幅に削減しました。 これらの最適化によりメインスレッドは他のタスクの処理のため十分な余裕を持つことができ、全体としてキビキビと動作するようになりました。

Transmitで行える作業のすべてのスピードが大幅に向上しました。 劇的に高速となった転送速度のみならず、アプリ全体に渡ってさまざまな内部作業の恩恵によるものです。あまりに速く転送が完了するため、壊れているのでは?と感じられることさえあるかも知れません!Transmit 5のリリース後、実際にそのような声をユーザの皆さまからいただきましたが、その背景にはこれらの改善がありました。-Wade

これによりPanicのリリースノートで”• より速くなりました!”と言う箇条書きを見つける度にあなたは、私たちが実際に何をしたのか、ご存知と言えるでしょう。

【アップデートとサポート】

続いてQAやリリースプロセスを管理しているAaronに、私たちのリリースとサポートがどうであったかを聞いてみましょう。Aaronどうだった?:

2017年、私たちは39のソフトウエアリリースを行いました。これらのリリースのすべてが必要なもので、テストされそのテストをパスし、承認され配布されています。小さなチームにも関わらず、素晴らしい成果です:

2.6.1 2.2.4 2.6 4.4.12 5.0b1 1.3.2 4.4.13
2.6.2 2.2.5 2.6.1 4.4.13 5.0b2 1.3.7 5.0
2.6.3 2.2.6 2.6.2 5.0b3 1.3.8
2.6.4 2.2.7 2.6.3 5.0b4 1.3.9
2.6.5 5.0b5  ☠?
2.6.6 5.0b6
2.6.7 5.0b7
2.6.8 5.0b8
2.6.9 5.0
5.0.1
5.0.2
5.0.3
5.0.4
5.0.5

QA改良されたQA

2017年はさらに、内部組織とQAプロセスを大幅に改善した年でした。

GitLab の新機能を使用してテストドキュメントを再整備し、ポートランドと日本オフィス間の調整をより良くする新しいリリースワークフローを公式に採用しました。

またTransmit 5の開発中、テストと検証のための以下の新しい内部ツールが作成されました:

Fig • macOS構成プロファイルのすばやい構築、スナップショット作成、およびデプロイ
Hydra • Panicの認証済みファイル転送テストシステム
Pug • ローカルプロジェクトとその依存関係をすばやく更新するコマンドツール
Vanderbilt • コマンドラインもしくはGUIで提供されるPanicアプリダウンロードツール。ビルドを指定してブラウズすることが可能。

現時点で特に、これらについて詳細をお知らせするつもりはありませんが、もし興味がありましたらお知らせください。将来のブログでそれらについて書くかも知れません!?

Help改良されたユーザヘルプ

社内用に作成したツールに加え、ユーザフレンドリーな新しいリソースについてぜひご紹介したいです。まずひとつ目は Acorn 5’s Live Help Searchにインスパイア(私たちの古くからの友人Flying MeatのGus曰く、”もしあなたがMac appを作っているなら、このアイディアを盗んでください。”とのことだったので、実際にそうしました!)された、ダイナミックなPanicヘルプライブラリです。

ライブヘルプ機能は、あなたのアプリ内から以下のように動作します:

検索しようとすると、その文字列に該当するライブラリ記事をリアルタイムに検索して取得します!つまりアプリケーションを更新することなく、私たちは常に新しいドキュメントを追加することができます。これによりユーザは常に最新のサポート情報を取得することができ、またユーザが最新の情報に触れることは結果的に私たちのサポートの助けにもなります。現在はアルファベットでのみ検索が可能ですが、将来日本語でも検索できるよう改良を続けます。

Videoチュートリアルビデオ

昨年末から年初にかけて、Transmit 5のチュートリアルビデオをデビューさせました。何年も前から、ソフトウエアのクールなトリックやヒントを紹介するためのビジュアルな方法を模索していましたが、Christaの登場でついに、それが可能になりました。

以下のビデオはプレイス機能について教えてくれます…

 

[youtube https://www.youtube.com/watch?v=bb2K8GTR45c&rel=0&w=750&h=422]

 

…また、ファイル同期機能の利用方法は…

 

[youtube https://www.youtube.com/watch?v=S7FSlGsJtZc&rel=0&w=750&h=422]

 

…などなど、沢山のビデオが準備されています!
ぜひ私たちのYouTubeチャンネルをご登録ください!
(ついに言ってしまいました。。)

皆さまにリクエスト: 今後のビデオで紹介するべきトピックがあれば教えてください。

以上のこれらは、Panicを動かし続けソフトウエアをリリースし続けるための真のエンジンです。私たちのプロセスは年々大きく改善し続けています。 また私はAaronの絵文字好きなところが大好きです。

【サービス】

私たちのビジネスのほとんどの部分を占めるにも関わらず改まって言及することがこれまでなかった領域: それはデータの同期を支え、決済処理を行うバックエンドサービスです。ここではPatrickに登場してもらい、2017年がどうであったかを聞きましょう:

数多くの見直しや掘り返しを行い、ひとことで言うと私たちのWebストアを近代化しました。

これまで20年間にわたり、私たちのWebストアはPOD – Panic Order Databaseと呼ばれるカスタムPHPアプリケーションによって駆動されていました。それはソフトウエアのみならず物理的な商品の販売やアクティベーション、Codaのプラグイン等々あらゆる種類の販売を処理するため、時間の経過と共に肥大化してきました。よって2017年、より柔軟で近代的なものにするための修復が必要である、と判断しました。

Panic SyncでのDjangoによる素晴らしい経験を踏まえ、注文システムをDjangoアプリケーションとして書き直し、機能ごとに切り出して少しずつ移行させていき、ほぼすべてのバックエンドがDjangoベースに置き換えられました。テスト、コードカバレッジチェック、Python 3.6のタイプヒント、その他の素晴らしいツールの改善が完了しました。

また、2ファクタ認証をサポートしたPanic Sync 2.0もリリースしました。新規ユーザ登録が集中 – 短期間に10,000以上の新規登録がありましたが、処理することができました(さらにお伝えすると私たちのfirewatch.cameraプロジェクトは引き続き稼働しており、54,000ロール680GB以上のゲーム内写真をホスティングしています。)

以上の通り、私たちは自身のWebサービスのほとんどをDjangoによって移行させ標準化しました。Python 3.6とDjango 2.0は優れた開発者体験とモダンなツール群、そして長期に渡る安定性を提供します。Instagramで十分であれば私たちにとっても間違いなく十分です!

これらの変更は引き続き進行中であり、私たちのすべきことの大部分です。

【インフラ】

引き続きPatrickに説明してもらいましょう:

誤解を恐れず声を大にして言いたい、Panicのコアバリューはインディペンデントであることだと。そしてWebサービスにおいても同じことだと。もちろんAWSやHeroku、DigitalOcean等々彼らは価値あるサービスを提供していますが、自社のサーバやインフラでサイト構築することをお勧めします – 私たちの製品のお客様と同じように。誰しもにノウハウや興味、努力と根性があります。手を動かしてやってみましょう![Thank you Patrick! — Noby]

昨年からJamesはPittockビル(オレゴン州ポートランドのPanicオフィスから数ブロック)に設置されているハードウエア群を忙しくアップグレードするだけでなく、ほとんどのサーバを共有し、仮想化されたホストクラスタ上で実行できるように再構築し、Ansibleによって設定と管理を可能にしました。Gitlabを使用して、私たちはすべてのサイトを継続的にデプロイし、最新のWeb開発のベストプラクティスに沿ったものにしています。

これらの改良が非常に高速で安定していることが分かったので、すべてのPanic SyncをHerokuから自社インフラに全面移行しました。脊髄反射したくなるその前に – どうかご安心ください。お客様のデータはセキュアに守られています。私たち自身も読めない方法で皆さまのデータは暗号化され格納されています。詳しくはぜひ改めて、Panic Syncページライブラリの記事をご一読ください。

さらにセキュリティについて言及すると、私たちは内部的な暗号化ゲームを稼働させました。現在、すべてのソースコードのやり取りには2ファクタ認証が必須で、秘密鍵はYubikeyかKryptonに格納されている必要があります。私たちはエンジニアリング部門とは別に、セキュリティをより深めたいと考えています。ご興味がありましたらぜひコメントをお寄せください。

とのことですので、もしご質問等ありましたらぜひお知らせください!

【成功】

2017年の誇るべきこと:

  • 良いソフトウエアを出荷することができました。もちろん私たちはまだ完璧ではありませんでしたが、本当に質の高いものを作りました。Transmit 5はUIをモダンにし、膨大な新規機能や改良を搭載してスピードも向上させ、それを沢山の人が購入してくれるという非常に堅実なリリースでした。 これをうまくやり続けることができれば、私たちはまだしばらくここにいることになります。
  • Webを楽しめています。Transmit 5の製品サイトはWebGLによる魔法により本当に楽しいものになりました。Little Workshopがケンイチの3DアイコンをWeb上でスムースに動かすための作業を行ってくれました。(私たちの”ページをスクロールさせたらトラックの視点角度も変えたい!”というリクエストもあっさりと対応してくれました。)さらにAppleのDeanがSafariのパフォーマンスを向上してくれたことにも感謝申し上げます。クレイジーな製品ページを実現することがSafariの全面的な改善に繋がるなんて、いいサインだと私は思います。
  • サポートもより良くなっています。Panic Libraryを含むここまでご紹介した数々の改善に加え、お問い合わせへのお返事までの時間は短く、そしてお返事内容は正確で有用なものによりなったと考えています。これは人々が私たちから何かを購入する際の指標になると考えています。(さらに、失敗があればすぐの解決に務めます!)
  • 作業エリアを拡張し、木を植えました。もうちょっとで完成です。

【チャレンジ】

スムースに行かないことも数々、ありました:

  • iOSについて。再び、常に。私たちはiOS用仕事効率化アプリを成功させる方法について、その秘密をまだ解明できていません。(実際は正反対で — 私たちは販売不振を理由に、ポータブルなファイル転送クライアントであるTransmit iOSの販売を終了させました。)このことについて毎年話していますが、今年こそクラッキングに成功する年にしたいと期待しています。その間、投資し続けることを正当化できているiOSアプリであるPromptとCoda iOSのアップデートに専念します。
  • 受けた苦難のその後。ブログで以前お知らせしましたが、とても辛い出来事でした。ここで2つの小さなアドオンがあります: ブログですべてを公開した後、ピタリと攻撃者からの連絡が途絶え、現在まで一切ありません。また捜査は驚くべき早さで進んでおり、現在も進行中です。
  • エンジニアが足りません。“すべてのアプリに常にエンジニアを割り振る”という私たちの夢は逼迫した状況です。iOSアプリの収益が低いと成長の余地があまり無く、また更新のためにジャグリングをし続けなければならない状況です。しかし募集するタイミングです。ご興味ありましたら続けて「Hiring」のセクションをお読みください。
  • まだまだプロセスに改善の余地があります。より具体的に機能やリリースを定義し、コードが書かれる前にUIデザインの準備が整うよう(デザインプロトタイピングを含む)、前もって考えておくことはちょっとしたことの様ですが、より良くなると私は考えています。
  • 収益の確保について。 どれくらいの期間、人々は固定価格のmacOSソフトウェアを受け入れ購入するのかについて私たちは議論を続けています。魅力的な機能を満載した「メジャーアップデート」を提供するのではなく、頻繁で絶え間無く改良し続ける土台となるサブスクリプション販売を検討する必要があるでしょうか?多くの人々が多くの正当な理由により、サブスクリプションという方法を気に入らないことを知っています。2018年を通して、我々はこれについてさらに研究をしなければなりません。

【Q&A】

私はTwitterで質問を募集しました。ここでお答えしましょう!

 Prompt for macOSの計画はありますか? —Lukas and Josh and Mike etc.
常にそのアイディアについて私たちは話しています!具体的に動き始めてはいませんが、良いアイディアだと考えています…

 Campo Santoの次回作も関わり続けますか? —Michael
いいえ。Campo SantoがValveに加わったとのニュースをすでにご存知かも知れません。私たちが提供できる範囲をはるかに上回る規模でビジネスを営みながら、ゲームを作ることに集中できるでしょう。私たちは本当に楽しんでいたので、率直に言うと少し辛いです。しかし彼らの新作をプレイすることが今から楽しみです。試合をするのを待つことはできません。 そしてもうすぐ、私たちはパブリッシャとして2番目となるゲームを発表します!

 最近のステキなビデオには誰が関わっていますか?また制作期間はどれくらいですか? —Dave
Christaです!彼女はエンジニアやサポート、QAから情報収集してビデオのゴールを決定し、スクリプトを書いてAfter Effectsによる編集とアフレコのすべてを行ってくれています。(私もいくつかのコピーを書き、BGMを作曲しています!)制作期間は… 1週間くらいでしょうか?

 お気に入りのシャツが傷んできました。ふたたびTシャツを販売する計画はありませんか?? —Mike
グッドアイディアです!新しいPanicシャツをリリースするべきです。2018年にそうします。

 Verso for BeOSの計画はありますか? —Chris
よく… ご存知ですね。Panicのトリビアです… Verso, geez.

 難しいかも知れませんが、オフィス見学ツアーの計画はありませんか? —Joan
基本的にOKです。その日の予定や状況によりますが、私がオフィスにいる時であればば可能と考えていますTwitterでスケジュールを訊ねてもらうのが良いかも知れません!

 キャンセルされたプロジェクトがあったらそれについて教えてください —kmikeym
私たちはかつて、非常に洗練されたインタフェースのiOS用音楽共有サービスアプリ、その名も… Audion(冗談じゃありませんよ!)をキャンセルしました。音楽版Instagramのようなサービスです。少なくとも1つの独創的で素晴らしい特徴的なUIがありました。いつかお話ししましょう。

 ? Transmit for iOSに関して、アップデートや変更はありませんか? —Fred
ちょうど下記についてスタートしました: Transmit iOSの機能をCoda iOSにもたらすべきか?またその方法は?それについて実現するとき、Coda iOSにとって非常に大きな変更となるでしょう。ご期待ください。

 私はTransmit 5をDropboxのメインインタフェースとして使用しています。問題ありますか? —Kyle
まったく問題ありません。本当にTransmit 5はパワフルですからね。ちょうどそれについてのビデオも制作しました!

 私だけかも知れませんが、ここ寒くないですか…? —Ashur
Ashur。。うん、今は外が暑いんでしょうね。ほらまた冷房が動き始めた。オフィスの冷暖房システムは常に寒すぎるか暑すぎるかであると認めます。多分、次のボーナスは何か羽織るものにしましょうか??? [従業員であるAshurとの#planet-hoth Slackチャンネルでのやりとりより]

【これからについて】

アプリの開発と保守に加え、大事な以下のことがあります:

Firewatch for SwitchFirewatch for Switch

今年の後半をお楽しみに!

A Second GameA Second Game

もうすぐ、私たちがパブリッシャを務める次のゲームをお披露目します!Firewatchに続く第2弾は他のスタジオによる新しいゲームタイトルです。このブログや私たちのツイートにぜひご注目ください。

Coda NextCoda Next

素晴らしいニュース!次期バージョンのCODA®の開発は順調です。本プロジェクトに関して現時点で共有できるいくつかのことをお知らせします。

私たちがCodaを最初に開発し始めた頃と比較すると、Web開発業界では非常に多くの変化がありました。そして競争相手はとても優れた(しばしば無料の)ツールたちです。

追いつくために劇的な一歩を踏み出す必要がありました。これを私たちはCoda Nextと非公式に呼んでいます(今日のCodaからは本当に劇的に変化しているため、完全に別ブランド化する可能性さえあります)。イチからmacOS版Codaを書き換えました。過去から学んだこと、私たちが日々行なっている近代的なWeb制作ワークフローから学べること、そしてユーザの皆さまから学んだすべてを取り上げ、再定義し未来のCodaに盛り込んでいきます。最先端のワークフローはもちろん、作業を簡単にするための機能、軽量で自由なデザイン、そして最も重要な100%macOSネイティブコードによる、素早く堅牢な動作が期待されます。これは巨大なアップデートになります。

では実際にどこまで開発が進んでいるでしょうか?“エディタのコア”部分の開発をちょうど完了しました。Coda Nextの基本となるエディタ部分です。Coda iOSをベースとした新しいエンジンです。多くのリクエストをいただいているマルチカーソル編集機能やミニマップ機能も搭載されています。私たちはここまでに満足しており、すでに多くの人たちが日々の作業のため、内部的に使用されています。

Codaとは単なるエディタに止まりません。いくつかの機能は残されるでしょうし、ある機能は別のアプリに移行されるかも知れません。あらゆるすべてについて、再考しています。

私は発売日を事前に決定し開発することははるか昔に止めたので、今回もそうしません。仕事は急速に進んでいますが、まだまだたくさんのことをしています。皆さんにお見せできるその日を、私は興奮し楽しみにしています!

Hiring採用について

非常に稀なことがPanicで起こっています: 新たな仲間を増やそうとしています。2018年の成功のために必要なことです。あまりに大切なことなので <blink>タグで言います: we’re hiring soon!

これからの数週間、採用ページに注目ください。(公開したらツイートします。)

もしステキな街でクールなソフトウエアを書くいい感じの仕事をお探しでしたら、ぜひ。

(我ながら<blink>タグのアイディアは酷いですね。ごめんなさい。)

Miscその他

ここ数年に渡って取り組んでいるプロジェクトも継続しており、2018年中に2つの驚きをお届けできると期待しています。

【謝辞】

私はちょっと感傷的になりながらこの記事を書いていますが、私たちが日々楽しんでいることを継続できるのは本当に驚くべきことで、皆さまのおかげです。最近Panicステッカーを無料で提供したところ、素敵なカードやお手紙をたくさんいただきました。このような偉大なお客様やファンを持つことができ本当にラッキーです。 Transmit 5やFirewatchのようなゲーム、あるいは何十億年か前の塊魂Tシャツなど、私たちが作ったことが皆さまにご支持いただけたことは、計り知れないほど私たちの助けになっています。またそれらのことで、私たちはあなたの人生がちょっとでも改善されることを願っています。

Panicの日々の活動やニュースについては Twitter(英語)をフォローするか日本語のツイートはこちら)またはメーリングリストにご登録ください!お知らせします。

Coda 2.0.7 Beta 1

金曜日, 4月 18th, 2014

Coda 2.0.7b1  (51MB).

UPDATE 12/10: ご協力ありがとうございました。直販版がリリースされ、Mac App Store 版は Apple に申請されました。

主な変更点: 動作速度と安定性の全体的な向上。

もし不具合を見つけられた場合は、私たちのバグトラッカーである Hive にログインしてレポートをお願いします!(開発担当が直接閲覧しますので、すべて英語でご入力ください。)

PS: 引き続き Twitter 経由で、まもなくリリース予定の iCloud および Dropbox 経由でお気に入りを同期する Transmit とまったく新しい iPad アプリケーションのベータテストを募集しておりますので、ぜひご協力ください!

Coda and Sandboxing

金曜日, 4月 18th, 2014

Mac App Store版の Coda 2 に新機能を追加する前に、我々はそれを“サンドボックス化”しなければなりません。Apple は OS X のセキュリティ向上を目的としてガイドラインに定めています。

それは何を意味するでしょうか?

サンドボックス化されたアプリケーションは、ユーザから明示的に許可が与えられるまでローカルファイルへのアクセスが限定されます。許可を与えるとそれは記憶されます。Coda で言い換えると、ユーザから許可を与えられるまで、一般的な選択ダイアログからであってもローカルファイルを参照することができなくなります。また Coda には“サイト”という設定があり、その設定にはローカルパスが含まれています。この設定でもまず、最初にローカルファイルへのアクセス許可を明示的に与える必要があります。これはバッドニュースでしょうか?既存のサイト設定のすべてで再度ローカルパスを設定する必要があり、サイト設定を使用しない(そんなユーザは居ないと思いますが)場合、都度、アクセス制限に作業が中断されることが予想されます。

これらの変更は Mac App Store 版のみです。直販版では変更ありません。

以下、相違点を詳しくご説明します:

1 ローカルルート

サイト設定の “ローカルルート” がリセットされます。初回の設定時にアクセスを許可するか訊ねられます。

この設定は初回の1度きりです!

2 フォルダに移動

プルダウンメニューから直接フォルダに移動することはできなくなり、従来の “選択パネル” が現れます。

3 パスポップアップ

サイドバーおよびファイルブラウザから利用可能な “パス” ポップアップですが、定義されたローカルルートより上位の階層は表示されなくなります。

サイト設定を利用していない場合、サンドボックス化されたホームディレクトリが表示されます。継続する為には他のフォルダを選択します。

フォルダ選択操作は初回の 1度きりです!

4 パスバーブラウザ

ローカルルート設定外のフォルダを選択しようとすると、アクセスを許可するための選択画面が現れます。

フォルダ選択操作は初回の 1度きりです!

5 ファイルの保存

書き込み権限の無いファイルを保存できません。またこれを回避する方法も Coda から提供することができません。

これは、書き込み権限を一般的に付与しない Web ページを含む、すべてのファイルに適用されます。

Mac App Store による制限です。

6 情報を見る

Coda の情報を見るウインドウから、アクセス権の変更を行えなくなります。

編集する前にあらかじめ Finder の情報を見るウインドウで変更してください。

Mac App Store による制限です。

7 場所(プレイス)

サイドバーの“場所(プレイス)”のローカル設定がすべてリセットされ、再定義が必要です。

NOTE: 本設定はコンピュータ毎に定義されています。そのためコンピュータ毎にリセットと再定義が必要です。

8 SVN と GIT

ツールパスのリセットと再設定が必要になります。

以上です。いかがでしょうか?

これらの変更をご体験いただくために、Coda 2 のスペシャルビルドを準備しました。

実験スタート

サンドボックス化された Coda をお試しいただく前に、このビルドが実験版でベータ品質であることをご理解ください。必ず、システム全体のバックアップを準備してからお試しください。

また、現在 Coda 2.0.6 以降の Mac App Store 版をお使いいただいている必要があります。またこの実験版を起動する前に、Coda 2 の iCloud 同期機能をオフにしてください。

実験版をダウンロードするにはここをクリックしてください。(50 MB .zip)

お試しいただけましたら、ぜひご意見をお聞かせください。サンドボックス化された Coda 2 がほとんどのユーザ様にとって大きな影響が無いことと予想していますが、皆さんの率直なご意見をお聞かせください(開発担当が直接閲覧しますので、すべて英語でご入力ください。):

[polldaddy survey=”CE7F658FF4C50ABA” type=”button” title=”Take Our Survey!” style=”inline” text_color=”000000″]

最後までお読みいただき、また Coda 2 をご選択いただき、ありがとうございます。サンドボックス化された Coda 2 をご紹介できることに興奮しており、新しく、素晴らしいものになるよう開発を続けます!

iTunes 11 and Colors from Wade

金曜日, 4月 18th, 2014

iTunes 11 は以前のバージョンから大きく変わりました。新しいアルバムディスプレイモードはその最たる機能です。この新しい表示スタイルは、アルバムのカバーアートと視覚的にマッチしたトラックリストを生成して表示します。その結果、文字もアルバムのアートワークとシームレスに統合され、とても魅力的です。

iTunes を1日使ってみてふと、この機能  あるイメージを元にイメージとテキストテーマを生成する  を実装することは、どの程度大変だろうか?と考えました。

iTunes テーマのレプリカを作成する第1歩は明白で、トラックリストの背景色を取得することです。これは単純にアートワークの左端で最も使用されている色によって決定されています。色をカウントして抽出すると良い結果が得られましたが、iTunes では明確に、それ以外の何かがあります。最も使用されている色が黒か白の場合、ちょっとしたロジックを背景色に加えてみました。単なる黒や白の背景は単調で退屈なので、これによりちょっと面白いスタイルになりました。もちろん、ほとんどが黒もしくは白で支配されている場合はそのままで、少なくとも 30% はデフォルトの黒もしくは白と共通でした。

黒と白の背景をフィルタリングし始めると、だいぶ iTunes に近づいてきました。さらに分析を進めた結果、iTunes はアートワークの周りの枠を認識していることに気づきました。アートワークの周りに白い枠があると iTunes はそれを取り除き、内側の色をテーマのベースにします。私の最初のシンプルなデモアプリケーションではこの機能を含めていませんでした。

背景色が決まれば、次は背景色と対照的なテキスト色を見つける番です。再び、とりあえず色数をカウントして求めると中々の好結果が得られましたが iTunes の方がベターです。使われている頻度でのみ求めると、異なるタイプのテキスト(例えばプライマリテキスト、セカンダリテキスト、詳細等)で同じ色のバリエーションが使用されることになります。結果を改善するため、次に私は個々のテキストの色について確認しました。選ばれた背景色上で常に美しく表示されるテキストの色を決定するアスペクトを求めるには何が必要でしょうか?カラフルなテキストを確実にするため、私はテキストに使用される色が最小の彩度レベルを持つかどうかを確認するちょっとしたコードを加えました。これによってアピアランス的にベストではない白っぽい色や明るすぎるパステルカラーの使用が防がれました。これでテキストは背景に合う美しくユニークな色になりました。唯一残る問題は、判読に十分な背景とのコントラストが得られないかも知れないということでした。なので最後に、判読が十分可能かどうかの為の背景色とテキスト色のコントラストのチェックを加えました。あいにく、これによってテキスト色を見つける際、デフォルトの黒や白が使われるミスをまれに引き起こします。

最終的には以下の様になります:

これは iTunes と 100% 一致しません — が、時々こっちの方が良いです!異なる場合もありますが、全面的によく動作します。

以下の Xcode デモプロジェクトで実際にお確かめください:


このデモについていくつかの注意があります。私はランダムな色がテキスト色として現れるのを防ぐため、基本的な周波数フィルタリングを行いました。私のケースでは 1回しか現れない色を無視しています。小さすぎるイメージではサンプリングに十分なピクセル数を持たないので、このしきい値は入力されるイメージサイズに基づくことが望まれます。iTunes が行っているその他の加工テクニックとして、もしこれが出荷レベルのコードだとしたら私もしますが、イメージ外周の縁取りを見つけ圧縮しています。いくつかのカバーアートイメージには、色をサンプリングする前に無視されるべき 1ピクセルの白もしくはグレーの縁取りがあることに私は気づきました。

(このコードは数時間で書かれとても荒いです。なので速度や最適化について考えがあれば、これがアルゴリズムデザインのレッスンというよりも考察であることに注意してください。エンジニアは免責です。)

ちょっとでも楽しんでいただければと思います!少しのコードで高度なテーマデザインを得ることについてのお話でした。

アップデート: Aaron Brethorst 氏に感謝。コードは GitHub からもご入手いただけます。

[原文]