新社会人になって ~プログラマーの三大美徳について振り返る~

はじめに

新社会人になりました。 今後プログラマとして仕事をしていく訳ですが、一度初心に返り「プログラマの三代美徳」を振り返ろうと思います。この記事は私の言葉で要約して書くので、「プログラマの三大美徳」について詳しく知りたい方はこちらをご覧ください。


三大美徳

三大美徳とはPerlの開発者「Larry Wall」の名言。 プログラマは次の三つがとても重要であると言っている。

怠惰

全体の労力を減らすために手間を惜しまない。 つまり、楽をするために頑張るということ。

短気

コンピュータが怠惰なときに感じる怒り。 つまり、今後起こりうる問題を想定したプログラムを書くこと。

傲慢

神罰が下るほどの過剰な自尊心。 つまり、自分のプログラムにケチを付けるのはナンセンスというくらい素晴らしいプログラムを書くこと。


まとめ

少し語弊があるかもしれませんが、「プログラマの三大美徳」はプログラマに必要な意識を示してます。 改めて振り返って見ると、美徳にはほど遠く、未熟だと感させられます。

YACP::Tokyo 2019に参加して

はじめに

こんにちは、です。

このブログはYAPC::Tokyo 2019に参加した感想を書きます。 技術的な内容は、発表者の方のスライドや他の方のブログを見てください。

前夜祭

LTソン。 自分より若いアナグラ君やcodehex君がTLしており自分も発表したいと思いました。 次回YAPCではLTをしたいと思いました。まだ話せる内容は無いけど...。 面白いLTを聞くと自分のモチベーションが上がりますね。

YAPC Tokyo 2019 本編

午前 Talk

  • 型にはまらない型の話 (20min) Dan Kogai
  • Perl 6 でのアプリケーション開発と実用 (20min) risou
  • YAPC座談会 (40min)

ランチ

今回学生支援をしてくださった企業の方々との食事会。 学生の人数が多いなと思いました。 自分と同年代の人が多いとうれしく感じますね。

午後 Talk

  • Perl5の静的解析入門 機械と人間双方の歩み寄りによる平和編 (40min) macopy
  • PerlプログラムでPerlプログラムを修正する方法 (20min) Kang-min Liu
  • レガシーPerlビルド 〜現代に蘇るPerl[1..5].0とPerl6〜 (20min) 八雲アナグラ
  • ログにやさしいDB設計 (20min) fist0
  • CPAN Module Hacks (20min) akiym
  • ISUCON8予選問題作成の裏側 (20min) karupanerura
  • 多くのCPAN Authorに育てられ、息をするようにCPANモジュールを書けるようになり、そして分かったこと (20min) Songmu

大変面白い内容ばかりでとても勉強になるTalkばかりでした。 しかし、自分の理解できない内容も多々あり実力不足を痛感しました。

懇親会

おいしい料理と飲み物を頂きました。 登壇者の方や、以前YAPCで知り合った方、Twitterで繋がった方々とお話しさせて頂きました。 懇親会で「次回YAPCは京都」という声を聞いたので楽しみにしています。

最後に

LTやTalkを聞いてなんとなく内容は理解できるが、知らない技術や知らない単語がたくさんありました。 他の聴講者のように「あー」と共感できるようになりたいと思いました。 どんな内容なのか雰囲気でさっすることはできましたが、しっかり理解できていた訳では無いので、これから精進していきたいと思います。

今回のカンファレンスへの参加で何人もの人と繋がることができました。 コミュニティが広がると自分の視野も広がり、自分のモチベーションが上がります。

無事修了することができれば4月から社会人です。 社会人になってからもYAPCに参加したり、コミュニティの活動をしていきたいと思いました。

最後に、YAPCスタッフの皆様、参加者の皆様ありがとうございました。

PerlでSlackBot

はじめに

この記事は,kstm Advent Calendar 12日目の記事として書かれました.

qiita.com

目次

  1. PerlでSlackの会話Botを作る?
  2. Slack tokenを得る
  3. Slack::RTM::Bot モジュール
  4. 最後に
  5. 参考

PerlでSlackの会話Botを作る?

私の研究の関係でSlackの会話Botを作ることになりました. 研究で使っているツールは主にPythonやJSで作っているのですが,そのためにPerlをここ最近書けていませんでした. そこで,Slack BotPerlで作ろうと思い行動してしまった次第です.

Slack tokenを得る

SlackでBotを作るにあたって,Tokenが必要になります. Slackには2つのTokenがあり,一つは現在Slackが推奨している権限を細かく決めることができる物で,もう一つはほぼ全ての機能が使えてしまうLegacy番があります.SlackのLegacy Tokenのページの冒頭には非推奨であるこことが掲示されています.

推奨

基本的には*1と同じ内容になります.

  1. https://api.slack.com/apps
  2. Create New App
  3. Development Slack Team
  4. Create App

重要なのはスコープの設定です. 左側のリストの中から,Features > OAuth & Permissionsに飛び, Scopesの項目のSelect Permission Scopesから必要な権限を選びます.

今回必要になる権限は2つ.

  1. Access user's public channels.
  2. Add a bot user with the username @bot_name

これらを追加してSave Changesを押します.

最後にInstall App to Team > Authorizeに進み,tokenを取得します.

Slackの画面のAppの欄に今作ったBotが増えているので,Botを利用したいチャンネルにこのBotを参加させます.

非推奨 レガシー番

非推奨なので割愛. こちらをご覧ください.

Slack::RTM::Bot モジュール

今回使うモジュールはSlack::RTM::Bot

use strict;
use warnings;
use Slack::RTM::Bot;
use Data::Dumper;
use utf8;

my $bot = Slack::RTM::Bot->new(
    token => 'API Token'
);

