大石泉すき駆動開発の記録

はじめに

ハーイ!皆さん。

大石泉すき?(挨拶)

この記事は大石泉アドベントカレンダー2018の3日目の記事ではありません。(重要) そっちは誰か書いてくれるか 今日の終わりになっても埋まってなさげなら僕が書きます。

この記事は学内サークルのアドベントカレンダー3日目の記事です。 内容は大石泉絡みでちょこちょこ作ってきたことの反省です。

なお、大石泉すき駆動開発とタイトルをつけておきながら大石泉に関しての説明はしません。

大石泉に対しての説明が必要ならまた今度僕を捕まえて「説明しろ」と言っていただければ、 約15分でスライド付きで嬉々としてプレゼンします。

もくじ

今まで作ってきた大石泉絡みのやつ

-> 大石泉すきが含まれるツイートを収集してカウントしてグラフ化とかしたりするTwitter bot

-> Brainf*ck派生、大石泉への愛の言葉だけでプログラムが書ける夢のような言語

-> デスクトップマスコットが実行時例外にコメントくれるやつ

-> この記事では触れません。

大石泉すきbot

概要

たぶん一番長い付き合いの制作物です(2017/9/30から運用開始)。 一番苦労させられてるのもコレ。 そして一番ソースコードぐっちゃぐちゃなのもコレ。 正直もうあんまり手を入れたくない(いっそ作り直したい)。

使ってる技術とか環境とか

  • VPS借りて動かしてます。月額972円。
  • ツイートの収集は一時間おきにCronでRuby実行してSQLiteで保存。
  • グラフ表示するWebサイトのサーバサイドはRubySinatra
  • グラフ表示はChart.jsを使用。
  • Nginxをリバースプロキシに使ってる(他にもサブドメインでいろいろ動かしてるため)
  • MyDNS.JPでドメイン取得させてもらってます。ありがたい。
  • Let's EncryptでSSL化させてもらってます。ありがたい。

反省

10月に話しましたがTwitterから一度凍結食らいました。 原因は既に廃止されたAPIにリクエストを送り続けていたことだと思われます。

API使ってる何か運用してる時はそこの動向見るのほんと大事だなって思いました。

あと実行時に適切なログ出力するようにするのも大事。 デバッグ時に使ってた標準出力そのままファイルに吐き出すだけとか超絶雑な事をしていたからひどい目見ました。 正直一年以上運用するつもりなんてなかったからっていうのはある(けどそれがダメなんだな)

大石泉すき言語

概要

  • Web版はもともとC#で作ってたやつをJavaScriptに移植(ほぼCからの構文くらいしか使ってないため移植は容易だった)
  • 昨日プログラミング未経験者向けのつもりで入門記事を突発的に書いた。未経験者想定して書くのめっちゃ難しい。

使ってる技術とか環境とか

  • 一応C#JavaScriptでの実装があるけど、その二つのコードにほぼ差がないことから察してください。
  • 一回生で習う知識・技術で十分実装できるんじゃないかなぁ(その割に手こずる三回生(当時))。
  • AzureのWeb App(無料枠)で公開してます。でもフロントだけで動くから今の自分ならGithub Pagesとかで公開すると思う。

反省

頭の中ではスタックを意識してるのに何故かキューで実装してて、 いずみんイズミン(C・Java等の言語におけるWhileループのようなもの)の実装にかなり詰まった愚か者が私です。

一回生の時に座学の授業で学ぶスタックの構造を使ったりとか、基本的に基礎文法だけで実装できる点からして とりあえず一回生で入ってきてプログラミング初めて基礎文法だいたい学び終わったら、 みんなBrainf*ckインタプリタ作ればいいと思うな!!

大石泉とペアプログラミング(っぽいの)

概要

サークルでも発表しましたが、IDEとかからデバッグ時の実行時例外の情報をデスクトップマスコットに流して、 その情報からアドバイス表示させればペアプログラミングしてる感を味わえるんじゃない???ってやつです。

使ってる技術とか環境とか

  • サークルで発表したときはEclipse版(Java)しかなかったですが、最近Visual Studio(.NET系言語)にも対応しました(IntelliJにも対応したい)。
  • プラグイン拡張機能・アドイン・アドオンなどと呼ばれるやつで実行時例外がcatchされなかったイベントを取得してます。
  • デスクトップマスコットは「伺か」というプラットフォーム。
  • 伺かIDE伺か側が用意しているSSTP(Sakura Script Transfer Protocol)というプロトコルで通信してます。実装はソケット通信です。

反省

参考にできる情報がほぼ日本語では存在しないつらさ。

EclipseにしてもVisual Studioにしても日本語である記事はほぼHello world的なものばかりで、 実際何かしようと思うとほぼ自力で公式ドキュメント(Eclipseは英語、Visual Studio機械翻訳の日本語)を見るしかなく、非常に辛かったです。 (なので落ち着いたらアウトプットしたい)

ていうか機械翻訳の日本語見るより英語読んだ方がまだわかる時あった。

英語読むよりコード例読む方がまだ理解できるので、クラス名とかメソッド名とかで言語英語指定とかで検索かけてひたすら他人のコード読んで理解しました。

まとめると

  • 英語マジ大事
  • 案外ドキュメントの英語はじっくり見れば何となくわかったりする。英語に苦手意識ある人は分かる!分かるぞ!!って自己暗示かけながら読もう!!!
  • Google翻訳マジ優秀。原文と一緒に開いて補完しながら読めばだいたい理解(わか)る(二宮飛鳥的表現)
  • それでもわからなかったらとりあえず手あたり次第動かすか、コード例を探せ。検索エンジンの言語英語指定とかかけてクラス名・メソッド名で検索するとよいかも

おわりに

以上です。最後にこの言葉でお別れしましょう。

大石泉はいいぞ。大石泉すき!