ウィキファンクションズ:概要
- Wikifunctionsの最初の目標はウィキメディアのプロジェクト群のサポートですが、ウィキデータと同様にその先の目標もサポートします。これはウィキペディアの先にあるWikifunctionsの説明です。
- ミッションステートメント
- 誰もが共同でコード関数のライブラリを作成および維持して、ウィキメディアプロジェクト以降をサポートし、誰もが世界の自然言語およびプログラミング言語で呼び出して再利用できるようにするためのウィキメディアプロジェクト
Wikifunctionsは誰でも使用したり貢献したりできるオープンなコードのリポジトリです。
Wikifunctionsは関数で構成されています。関数には、説明、パラメータのリスト、テストケース、異なるプログラミング言語での実装のリスト、および詳細なメタデータがあります。実装は、他のソフトウェアプロジェクト(プライベートアプリやスクリプト)で再利用したり、オンラインで呼び出して実行したり(ブラウザだけ、クラウド環境、Jupyter[1]またはPAWS[2]ノートブックのいずれか)、より複雑な機能を実現するために構成したり、署名、分析、検証したりすることができます。
WikifunctionsはWikipedia、Wikidata、Wiktionaryなどの精神を受け継いだプロジェクトで、世界中の貢献者が関数のライブラリを作成・管理し、誰でもどんな目的にも利用できるようにするものです。すべての関数は、異なるプログラミング言語による複数の実装、テストケース、事前条件と事後条件、ドキュメント、異なる実装に対する実行時間の見積もりと複雑さの保証の形のメタデータなどでサポートすることができる。ユーザーは、ウェブサイト上で直接関数を呼び出すことも、独自のコードやアプリケーション、コマンドラインインターフェース、またはローカルアプリケーションから呼び出すこともできます。関数は、ブラウザでローカルに実行されるか、クラウドで実行されるか、またはローカルでユーザーのアプリケーション内に組み込まれます。
Wikifunctionsは、広く再利用できる定義された関数の共通カタログと、その場で素早く関数を組み合わせて実行できる環境の両方を作ることを目的としています。Wikifunctionsは、開発者にとっては外部ライブラリのようにこのリポジトリに依存することができ、エンドユーザにとっては必要に応じて関数を呼び出すことができるようにすることを目指しています。
サンドボックスでの安全な実行を可能にするため、全ての関数は純粋である。また、すべての実装はメタデータで注釈され、暗号化された状態で署名することができる。エンドユーザーは、利用可能なハードウェアリソースやWeb of Trustの設定に応じて、各機能の実装を選択し、監査することができる。
Wikifunctionsを使うことで、Wikidataなどの大規模な知識ベースだけでなく、バイナリの入出力ファイルにも簡単にアクセスできます。画像を入力ファイルとしてアップロードし、画像に何が描かれているか、画像にいくつの異なる色があるか、または異なるバイナリ(例えば、異なるフォーマット)などの分析結果を返すことは完全に可能です。これはWikimedia Commonsのワークフローで利用できるようになります。
Wikifunctionsは、より多くの計算処理をWebに移行し、以前は利用できなかった機能へのアクセスを民主化するという伝統を継続しています。同時に、「StackOverflow」からの回答を適切にコピーして貼り付けることに依存する代わりに、大規模なコードライブラリを使用できるため、あらゆる場所の開発者の生産性が向上します。
Wikipediaとは異なり、投稿者は既存の関数を更新する代わりに、たいていは関数の新しい実装を作成することになります。実装は、指定されたテストに対して自動的にテストされ、相互にテストされ、さらに分析されます。
実装は多数の異なるプログラミング言語で記述できますが、他のプログラミング言語で実装された関数を呼び出すことはできません。実行エンジンは、異なる言語でスムーズに(必ずしも最高のパフォーマンスを出せるわけではありませんが)動作できます。たいていの場合、単一つのプログラミング言語で関数を構成することでパフォーマンスが大幅に向上しますが、そうする必要はありません。多くの場合、開発の速度と開発者の時間は、実行エンジンで費やされる追加のコンピュータ・サイクルよりも価値があります。