slackで絵文字が追加されると報告するbotを作った
タイトルの通りで、slackで絵文字が追加されるとそれをslackに報告するbotができました。
— chocobo (@akachocobo7) June 4, 2018
作った経緯
弊部のslackは絵文字職人が多いので、絵文字がぽこぽこ増えていきます。これまでは絵文字職人が追加する度にrandomあたりで報告していましたが、量が多くて面倒くさそうでした。そこで、それを解決するためにbotを作ろうと思いました。あとslackのAPIを叩いてみたかった。
ソースコード
適当に書いたので、もっと良い書き方があれば報告してくれると嬉しいです。
アルゴリズムは、
- 現在登録されているslack絵文字リストを取得
- 前回取得したslack絵文字リストとの差分をslackに報告する
というシンプルなものになっています。
感想
身の回りの課題をプログラミングで解決できたので楽しかった。こんな感じのプログラムをささっと組めるエンジニアになりたい。
RUPC2018
立命館大学で競プロの合宿があり、面白そうだったので参加してみました。
day1
A問題を解いてヒャッホイした後、圧倒的力不足から問題を眺める係をしていました。もっと勉強しなきゃダメだな〜〜と思いつつ、懇親会のポテトをいっぱい食べました。
day2
えらいので朝はちゃんと起きれました。
B問題をACした後、あみだくじの解法を教えていただいたのですが実装をミスして2WA。実装力も考察力も足りないことを痛感したけど、これだけでもRUPCに参加した意義はあったのかなと思った。
焼肉美味しかった。
day3
えらいので朝はちゃんと起きれました。
C問題を解いた。残りの時間は虚無になって過ごした。南無。
にぼ次郎いきたかった(定休日)。
感想とか
もっといろんな方々とお話がしたかったのですが、コミュ障なのでダメでした。Twitterで知り合っておくと、話しかけることが楽になりそうな雰囲気だったのでTwitterおすすめです。
あとコスプレしてる人やうさ耳つけてる人は可愛いということをお伝えしておきます。
来年もできたら参加したいです。
macのbashにpowerlineを導入する
忘れやすい鳥頭なので、備忘録的な感じで残しておきます。
powerlineのインストール
まずpowerlineに対応しているフォントをダウンロードします。下のURLに飛んで、Clone or download
のDownload ZIP
を選択します。そうするとダウンロードが始まります。
ダウンロードしたファイルを解凍します。解凍したフォルダの中にpowerline-fontpatched
というフォルダがあるので、その中のフォントをインストールします。
powerlineをインストールします。ターミナルで以下のコマンドを実行します。
git clone https://github.com/b-ryan/powerline-shell cd powerline-shell python setup.py install
次に.bash_profile
の設定をします。
vim ~/.bash_profile
.bash_profileに以下を追記
function _update_ps1() { PS1=$(powerline-shell $?) } if [[ $TERM != linux && ! $PROMPT_COMMAND =~ _update_ps1 ]]; then PROMPT_COMMAND="_update_ps1; $PROMPT_COMMAND" fi
これで終わりです。
コンフィグの設定
ターミナルで $ より左の表示の設定を変えたいときは、コンフィグファイルの設定をします。
まずデフォルトの設定を生成します。ターミナルで以下のコマンドを実行します。
powerline-shell --generate-config > ~/.powerline-shell.json
次に.powerline-shell.json
の設定を変更します。人によって使いやすい設定が異なるので、各自がいい感じに書き変えてあげる必要がありますが、自分は以下のように設定しました。
vim ~/.powerline-shell.json
{ "segments": [ "virtual_env", "username", "ssh", "cwd", "git", "hg", "jobs", "root" ] }
powerlineの▶︎を取りたい
先ほどの.powerline-shell.json
に"mode": "flat"
を追加します。
{ "segments": [ "virtual_env", "username", "ssh", "cwd", "git", "hg", "jobs", "root" ], "mode": "flat" }
配色を変えたい
結構めんどくさいです。
以下のコマンドを実行します。
cd powerline-shell/powerline_shell/themes/ cp solarized_light.py mytheme.py
mythemeのカラーコードの数字を変えていきます(カラーコード表はここ)。これも各自がいい感じにする必要があります。自分の設定は以下の通りです。
vim mytheme.py
from powerline_shell.themes.default import DefaultColor class Color(DefaultColor): USERNAME_FG = 15 USERNAME_BG = 4 USERNAME_ROOT_BG = 1 HOSTNAME_FG = 15 HOSTNAME_BG = 10 HOME_SPECIAL_DISPLAY = False PATH_FG = 220 PATH_BG = 14 CWD_FG = 0 SEPARATOR_FG = 21 READONLY_BG = 1 READONLY_FG = 7 REPO_CLEAN_FG = 0 REPO_CLEAN_BG = 15 REPO_DIRTY_FG = 1 REPO_DIRTY_BG = 15 JOBS_FG = 4 JOBS_BG = 7 CMD_PASSED_FG = 15 CMD_PASSED_BG = 2 CMD_FAILED_FG = 15 CMD_FAILED_BG = 1 SVN_CHANGES_FG = REPO_DIRTY_FG SVN_CHANGES_BG = REPO_DIRTY_BG VIRTUAL_ENV_BG = 15 VIRTUAL_ENV_FG = 2 TIME_FG = 15 TIME_BG = 10
こんな感じになりました。
オセロAIのおはなし
この記事は、OIT Advent Calendar 2017の17日目の記事でした。
弊学はオセロプログラミングコンテストという、選手が作ったAI同士で戦わせあう大会が年に1回開催されていて、面白そうだなと思って参加してみました。
申し込んだときはAIというものが全く分かっていなかったので、先輩に教えてもらったりgoogle先生に調べてもらったりしながら開発していきました。やればできるものですね。(先輩に感謝)
バグがでてくる度に髪の毛が抜けていくような感覚でしたが、なんとか1完成させました。
大会当日は別のイベントへ参加することになったので、同級生にプログラムを託して結果を待つことにしました。
お昼過ぎたあたりに、同級生から「優勝したよ」というメッセージが届いたときは、すごく嬉しかった。
AI自体はまだまだ発展途上といった感じで、来年のコンテストに向けて改良したい...と思っています。最近は機械学習やディープラーニングが流行っているので、どっちにしようかなという感じ。
使ったアルゴリズム
nega_alpha
nega_max
とalpha_beta
を組み合わせたもの。
move_ordering
枝刈りが効率よく行われるように、探索する順番を入れ替えます。自分は速さ優先探索を用いました。
空所表
探索を開始する前に、石が置かれていない場所を配列に格納しておきます。終盤は石を置く場所がほとんどないので、高速化に役立ちます。
やりたかったこと
反復深化探索
ゲーム木の構造体を作っておけば良かった(怠慢)。
nega_scout と 置換表
ば
ぐ
っ
た
Probcut
難しかった。
その他
オセロを作ってるとき、makegirlsmoeが流行ってたので、それで生成したアイコンをAIのキャラクターにした2。
参考になったサイト、本
オセロAI(odan's diary)
Visual C++ を使ってオセロを作ってみよう
ゲーム計算メカニズム (コンピュータ数学シリーズ 7)