どうも、Retroidです。
CBTまで残り3ヶ月を切りました。
流石にクエスチョンバンク(CBT用)のvol1-3までを一周するくらいまでには、真面目になりました(笑)さて、今回は、「プログラム歴9ヶ月で作成したものを晒してみる」というタイトルで記事を書きます。
対象者
これからプログラミング始める人で、「初心者がプログラミングで何作れるのさ?」って気になってる人等。
もちろんそれ以外の人でもOK!
なにゆえ書くか?
よく「初心者がアプリ書いて稼いでみた」的なブログは見かける気がするけど、どれも似ている気がしたので、
医学生×プログラム初心者
という珍しいタイプの人間が記事を書いたらどうなるかな?と思ったので。
今回は具体的にどんなコードを書いたか、というより、どんなものが作成できたのか?という紹介にとどめる予定。
(コードが汚すぎて晒したくないってのはここだけのヒミツです(´・ω・`)(笑))
何を作ったか?
Pythonのドキュメントビルダー「Sphinx(スフィンクス)」を利用して、文章管理システムを作りました。
スフィンクスとは
Pythonで書かれたドキュメントビルダーです。
ドキュメントビルダーというのは、文章作成ソフト、みたいな感じで捉えてくれれば良いと思います。
なんで便利かっていうと、一定の法則に基づいて書いたメモを、いろんなフォーマット(PDFはもちろん、Wordやhtmlt等にも変換できる!)に変換できるからです!
例えば、Wordで文章作ったとすると、それをhtmlに直したり、別のフォーマットに直すのは、非常に面倒な作業ですが、Sphinx使えば余裕でできます。
あと、文章の管理がとっても簡単になります。このへんは後ほど紹介します。
Sphinxの詳細は、とりあえずグーグル先生へ訪ねてくだされm(_ _)m
なんでこいつに目をつけたのか?
医学生として、勉強 をやっていて思うのが、書類(資料)の管理がめんどいってことです。
勉強したノート、もらったプリント等、書類が山のように積み重なっていきます。
これらの管理は容易ではなく、特に紙媒体で管理しようとするものなら、その量に圧倒され挫折すること間違いなしです。
プリントは、スキャンスナップでデータ化できるので、ある程度管理可能です。
しかし、勉強の際に作成したノートは、例えばPagesやWordで作成したとしても、各ファイルに何が書かれているかということをいちいち探すのは困難を極めます。
ただ、僕は思いました。
「一度授業で作ったノートを、CBTや国家試験の時に再度作成するのは二度手間だよなぁ、めんどくさいなぁ」と。
僕の原動力は「めんどくさいなぁ」という気持ちなので、その気持に正直になった結果、Sphinxに目をつけたわけです。
Sphinxで何ができるの?(もうちょい具体的に)
詳しいシステムの説明は、この記事ではしませんが概要をちょろっと説明します。
Sphinxのもともとの機能として
reStructuredTextという形式でノート作成⇒Sphinxに処理させる⇒htmlでノートが作成される(自動で検索ボックスがつく)
っていうのがあります。
htmlは、ブログのトップページみたいな感じになっていて、検索ボックスに検索したいWordを入れると、ちゃんと検索してくれます。
例えばノートを100冊作ったとして、もしそれが紙媒体や、PagesおよびWordで単につくられたものならば、各ノートの内容を検索するのは非常に時間がかかります。
でも、Sphinxで作成したhtmlを使えば、
検索ボックスに文字入れる⇒検索かける⇒ヒットしたページを読む
というふうに一瞬です!
例えば、ハプトグロビンと検索してみます↓
検索を押すと?
ヒットしました!ためしに一番上のページをクリックしてみます。すると?
ちゃんとページに飛んでくれます\(^o^)/!
ただし、この検索は、デフォルトだと英語に最適化されているので、これも若干調整する必要があります。
ちなみに、Retroidは、ある程度システムが完成したので、早速CBTをの勉強にこのシステムを利用しています。
トップ画面のスクリーンショットを載せますね👍
↑デフォルトのSphinxの設定からかなりデザインをいじっていますが、こんな感じ。
グレーの領域=1つのノート(ファイル)
と思ってください。
こんなふうに、トップページには、作成したすべてのページの目次みたいなものが表示されます。
で、各ノートの中身はこんなふうにデザインを整えています↓
Sphinxでいじったファイル(完成したhtmlファイル)にjavascriptを噛ませることによって、表中の「上昇」や「下降」といった文字に自動で色をつけています。
僕は「上昇」は赤色、「下降」は青色にしています。
更にいじってみた
で、めんどくさがり屋の僕は更にシステムをいじりました。
目をつけたのは、「reStructuredTextを書くのもちょっとめんどくさいなぁ」ってところです。
そこで、
reStructuredTextという形式でノート作成⇒Sphinxに処理させる⇒htmlでノートが作成される(自動で検索ボックスがつく)
という本来のSphinxの機能をサポートするために、
htmlのアンケートフォーム作成用の機能(formタグ等の利用)により、テンプレートを作成⇒テンプレートに入力⇒入力したデータを読み取る⇒読み込んだデータをreStructuredTextに変換、ノート作成⇒Sphinxに処理させる⇒htmlでノートが作成される(自動で検索ボックスがつく)
ということをしました。
みなさん、一度はウェブのアンケートフォームに入力し、それをボタンをポチッと押して送信する、という作業をやったことがあると思います。
あの要領で、テンプレートに文字を入力しボタンを押すだけで、ちょっと複雑なreStructuredTextを簡単に作成し、Sphinxでhtmlに変換できるってわけです。
言語は何を使ったの?
使ったのは以下の言語です。
・Python
・Javascript
・PHP
・(HTML)
・(CSS)
JavascriptはHTMLの操作担当(DOMの操作、詳しくはグーグルへ)、Pythonは、Sphinx自体の構成言語であるのみならず、フォームのデータ(json)をreStructuredTextに変換する、コンバーターの作成に利用しました。
PHPは、フォームデータをjsonという形式のデータへ変換、ファイルへ保存する際に、javascriptだけだとセキュリティの都合等でできなかったので(頑張ればできるのかもしれないけれど(汗))、半ばやむを得ず使った感じです(いい勉強になりましたけどね(^^))。
HTMLとCSSは言わずもがなって感じです。
ただ、プログラミング言語って言って良いのかなーと躊躇したので、カッコ()つけてあります。
というわけで、プログラミング9ヶ月で使ったものの1つを晒してみました。
9ヶ月経って思ったのは、「プログラムの可読性、柔軟性を考えなければ、意外と動くプログラムは作れる!」ってことです。
プログラミングを始める前は、自分になんてできっこない、って思っていた節もあったのですが、始めてみると案外できるんだなぁと思いました。
ただ、きれいに書くのはホント難しい(汗)
これは今後の課題です。
まあ、医学生や医者やりながら、自分の日常タスクを効率化するために書く分になら問題ないかな、と思っています。
プログラミング始めて1年経たないでも、実際に役に立つものを作れるんだなぁってことがわかってくれれば良いな−と思っています(^^)
それでは今日はこのへんで失礼しますm(_ _)m