プラグインはIntellij IDEA、WebStorm、PyCharmの開発環境に組み込めて、CodeGymコースの課題をそのままIDEで扱えるようになるよ。たとえば、課題のコードを書いたり、提出してチェックしたり、「デフォルト」解答と比較したり、いろいろできる。プラグインでの課題進捗はCodeGymアカウントと同期されるから、ウェブサイトでもIDEでも同じように見えるよ。
CodeGymプラグインはJetbrainsのマーケットプレイスから、直接自分のIDEでダウンロードできるよ。ここではWebStormを例に手順を説明するけど、他のIDEでも同じ流れだよ。
プラグインを使うには、Jetbrains IDEのバージョン2023.1以降が必要だよ。
「設定」セクションに入ってね。Windows/Linuxなら
File - Settings、MacOSならWebStorm - Preferencesだよ。設定セクションが見つからない場合は、何かプロジェクトを開くか新しく作ってみて。出てきたウィンドウのサイドメニューでPluginsを選んで、Marketplaceタブを開こう。検索バーにcodegymって入力してね。
![]()
- プラグインを選んで、Installボタンを押してね。
- WebStormを再起動(Restart IDE)して、プラグインを使い始めよう。
プラグインの手動インストール
プラグインがインストールされたよ!
アカウントにログインして課題をロードする
- ちょっと変わったインターフェースとボタンが見えるはず。上の水平パネルにアカウントにログインボタンがあるよ。
クリックするとアカウントログイン用のウィンドウが開くから、シークレットキーを入力してね:
ちなみに、シークレットキーは設定 → セキュリティとログインで確認できるよ。
新しい課題を開くには、左の垂直パネルで
Tasksをクリックして、サイドパネルの課題カードをクリックしてから開くを押してね:
- 新しい課題を開くと、いくつか大事なファイルがある作業エリアが表示されるよ:
Solution— ここがメインの作業ファイル。ここにSQLクエリを書いて課題を解くよ。init.sql— ローカルDBを準備するための補助スクリプト。必要なテーブル作成やデータ投入の指示が入ってる。- 課題の条件タブ。
Solutionファイルはサイトと同じ感じ。解答を書いてПроверить/Validateボタンを押してね。
ローカルで解答を実行する
- まず課題用のテーブルとデータをローカルDBに作る必要があるよ。そのために
init.sqlファイルを開いて、右クリックしてRun 'init.sql'を選んでね。
- 「Edit Configuration」ウィンドウが開いたら、どこでスクリプトを実行するか指定しよう。「Target data source / schema」セクションで
+を押して、設定済みの接続を選んで、必要なスキーマ(例:university)を選択。その後Runを押してね。
- うまく実行できたら、下のコンソールにメッセージが出るよ。作成されたテーブルを見たい場合は、「Database」パネル(2つの矢印ボタン)でDBビューを更新してみて。新しいテーブル(例:
products)がスキーマに表示されるはず。
- DBが準備できたら、
solution.sqlファイルに戻ろう。SQLクエリを書いて、エディタ上部のドロップダウンでスキーマを選んで、緑の「Run」ボタンを押せばローカルDBでクエリが実行されて結果が見れるよ。![]()
init.sqlの再実行、または依存関係の問題の解決
タスクに取り組む際、ローカルデータベースを準備するためにinit.sqlスクリプトを頻繁に実行します。しかし、テーブルがすでに作成されている状態で2回目に実行するとどうなるでしょうか?
このようなスクリプトでよく見られるDROP TABLE IF EXISTS employees;コマンドは、新しいテーブルを作成する前に古いテーブルを削除することで、この問題を解決するように思えます。しかし、常にそうとは限りません。テーブルを削除できないエラーに遭遇する可能性があります。これは、他のデータベースオブジェクト、例えば他のテーブルからの外部キー(Foreign Keys)や自動インクリメントフィールドに使用されるシーケンス(sequences)などが、あなたのテーブルを参照している場合に発生します。システムはこれらの関連付けを保護し、「親」テーブルの削除を防ぎます。
CASCADEオプション
このような場合のために、PostgreSQLにはDROPコマンドの拡張機能であるCASCADEオプションがあります。これはサーバーに「このテーブルを削除し、それに依存するすべてのオブジェクトも自動的に削除せよ」と指示します。これにより、削除されるテーブルに関連するすべてを「強制的に」クリーンアップすることができます。
コード例
-- employeesテーブルへの参照がある場合、この方法はエラーを引き起こす可能性があります
DROP TABLE IF EXISTS employees;
-- 学習用スクリプトの例
-- employeesテーブルとそれに依存するすべてのオブジェクト(キー、シーケンス)を削除します。
-- IF EXISTSは、テーブルがまだ存在しない場合にエラーを防ぎます。
DROP TABLE IF EXISTS employees CASCADE;
-- この後、安全にテーブルを再作成できます
CREATE TABLE employees (
id SERIAL PRIMARY KEY,
full_name TEXT NOT NULL
-- ... その他の列
);
重要! 学習目的や、データベース構造を頻繁に再作成する必要があるローカル開発では、CASCADEは最良の助けとなります。しかし、実際の稼働中のデータベースでは、このコマンドは意図しない重要な関連データやオブジェクトの削除につながる可能性があるため、細心の注意を払って使用する必要があります。
課題の同期(サイト ↔ プラグイン)
課題リストとそのステータスは自動で更新されるよ。5分ごと、または何か課題を提出した後(CodeGymサーバー)に同期される。
だから、サイトで課題を解決したら、プラグインでも解決済みリストに入るよ。今すぐ課題ステータスを更新したい場合は、右上のアバターをクリックして、ドロップダウンメニューから課題を同期を選んでね:
プラグインの初心者モード
WebStormや他の開発環境に慣れてない(またはほとんど経験がない)人向けの簡易バージョンだよ。一部のWebStorm機能が非表示になってる。このモードをオフにしたい場合は、右上のアバターをクリックして、ドロップダウンメニューから「設定」を選んでね:
PROモードでプラグインのナビゲーションパネルを隠す方法
設定(⚙️)を開いて、「プラグインのナビゲーションパネルを表示」のチェックを外してね:



GO TO FULL VERSION