Ubuntu Scope Showdown 2016に参加したストーリー



2016年1月15日、毎年恒例のUbuntu Scope Showdownコンテストが発表されました ! 参加者は、Unity 8のスコープをゼロから開発し、アプリケーションストアで6週間公開するように求められました(「スコープ」という単語の公式翻訳は「レンズ」ではありませんので、スコープにしましょう)。 過去1か月半で、約15のスコープが開発され、ry審員投票がさらに1か月半続きました(宣言された2週間の3倍)。 その結果、勝者はローマン・シュチェキン、リカルド・シルバ、マイケル・ワイマン、ピーター・エンゲルブレヒトでした。 habrakatに参加した私の経験についてお話ししたいと思います。





アイデア



最初に、Unity 8についての正確な範囲を思い出させてください。

  1. 開発者の観点から見ると、これは作業環境の環境へのプラグインに過ぎません。
  2. ユーザーの観点から見ると、これはスタート画面であり、個々のアプリケーション、いわば、ウィジェットの競合他社を起動することなく、必要な情報にすばやくアクセスできます。




競争に対する私の関心は賞品に惹かれました-鉄の市場価格を備えた素晴らしいネットトップは、私にとってほんのちょっとです。 はい、そしてそのハードウェアはすでに古くなっているので、私は主な賞のために競争したかったです。 電話、コントローラー、その他の小さなもの-素晴らしい、しかしそれ以上。







さて、参加したいのですが、スコープのアイデアが必要です。 繰り返しになりますが、範囲の主な目的は、書店での検索、現在の映画やイベントに関する情報の検索、ソーシャルネットワーク上の画像の検索など、情報の検索であることを明確にします(二次的な目的は、現在の天気の表示や監視など、現在の状態を表示することですリモート仮想マシンのリソース)。 2014年にも同様の競争があったことを思い出しました。アイデアがなかったために数週間を逃し、その後Dota 2のトピックに関するスカウトの作成に関するアイデアを放棄しました(これは私が好きでした)。 過去数年にわたり、私はさまざまなオンラインコースを熱心に研究してきました( https://github.com/open-source-society/computer-scienceで自分自身に関するページに記入しました)。さまざまなソースからMOOCコースを検索します。



ソース



私は、オンラインコース市場の「主要なプレーヤー」が提供する機会、つまりCoursera、edX、Udacity、Udemyを探索することで、私の計画を実現し始めました。 それぞれについて簡単に:



コースラ


しっかりと適切に設計されたAPI。 優れたドキュメント。 一言で言えば-人々に直面しているので、作業が簡単で便利です。ブラウザで直接試すことができます。 JSONを与えると、コンテンツはカスタマイズ可能です。



edX


がっかりする要素が私を待っていました-APIの説明、メソッドの詳細、パラメーターの説明を含む無限のページがありますが、実際には何も機能せず、動作するかどうかは明確ではありません。 回避策として、RSSフィードを使用する必要がありました。 約100のコースがあり、コンテンツは定期的に更新されます。



ウダシティ


良いAPIがありますが、後ほどですが、現在のところ、利用可能なすべてのコースを取得できるリンクは1つだけです。 任意のコンテンツを含むRSSよりもすべてが優れているため、文句を言う必要はありません。



ウデミー


最も便利で、柔軟で楽しいAPI。 ほとんど何でもカスタマイズできます。 私にとってあまり明確ではなかった唯一のことは、なぜ「承認」を台無しにする必要があるかということでした-APIを使用する前に、アクセスキーを取得して、ヘッダーで送信することが提案されました。 サポートが非常に厄介だったので、私はこのキーを最初に受け取ったのが最初だと強く感じました。



その他の情報源


後でiversityとOpenLearningが追加されました。 「富」に関しては、APIはUdacityに非常に近いため、詳細に検討しません。



一般的に、私は満足しました。 情報源は、コースの説明、コースの詳細(期間、難易度など)、画像やビデオ名刺へのリンク、インストラクターに関する情報など、すべての必要な情報を提供しました。 当然のことながら、[情報]は雑多なもので、一部の場所では不完全で、異なった構成でした。 ユーザーが受け入れられる形式で検索、構造化、および表示するタスクも解決する必要がありました。 プロジェクトにCourseExplorerという一時的な名前を付けて、開発に取りかかりました。



ツールキット(および詳細)



Canonicalは、スコープを作成するための特別なツールを開発しました。 物理的には、すべてのスコープは動的ライブラリです。 さらに、競争に近づくと、利用可能な言語ツールのリストが更新されました。数か月前にC ++が唯一の非代替オプションだった場合は、競争の一環としてJavaScriptとGoを使用することがすでに提案されていました。 当然、初心者を引き付けるために、新しい言語と技術に重点が置かれました。 テンプレートの中には「C ++(Qt)」がありましたが、これは経験豊富なQt開発者には喜ばれませんでした。



ここで最初の失望が私を待っていました-テンプレートには「むき出しの」C ++がありました。 Qtを使用せずにC ++でプロジェクトプロジェクトを作成し、違いを確認しました。 結局のところ、QJsonDocumentはQtテンプレートの同じ場所で使用されています。 そしてそれだけです:)「Laaaaadno」、「私たちはラインを曲げます!」 すべての場所でQtを使用し、APIとの対話の場所でのみ純粋なC ++に切り替えることが決定されました。 APIといえば、実際、プロジェクトに3つのエンティティを実装することが提案されました(いくつかの基本クラスから継承)。

