記事の要約:checkio-clientを使えばブラウザからでなくてもcheckioの問題を解けるようになるよ
経緯
checkioって何?
checkioはPythonやTypescriptの学習用サービス(というよりはコーディングゲーム?)。
特徴的な点は、実用性重視の問題が出題されるところ。
例えば「正規表現を使って特定の文字列を検出する問題」ではなく「対応がめんどくさいメールを選別する問題」といった形式で出題される。
一問につき1知識の学習をさせる一般的な教材と違って、1つの基礎問題で様々な知識を要求してくるので総じて難易度は高い(最低難易度のElementaryでも解けない時があって結構凹む)が、学習の質とモチベーション向上には間違いなく貢献してくれている。他人と解答を共有できるのも素晴らしい。
便利なサービスではあるが問題点が一つ。
解答画面が滅茶苦茶使い辛い。
スクリプトはWeb上のエディタに打ち込むのだが、コマンド補完機能が用意されていないのでタイポ、カッコ閉じ忘れ、pep8を守っていないコーディングが頻発する。デバッグ作業もやりづらい。
普段vscodeの補完機能に頼りきりなのが悪いのだが、だからと言って一々そんなミスの修正に思考リソースを割きたくない。
結果どうするかというと、
vscodeでスクリプト書いて、デバッグして、うまくいったらブラウザの解答画面にコピペしている。
そんな無駄な工程挟むなら、いっそスクリプトファイルごと送信して答え合わせしてくれよ…
↓
APIでpyファイル送れるやん!
という事実をcheckio2年使ってて初めて知ったのでここで紹介することにする。
準備するもの
- python3
- pip
- checkioのAPIキー(ユーザープロファイルから確認できる)
インストール
1.checkio_client(API)をインストール
pip3 install checkio_client
2.configを設定
checkio config
Which domain you want to use by default? (code required)
[py] - https://py.checkio.org
[js] - https://js.checkio.org
[epy] - https://empireofcode.com
[ejs] - https://empireofcode.com
by default:py
Code for domain[py]:
pythonを利用するのでそのままEnter
What is your KEY for https://py.checkio.org ?
You can find one on https://py.checkio.org/profile/edit/
KEY:
APIキーを入力
Choose folder for your solutions [/home/user/py_checkio_solutions]:
ファイルの保存先とするディレクトリを入力(デフォルトのままでもok)
3.進行状況を同期
checkio sync ~/py_checkio_solutions
2度目以降は
checkio sync
だけで同期できる。
利用方法
1.pyファイルに解答を書き込む
同期されたpyファイルに解答を書き込んでいく。
問題文もファイル内に記述されているのでブラウザで問題文を開く必要もない。
2.解答をテスト
assert文が通ったら回答を送信してテスト
Zigzag Arrayを解いた場合
zigzag_array.py --check
Start checking...
*** Basics ***
->[3, 5]
<-[[1, 2, 3, 4, 5], [10, 9, 8, 7, 6], [11, 12, 13, 14, 15]]
->[5, 1]
<-[[1], [2], [3], [4], [5]]
->[3, 3, 5]
<-[[5, 6, 7], [10, 9, 8], [11, 12, 13]]
*** Extra ***
->[0, 3]
<-[]
->[3, 0]
<-[[], [], []]
->[0, 0]
<-[]
->[10, 1]
<-[[1], [2], [3], [4], [5], [6], [7], [8], [9], [10]]
->[4, 2]
<-[[1, 2], [4, 3], [5, 6], [8, 7]]
!!! Congratulation !!!
Link for checking solution of other users: https://py.checkio.org/mission/zigzag-array/publications/
Link for sharing solution: https://py.checkio.org/mission/zigzag-array/publications/add/
Congratulationが表示されたらテスト合格。
3.解答を投稿
Link for sharing solution のリンクにアクセスして解答を提出
ユーザーページのActivityに"Shared Clear solution..."といった通知が表示されていたら投稿完了。
おわりに
「問題選ぶ→解く→テスト」までをvscode上で完結できて非常に便利。
checkio-clientについてもっと知りたい場合は公式ブログを参照。
https://py.checkio.org/blog/new-tool-checkio-client/
ブラウザ拡張機能もあるようだが、レビュースコア低い&最終アップデートが2018年末(2020年6月現在)と散々なのであまり使う気はしない。
http://www.checkio.org/local-editor/chrome/extension/