$bot->on(
    {
        channel => 'random',
        text => qr/.*/
    },
    sub {
        my ($res) = @_;
        print Dumper $res;
        
        if($res->{text} eq 'Hello') {
            $bot->say(
                channel => 'random',
                text => 'World.'
            );
        } else {
            $bot->say(
                channel => 'random',
                text => 'Slack.'
            );
        }
    }
);

$bot->start_RTM;
sleep 60;
$bot->stop_RTM;
exit;

$bot->on();でどのチャンネルのどんなtextに反応するかを決めます.

$bot->say();でどのチャンネルにどんなtextを書き込むかを決めます.

$bot->start_RTM;でBotを起動するのですが,このプログラムが起動している間, Slackとコネクションが繋がり,Botが動きます. ずっと動かすならば,

while(1) {sleep 60;}

などにしておくといいでしょう.

今回はrandomチャンネルにHelloと書かれるとWorldと返し, それ以外の場合はSlackと返すようになっています.

$bot->on();のtext=>''の部分で条件を付けるのですが,今回はif文で条件を分岐しています.

最後に

YAPC::Tokyoに参加します. yapcjapan.org

kstm Advent Calendar 1日目の記事に「学会にいこう」 と言う記事があります. 学会もカンファレンスも自分の知見を広め深める場です.selee氏の記事の通り学生特権があるので,早いうちから参加するといいと思います.

明日はugwis氏の「6桁の数字を読み取る」です.

参考

  1. Slack API 推奨Tokenについて
  2. Slack APIのTokenの取得・場所
  3. perlで簡単にSlack Botを作るモジュールを公開した
  4. PerlでSlackの雑談Bot作ってみた

サークル新入生向けプログラミング練習サイト集

新年度になり、我がサークルにも新入部員が来ました。
例年に比べ、新入部員の数がとても多く何度も同じ説明をするのは私の精神衛生上あまりよろしくないので、先手を打つことにしました。

今回は競プロとCTFの問題サイト集です。

Capture The Flag

CpawCTF - Main page

ksnctf

akictf


おまけ ~ カンファレンス~

yapcjapan.org

YAPC::Okinawa 2018 ONNASON

こんにちは、咎(@togacoder)です。
yapcjapan.org

参加してきました、YAPC::Okinawa 2018 ONNASON。
今回で2回目のYAPC参加。
今回も前夜祭から懇親会までフルに参加してきました。

前夜祭

LTをしました。初心者プログラマである私がPerlを使い始めたきっかけ、最近したこと、そのうえでこけたことを5分間話させて頂きました。次回話す機会があるときは技術的なことを話せることを目標に頑張ろうと思います。できれば次回のYAPCで。そう、YAPCを基準に開発を行う「YAPC駆動開発」。

本編

今回のトークで一番印象に残っているのはmoznionさんの「Inlineモジュールの世界」。私はInlineモジュールのことを知らなかったので、Perlのコードの中でCやPythonなどが実行できるということは驚きでした。これを使えば、他の学生と開発を行うとき言語を統一する必要も無いな、なんて考えましたが、そう簡単な物でもないようです。一度は実際に使ってみたいと思います。

正規表現 技術入門 最新エンジン実装と理論的背景」を頂きました。ありがとうございます。

最後に

学生支援をしてくださりました企業の皆様のおかげで沖縄でのYAPCに参加することができました。ありがとうございます。
サポーターズ様
ガイアックス
ミノタケ様
こだまリサーチ様
モバイルファクトリー
GMOペパボ
ファームノート様

皆さんのトークを聞いていると、自分も技術的で面白いことを話してみたいという気になります。やはり、大学にこもらず、外に出て行くことって大切ですね。


運営の皆様、参加した皆様、お疲れ様でした。

yapcjapan.org
次回も参加したいと思います。

某研究室の技術メモ2017

このブログはkstm Advent Calendar 2017 18日目のブログです。

qiita.com

某研究室の技術メモ

今年度某研究室で研究室メンバーに共有された技術ブログなどを一部まとめます。

ハードウェア系

www.jst.go.jp

gigazine.net

gugen.jp

makezine.jp

makezine.jp

IchigoJam for RaspberryPi has released! Trial classes will be held in I-O DATA Caravan Japan! / ラズパイ版 IchigoJam リリース!全国4カ所のI-O DATA キャラバンにて体験教室開催! – about yrm

ソフトウェア系

fabcross.jp

qiita.com

www.moongift.jp

itpro.nikkeibp.co.jp

ロボット系

fabcross.jp

www.takaratomy.co.jp

www.gizmodo.jp

www.youtube.com

yhatt.github.io

面白系?

www.youtube.com

gugen.jp

gugen.jp

radiolife.com

Tex関係

cloudlatex.io

qiita.com

おわりに

いろいろな記事やブログがありましたが、ここは何を研究している研究室なのでしょう。 来年はkstmでも情報共有するChannelをslackに作成してもいいかもしれないですね。 という訳でugwis新部長よろしくお願いします。

AutoIt3 IsPressed関数のキー番号を調べた

このブログはkstm Advent Calendar 2017 13日目のブログです。

qiita.com

AutoIt3 IsPressed関数で困った話

研究でAutoItというWindows用のプログラミング言語を使ったときの話です。私はキーボードが押されたことを検知したかったのでIsPressed関数を使いました。 しかし、公式リファレンスを見ても私が探しているキーのキー番号($sHexKey)がなかったため、自分で調べなければなりませんでした(キーコードらしいです)。

github.com

このプログラムはAutoIt3 IDEで実行するとキーボードに割り当てられているキー番号が表示されます。 AutoIt3は作業の自動化、ショートカットキーの自作などに使えると思うので、今後も使っていきたいと思っています。