範囲

スコープ自体、情報の検索と表示の要求を処理できます。 私の場合、実際には修正は必要ありませんでした。

問い合わせ

スコープの「主力者」は、情報を検索して分類します。 実装は、ソースのクライアントクラスの順次呼び出し(サービスによって返されたデータの解析)に削減されました。

プレビュー

定義済みのコントロールセットを使用して、以前に見つかった特別に構造化された情報を宣言型スタイルで表示します。

ソースコードについて話すことは意味がありません。GitHubですべてを確認できます。



空のクエリの結果の表示を高速化するために、キャッシングが使用されました(公式ドキュメントでは、この使用はサーフェスモードと呼ばれています)。 さらに、ソースによって提供されたカテゴリをスコープの内部カテゴリにマッピングするメカニズムがスコープで使用されました。 場合によっては、ダースのカテゴリを10個に減らす必要がありました(たとえば、文学と歴史は人文科学に帰着しました)、そして時にはその逆もあります-元のソースのすべてのカテゴリに1つの内部カテゴリを使用します(Webデザイン、デスクトップ開発、JavaScriptが1つのIT&技術に統合されました) 。



視覚コンポーネント



ある段階で、自分の開発を市場性にもたらし、正しくタイトルを付け、アイコンを描く必要があることに気付きました。 数分間考えた後、アルファベットの最初の文字でスコープに名前を付けるのがいいだろうという結論に達しました。そのため、OSの基本画面の1つでインストールされたスコープのアルファベット順にソートされたリストの一番上に常にあります。 アカデミーという名前が生まれました。 残念ながら、アイコンはそれほど迅速に処理できませんでした。 私は自分の頭ではなく、ロゴを作成するサービスの1つでアイデアを検索する必要がありました。 軌道に粒子がある原子のアイコンが目を引きました。 多くの人が科学に強く関わっているので、すぐに気に入った。 人気のあるグラフィックエディターで再描画しました。 急いでくだらないことがわかった。 ただし、最初のバージョンはこの形式でストアに飛んできました。 次にアイコンをより徹底的に取り上げ、古いコンセプトをより高い品質で再描画することにしました。 納期のプレッシャーがなくなったためと思われます。 私は本当にこのオプションを止めたかったのですが、幸運なことに、G +で偶然、あるOpenSourceデザイナーの投稿に出会いました。彼はUPアプリケーションのアイコンを描いているだけでした。 私も同様に描くことに同意しました:)これは最終バージョンであり、以下で見ることができます。 私がアイコンのカラーデザインの下に持ってきたインターフェースコンポーネントの残りの部分は、とてもいいことがわかりました。











私のスコープのある時点で、Unityがクラッシュし始めました。 これが私のビジネスだとは思わなかったので、最新の変更なしですべての安定バージョンをテストしました-バグが存在していました。 幸いなことに、Unity 8の開発者とすぐに連絡を取り、問題を発見することができました。 スコープエンジンはまったく同じ結果に正しく応答できないことが判明しました(内部ではすべてのフィールドを比較するため)。 これはedXであることが判明したため、人生を台無しにし、2つの同一の記述を送信します。 簡単なQSetベースのチェックと問題が解決されます。



まとめ



それで、私は参加者フォームに記入し、待ち始めました。 最初はコンテストの終了を待っていましたが、審査員は2週間の投票を計画し、さらに2週間、さらに2週間の投票を計画しました。 率直に言って、私は待つのにうんざりしていました。 この間、アカデミーは最高の評価範囲に入り、いくつかの非常に肯定的なレビューがさまざまな言語で収集されました。ローカリゼーションを使用して、最適化とプルリクエストの処理に徐々に取り組みました。



そして今、勝者の待望の発表。 座席の配分はプロローグですでに発表されているため、すぐに最初に戻って再び勝者を見ることができます。そのとき、Roman Shchekinは私だから喜びにうんざりします!



PS完成したスコープのいくつかのスクリーンショットをここで見ることができます: uappexplorer / academydeveloper.ubuntu.comの結果発表

PSS多分それはクロック上にあるはずです。 読みやすく、ITの歴史などと考えられていました。 批判は大歓迎です!



All Articles