slackで絵文字が追加されると報告するbotを作った

タイトルの通りで、slackで絵文字が追加されるとそれをslackに報告するbotができました。

作った経緯

弊部のslackは絵文字職人が多いので、絵文字がぽこぽこ増えていきます。これまでは絵文字職人が追加する度にrandomあたりで報告していましたが、量が多くて面倒くさそうでした。そこで、それを解決するためにbotを作ろうと思いました。あとslackのAPIを叩いてみたかった。

ソースコード

github.com

適当に書いたので、もっと良い書き方があれば報告してくれると嬉しいです。

アルゴリズムは、

  1. 現在登録されているslack絵文字リストを取得
  2. 前回取得したslack絵文字リストとの差分をslackに報告する

というシンプルなものになっています。

感想

身の回りの課題をプログラミングで解決できたので楽しかった。こんな感じのプログラムをささっと組めるエンジニアになりたい。

RUPC2018

立命館大学で競プロの合宿があり、面白そうだったので参加してみました。

day1

A問題を解いてヒャッホイした後、圧倒的力不足から問題を眺める係をしていました。もっと勉強しなきゃダメだな〜〜と思いつつ、懇親会のポテトをいっぱい食べました。

day2

えらいので朝はちゃんと起きれました。

B問題をACした後、あみだくじの解法を教えていただいたのですが実装をミスして2WA。実装力も考察力も足りないことを痛感したけど、これだけでもRUPCに参加した意義はあったのかなと思った。
焼肉美味しかった。

day3

えらいので朝はちゃんと起きれました。

C問題を解いた。残りの時間は虚無になって過ごした。南無。

にぼ次郎いきたかった(定休日)。

感想とか

もっといろんな方々とお話がしたかったのですが、コミュ障なのでダメでした。Twitterで知り合っておくと、話しかけることが楽になりそうな雰囲気だったのでTwitterおすすめです。
あとコスプレしてる人やうさ耳つけてる人は可愛いということをお伝えしておきます。
来年もできたら参加したいです。

macのbashにpowerlineを導入する

忘れやすい鳥頭なので、備忘録的な感じで残しておきます。


powerlineのインストール

まずpowerlineに対応しているフォントをダウンロードします。下のURLに飛んで、Clone or downloadDownload ZIPを選択します。そうするとダウンロードが始まります。

GitHub - mzyy94/RictyDiminished-for-Powerline: Ricty Diminished with Powerline patched --- fonts for programming

ダウンロードしたファイルを解凍します。解凍したフォルダの中に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

こんな感じになりました。 f:id:choco_late3:20180305192528p:plain

オセロAIのおはなし

この記事は、OIT Advent Calendar 2017の17日目の記事でした。


弊学はオセロプログラミングコンテストという、選手が作ったAI同士で戦わせあう大会が年に1回開催されていて、面白そうだなと思って参加してみました。

申し込んだときはAIというものが全く分かっていなかったので、先輩に教えてもらったりgoogle先生に調べてもらったりしながら開発していきました。やればできるものですね。(先輩に感謝)

バグがでてくる度に髪の毛が抜けていくような感覚でしたが、なんとか1完成させました。

大会当日は別のイベントへ参加することになったので、同級生にプログラムを託して結果を待つことにしました。

お昼過ぎたあたりに、同級生から「優勝したよ」というメッセージが届いたときは、すごく嬉しかった。

AI自体はまだまだ発展途上といった感じで、来年のコンテストに向けて改良したい...と思っています。最近は機械学習ディープラーニングが流行っているので、どっちにしようかなという感じ。


使ったアルゴリズム

nega_alpha

nega_maxalpha_betaを組み合わせたもの。

move_ordering

枝刈りが効率よく行われるように、探索する順番を入れ替えます。自分は速さ優先探索を用いました。

空所表

探索を開始する前に、石が置かれていない場所を配列に格納しておきます。終盤は石を置く場所がほとんどないので、高速化に役立ちます。


やりたかったこと

反復深化探索

ゲーム木の構造体を作っておけば良かった(怠慢)。

nega_scout と 置換表


 ぐ
 っ
  た

Probcut

難しかった。


その他

オセロを作ってるとき、makegirlsmoeが流行ってたので、それで生成したアイコンをAIのキャラクターにした2

参考になったサイト、本

オセロAI(odan's diary)
Visual C++ を使ってオセロを作ってみよう
ゲーム計算メカニズム (コンピュータ数学シリーズ 7)

オセロプログラム

https://github.com/chocobo777/othello


  1. 筋肉

  2. おたく