【重要】学習・開発で必ず確認するべきOSS
はじめに
今回の記事では、プログラマーが学習・開発を円滑に進めるために知っておきたいOSSを紹介する。特に開発されているアプリケーションに焦点を当てて紹介する。今回の記事では、主に著者の得意分野や興味のある分野に絞って確認するべきGitHubリポジトリを紹介する。
紹介する分野は主に以下の通り。
- Web
- Android
- Flutter
学習・開発でOSSを使うメリット
プログラマーが学習・開発でOSSを使うメリットは以下の通り。
- ソースコードを通して、開発したいアプリケーションの具体的なイメージや自分に足りないもの(必要な知識や言語等のスキル)を理解できる
- 自分が普段学習・開発で使っている言語の活用事例を確認できる
- アプリケーションの構造や開発フローを理解できる
確認が必須であるWebサイト
OpenSourceAlternative.to
世界中のオープンソースのアプリケーション(特に有名なサービスやアプリケーションの代替サービス)を並べたWebサイト。OSS開発に興味があるなら絶対に確認するべきである。400以上のものがあり、ジャンルごとに検索できるので自分のニーズに合ったアプリケーションを見つけやすい。
opensource.com
世界中のオープンソースのアプリケーションをまとめたWebサイト。OSS開発や貢献で重要な原則や具体的なテクニック、注意事項がy丁寧に解説されている記事が豊富である。OpenSourceAlternative.toとセットで必ず確認しておきたい。
Clone Wars
世界で有名なアプリを模倣したアプリとそのソースコードをまとめているWEBサイト。(例:YouTube、Slack、Discord、Spotify、Whatsappなど)
似たような機能のアプリを開発したいなら絶対に確認するべきである。
Web
strapi
JavaScriptで開発されたNode.jsのCMS。CMSはContents Management Systemの略称で、誰でも簡単にWebサイトを作成し、コンテンツを配信できるようにしたものだ。OSSで公開されているので、自由自在にカスタマイズできるのが最大の特徴である。
Medusa
Eコマースサイトを制作できるWebサービス「Shopify」の代替サービス。TypeScriptやJavaScriptで開発されている。自分でEコマースのサイトを作るときに最もオススメできる。コードでUIやEコマースのシステムを自由自在に変更できるので、カスタマイズ性が非常に高い。
Odoo
ビジネスの現場(特に商取引)で必要な機能をまとめたWebアプリケーション。JavaScriptとTypeScriptで開発されている。搭載されている機能は以下の通り。
- オープンソースCRM
- eコマースサイト
- プロジェクト管理・在庫管理システム
- 請求書&会計ソフト
これからビジネスに特化したアプリケーションを開発したいなら参考になるだろう。
Docusaurus
Meta(旧Facebook)社が開発したドキュメント制作用のライブラリ。Reactの基礎知識があれば簡単に扱える。カスタマイズ性が非常に高く、自分で好みのドキュメントを作ることができる。余談だが、TypeScriptの入門書『サバイバルTypeScript』に採用されている。
Rocket.Chat
TypeScript(React Native)で開発されたチャットアプリ。Whatsappの代替サービスとして開発された。OSSで提供されているので、自由自在にカスタマイズできる。MERNスタック(MongoDB、Expressjs、React、Node.jsの頭文字をそれぞれ取ったもの)でアプリケーションの開発をしたいなら必ず確認しておきたい。
- Node.jsとWebSocketを使った双方向通信の実装方法
- MongoDBとJavaScript(TypeScript)の連携
など、これらのやり方をソースコード付きで学べる。WebだけではなくAndroidやiOSもリリースされている。
element
Slack、Microsoft TeamsやDiscordの代替サービスとして開発された。TypeScript(React)で開発されている。Matrixという会社のチャットや音声通信サービスを一般向けに提供したチャットアプリ。
TypeScript(React)でチャットアプリを開発したいなら非常にオススメである。
outline
Node.jsとReactで開発されたMarkdown対応のノートアプリ。TypeScriptで開発された。Notionの代替サービスの1つである。Notionのように多種多様な機能に対応しているわけではなく、メモやノート等の記録に特化したつくりになっている。
forem
海外のQiitaに似たサービスであるDEV Communityの運営会社のWebサイト。Railsで開発されている。QiitaやZennのようなプログラミングメディアを開発したいなら必見である。
ghost
海外のnoteに似たサービスであるMediumの代替サービス。タグにアイコンがあるのでサービスの構造はZennに近い。
- 投稿記事の一覧
- 記事の投稿
- アクセス数とその時間帯の確認(グラフ表示)
- アカウントの表示とフォロー
- 記事をタグ付きで検索
- 記事へのコメント
などの仕組みを学べる。foremと同様に、SNSサービスを開発したいなら必ずチェックしておきたい。
Radix-UI - Primitives
TypeScript(React)で開発されたFigmaの代替サービス。アプリケーションの画面のUIを設計できる。Figma風のアプリを開発したいなら参考になるだろう。
vscode
世界中のプログラマーが最も使っているテキストエディタ。TypeScript(Electron)で開発された。実はVSCodeはオープンソースで開発されている。テキストエディタを開発したいなら参考になるだろう。
buttercup
TypeScript(Electron)で開発されたパスワード管理アプリ。1Passwordのようなパスワードを管理できるアプリを自作したい場合には参考になるだろう。CRUDの実装などアプリケーション開発に必要な基本を学べる。
Android
Simple Mobile Tools
Kotlinで開発されたAndroidアプリ。最大の特徴は広告なしで、かつウィジェットをカスタマイズできることである。ダウンロードサイトはこちら。シンプルなアプリを開発したいならオススメできる。
QKSMS
KotlinとJavaで開発されたチャットアプリ。UIが非常にシンプルかつきれい。KotlinでAndroid専用のチャットアプリを開発するなら必ず確認しておきたい。
Signal-Android
Kotlinで開発されたAndroidのチャットアプリ。ダウンロードサイトはこちら。こちらもQKSMSと同様にKotlinでAndroidアプリを開発したいならオススメである。
Flutter
Flutterはプログラマー間の中で最も人気のあるフレームワークのひとつなので、GitHubには数多くのオープンソースが眠っている。(その数はGitHubだけでも444,478にわたる)
Fwitter
FlutterとFirebaseで開発されたTwitterのクローンアプリ。FlutterとFirebaseでSNSサービスを開発したいなら必ず確認しておきたい。
WhatTodo
Flutterで開発されたシンプルな機能のタスク管理アプリ。上述のFwitterと同様にバックエンドはFirebaseで開発されている。
Glocery-App
食料品の買い物アプリのUIを簡単に開発できる。Eコマースサイトのレイアウトの設計を考えるのが面倒なら非常にオススメできる。
余談だが、Flutter開発においてUIは非常に重要な要素の1つ。とにかく優れたUIを探してそれをパクるしか上達の方法がない。
habbit
Flutterで開発された習慣トラッカー。習慣化に関するアプリを開発したいなら参考になるだろう。
AppFlowy
FlutterとRust言語で開発されたNotion風のメモアプリ。UIが非常にシンプルで、かつNotionのように多種多様な機能に対応している。Firebase以外でFlutterアプリの開発を進めたいなら必ず確認しておきたい。
余談
普段はTwitterで個人的に確認しておきたいGitHubのリポジトリを要点付きで発信している。
GitHubはプログラマーの宝庫とも言える非常に重要なWebサービスだ。これからもTwitterやZennで個人的に重要だと判断したGitHubリポジトリを積極的に共有していきたい。
参考サイト
Discussion