2023年春に行われたハッカソンの体験記です。
制作物
部内SNS「traQ」で動くBOTを作りました。traQとBOTの説明については↓を参照してください。
プログラミング言語チームとして、スタンプ列のパターンマッチを用いたPrologのような論理言語を扱うBOTを作成しました。
言語仕様
お気持ち仕様です。
- :ton:で終わったら宣言
- :arrow_right:が途中にあれば条件付き(if-then)
- if節、then節は1文字スタンプを変数として扱う
- if節でマッチしたら対応するthen節が宣言される
- :and:でifの積、複数のthenを定義できる
- 変数は1つ以上のスタンプにマッチする
- :hatena:で終わったらクエリ
- クエリのスタンプ列では変数が使える
- クエリに変数が含まれない場合は完全一致するスタンプ列が宣言されているかどうかが返る(T/F)
- クエリに変数が含まれる場合は、宣言されているスタンプ列の中でマッチするもの全てが列挙される
:arrow_right:を含むクエリは、、、忘れた
- 整数
- 数字スタンプと演算子記号のスタンプで数式を扱える
- ↑未実装
:ton:, :arrow_right:などはすべてtraQ内でのスタンプです。対応する画像は以下のとおりです。
name | image |
---|---|
:ton: | |
:arrow_right: | |
:and: | |
:hatena: |
参考
- すごーい! きみはプログラミング言語を実装できるフレンズなんだね - Qiita
- vain0x/friends-lang: PL for friends in the Japaripark (Logical programming language with Japanese animation-reference joke syntax)
リポジトリ
例文
サムネイルのやつです。A
のスタンプが1文字なので早起き
のスタンプとマッチしています。
感想
H1rono_K
それっぽく動くものを作れたのは良いんですが、リーダーとして他のチームメイトに仕事をもっと振るべきだったと感じてます。次はチーム開発をもっと頑張ろうと思います。
kenken
言語を作った経験も、Pythonでの共同開発の経験もあまりありませんでしたが、リーダーにかなり助けられました。結局あまりうまく行かず悔しい気持ちもありますが、新しく学ぶことが多く、いい経験になりました。ありがとうございました!
Pina641
集団開発に携わったのは初めてで、とても楽しかったです。
開発の進捗状況の共有が難しかったです。
ありがとうございました!
Kamaboko
はっきり言ってあんまり貢献はできなかった気がします。
ただ、僕にとっては初めての集団開発で、いい経験になったと思います。
ありがとうございました!
Sumirin
みんななんか凄い頑張ってました!
僕は正直ほぼ理解できてません!
ありがとうございました!