CodeGym /コース /SQL SELF /CodeGymプラグインのインストール

CodeGymプラグインのインストール

SQL SELF
レベル 4 , レッスン 4
使用可能

プラグインはIntellij IDEA、WebStorm、PyCharmの開発環境に組み込めて、CodeGymコースの課題をそのままIDEで扱えるようになるよ。たとえば、課題のコードを書いたり、提出してチェックしたり、「デフォルト」解答と比較したり、いろいろできる。プラグインでの課題進捗はCodeGymアカウントと同期されるから、ウェブサイトでもIDEでも同じように見えるよ。

CodeGymプラグインはJetbrainsのマーケットプレイスから、直接自分のIDEでダウンロードできるよ。ここではWebStormを例に手順を説明するけど、他のIDEでも同じ流れだよ。

プラグインを使うには、Jetbrains IDEのバージョン2023.1以降が必要だよ。

  1. 「設定」セクションに入ってね。Windows/LinuxならFile - Settings、MacOSならWebStorm - Preferencesだよ。設定セクションが見つからない場合は、何かプロジェクトを開くか新しく作ってみて。

  2. 出てきたウィンドウのサイドメニューでPluginsを選んで、Marketplaceタブを開こう。検索バーにcodegymって入力してね。

  3. プラグインを選んで、Installボタンを押してね。
  4. WebStormを再起動(Restart IDE)して、プラグインを使い始めよう。

プラグインの手動インストール

プラグインがインストールされたよ!

アカウントにログインして課題をロードする

  1. ちょっと変わったインターフェースとボタンが見えるはず。上の水平パネルにアカウントにログインボタンがあるよ。

    クリックするとアカウントログイン用のウィンドウが開くから、シークレットキーを入力してね:

    ちなみに、シークレットキーは設定 → セキュリティとログインで確認できるよ。

  2. 新しい課題を開くには、左の垂直パネルでTasksをクリックして、サイドパネルの課題カードをクリックしてから開くを押してね:

  3. 新しい課題を開くと、いくつか大事なファイルがある作業エリアが表示されるよ:
    • Solution — ここがメインの作業ファイル。ここにSQLクエリを書いて課題を解くよ。
    • init.sql — ローカルDBを準備するための補助スクリプト。必要なテーブル作成やデータ投入の指示が入ってる。
    • 課題の条件タブ。
  4. Solutionファイルはサイトと同じ感じ。解答を書いてПроверить/Validateボタンを押してね。

ローカルで解答を実行する

  1. まず課題用のテーブルとデータをローカルDBに作る必要があるよ。そのためにinit.sqlファイルを開いて、右クリックしてRun 'init.sql'を選んでね。
  2. 「Edit Configuration」ウィンドウが開いたら、どこでスクリプトを実行するか指定しよう。「Target data source / schema」セクションで+を押して、設定済みの接続を選んで、必要なスキーマ(例:university)を選択。その後Runを押してね。
  3. うまく実行できたら、下のコンソールにメッセージが出るよ。作成されたテーブルを見たい場合は、「Database」パネル(2つの矢印ボタン)でDBビューを更新してみて。新しいテーブル(例:products)がスキーマに表示されるはず。
  4. 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モードでプラグインのナビゲーションパネルを隠す方法

設定(⚙️)を開いて、「プラグインのナビゲーションパネルを表示」のチェックを外してね:

コメント
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION