室八フェリーハッカソンに参加した(かった)話

はじめに

この記事はLOCAL学生部アドベントカレンダー3日目の記事です.

adventar.org

こんにちは.

最近マイクラやGTA5などをやり続けているなゆたです.

この記事は室八フェリーハッカソンに参加した(かった)話を書いていこうと思います.

室八フェリーハッカソンとは

no-maps.jp

www.local.or.jp

2018年、室蘭市宮古市間にフェリー航路が就航したことを記念し、フェリー船内で観光アプリなどを開発するハッカソンが開催されました。以来、毎年開催されてきた「フェリーハッカソン」が今年も開催されます!!

室蘭・八戸航路をフェリーで旅行しながら、船内で楽しく過ごせるアプリを作成してみませんか? ご興味をお持ちの方は是非ご検討ください。

というような形で,要約すると,フェリーの中で,船内で楽しめるアプリの作成をするハッカソンです.

去年も私は参加していたのですが,とても楽しかったこと,そして友達に誘ってもらったこともあり,今年も参加しようと思い,申し込んでいました.

しかし,ちょうど北海道で新型コロナウイルスの感染者数が増え始めた時期で,拡大防止のため中止になってしまいました.

とても残念ですが,仕方がないこととあきらめるしかありませんでした.

準備してたこと

大枠としてはWebとARを使ったモバイルアプリを作ろうかという話をしていました.

具体的な部分はフェリーに乗ってから決める予定だったのであまり決まっていませんが,クイズや,ゲームなどを考えていました.

準備の時点で何してたか,そして何を苦労したか.

今回の私の役割が,結構あいまいで,技術的にはWebインフラ(raspberry pi)の設定などを友達と二人でやりながら,プロジェクトマネージャーちっくなこともしていました.

意見をまとめたり,実装の優先順位を決めたりなどをしていました.

またARはわからないものの,インフラと合わせて,webサーバーサイドもある程度は理解できるので,コードレビューも何となくしていました.(できていたとは言えませんが.)

まとめ

ちょうど準備始めたくらいで中止が決まってしまったので,実際の実装はあまりできていないのもあって少し悲しいですが,せっかくなので,きちんと作って

フェリーハッカソンの主催である,アーバンデータチャレンジのほうに応募しようという話をしていました.

urbandata-challenge.jp

完全に準備が止まっていますが.そろそろ作っていけたらいいなって思っています.

実際に参加して入ればもっと写真とかいろいろ付けれたんですが,これくらいで許して下さい(白目)

明日の学生部アドベントカレンダーはまだ埋まっていないようです.

せっかくなので誰か埋めてくれたらうれしいですね.

執筆時点では次は5日の榊 徹君が担当のようなのでわくわくしながら待ちましょう.

incoming webhooksを使ったslack送信ライブラリをcomposerで公開した話

はじめに

お久しぶりです.

この前発売したポケモンダンジョンをやりながらどうぶつの森を待ち続けているなゆたです.

最近incoming webhooksを使ってslackに送信する処理を書いていて,これライブラリにした方が簡単だなって気づいてライブラリにして公開しました.

ライブラリについて

nayuta1999/sendslackerという名前でライブラリを公開しました.

packagist.org

installは

$ composer require nayuta1999/sendslacker

で行うことができます.

ライブラリはGuzzleを使ってAPIにアクセスします.

textのみを送りたい場合はclassのインスタンスを作成した後,sendText($text)を呼びます.

$textの中には送信したいテキストを入力します.

BlockやAttachementsは連想配列を作ってaddBlock()やaddAttachements()を呼びます.

BlockやAttachementsを使ったテキストを送りたい場合はsendContens()を呼んでください.

composerへの公開手順

簡単に書くと

こんな感じの流れです.

composer.jsonを書く

$composer init

を実行すると色々聞かれるのでそれに応えていくとcomposer.jsonが自動生成されます.

packagistに登録する.

packagist.org

このサイトからsign inします.githubのアカウント使うと楽ですね.

そのあとsubmitのところからリポジトリのURLを登録します.簡単ですね.

意識したポイント

  • ライセンス

せっかくライブラリを作ったので使ってもらいたかったのでライセンスを設定しないのではなくMITライセンスを使いました.

他にも色々ライセンスがありましたが,GuzzleがMITライセンスを使ってたのでMITライセンスを使いました..

  • READMEをちゃんと書く

他人に使ってもらえるライブラリを目指したので他の人のライブラリを見ながら使い方やinstall方法などを書きました.

もっとここを書くと良いなどを教えてもらえると嬉しです.

まとめ

今まであまり自分が作ったものを公開してこなかったので少し怖いですが少しずつ自分の進捗をこのように公開していきたいと思っています.

指摘・改善等ありましたらプルリクエストお待ちしていますのでお願いします.

github.com

LOCAL学生部総大会とお気持ち

なゆたです.

LOCAL学生部総大会に参加してきました!

楽しかったこととか色々まとめていけたらいいなと思います.

初日

オリエンテーション

今回の総大会はbitstarさんのラウンジを使わせていただきました.とても広くて心地よい空間ですごくいい空間でした.

部長の挨拶から始まりました.自己紹介などを行ったんですがみんなつよつよで内心かなり震えていました...

ですがみんないい人ばかりでいろんな人と交流して楽しかったです.

作業開始

今回私がやっていた作業は前のブログの記事に載っていますのでそちらを参照ください.

nayuta-1999.hatenablog.com

まぁ雑にいうとサーバーをその場で借りて,その場でドメインをとってマイクラのサーバーを立てるという行き当たりばったりのことしてました.

晩御飯

晩御飯はbitstarさんに美味しいご飯をご馳走していただきました!

とても美味しかったです.

夜の作業

セミナーハウスに移動した後シャワーを浴びたりしたのち食堂でのんびり作業していました.

ここではほとんど試行錯誤していてあまり進捗は出ませんでした...

私は2時くらいには寝ましたが遅くまで起きている人もいて体力がある人は強いなぁって思いました...(もう若くない.)

2日目

朝起きる

8時過ぎに起きました.朝に弱いので寝坊しなくてよかった...

LT

二日目の作業はLT資料を作っていました.

普通に資料作ろうと思ったらスライド作成ソフトが手元に全くインストールされていなかった...

なのでとりあえず手元にあったLaTeXで資料を作ることにしました.

普段の3倍くらい作業量があったと思います.

今回のスライドの内容は公開するつもりはあまりないんですが大雑把にいうと私の高専,私立高校,大学での経験をもとにどうしてこうなってどうしたらよかったかを雑にまとめたものです.特に高専と高校の比較を強めにやっていたので,何かしら思うことがあったら嬉しいなって思います.(俺のようにならないで欲しいので頑張って欲しい)

まとめ

LOCAL学生部の総大会に初めて参加したので,最初は雰囲気をつかむのに苦戦しましたがとても楽しかったです.

また,いろんな人からいろんなやり方を吸収できて楽しかったですし,周りの進捗を見て自分も頑張らなきゃと思ったりととてもいい影響を受けることができました.

少しでもこのコミュニティに自分が貢献できたらいいなと思います.

来年の総大会も楽しみです.

二日間ありがとうございました!

サーバーを借りるところからminecraftサーバーを立てるところまで

前書き

みなさんこんにちは

理系が恋に落ちたので証明してみたのアニメを見て白衣着たことねぇなぁって思っているなゆたです.

このブログはLOCAL学生部総大会企画ブログリレーの記事となります.

とりあえずサーバーを借りるところから

総大会が始まってすぐさくらのVPSを借りてドメインを取得.さっそく1万2千円ほどお金を使う.

そして設定

前提条件 PC:Mac サーバー:さくらのVPS

サーバーの設定まとめ

  • OSインストール(ubuntu18.04)
  • 一般ユーザーの追加
  • 公開鍵認証の設定(sshdを再起動しないと反映されない)
  • パケットフィルタ(ssh:22 minecraft:25565)
  • DNSの設定
  • minecraftサーバーのインストール
  • minecraftワールドのバックアップ

OSインストール

さくらのVPSのコンソールからサーバーを選択し,各種設定からOSをインストールします.

今回はubuntu18.04 LTSをインストールしました.

理由は特にないですが,単純に使い慣れているからです.

一般ユーザーの追加

OSをインストールしたら早速sshでログインします. ですがこの状態だとrootユーザーで簡単にログインできてしまうのでセキュリティがガバガバです. なのでminecraftを触る前に先に最低限のセキュリティをかけていきます.

$ sudo adduser USER_NAME

これでUSER_NAMEというなのユーザーを追加することができますのでUSER_NAMEを適宜置き換えてユーザーを作ります. そして管理者権限で実行するためのsudoを使えるようにします.

$sudo gpasswd -a USER_NAME sudo

これでUSER_NAMEというユーザーはsudoを使うことができるようになりました. 今のうちにユーザーを切り替えておきましょう.

$su USER_NAME

これで一般ユーザーに切り替わりました.

公開鍵認証の導入

これで一般ユーザーを作ることができましたが,セキュリティは何も解決していないのでここから認証を導入していきます. 今回は公開鍵認証を使います. まず自分のPCで

$ cd ~/.ssh
$ ssh-keygen -t ed25519 -f id_ed25519

します.

そうするとsshの鍵が作られますので

$scp id_ed25519.pub USER_NAME@XXX.XXX.XXX.XX:~/.ssh

します(XXX.XXX.XXX.XXにはサーバーのIPアドレスを入力してください) そうするとサーバーの方に公開鍵がコピーされますので,

$ssh USER_NAME@XXX.XXX.XXX.XX

してリモートサーバーにログインします. その後

$cd .ssh
$cat id_ed25519 >> authorized_keys
$chmod 600 .ssh/authorized_keys 

します. これで公開鍵認証ができます.

その後,パスワード認証と管理者アカウントでのログインを禁止します.

設定ファイルが

/etc/ssh/sshd_config にあります.

このファイルを操作するには管理者権限が必要なので

$sudo vi /etc/ssh/sshd_config

でviを使って操作します.

操作する箇所は

#PermitRootLogin yes

PermitRootLogin no

に,

PasswordAuthentication yes

PasswordAuthentication no

に変更してください.

これで設定は完了したので,

$sudo /etc/init.d/ssh restart

sshを再起動してください

パケットフィルタの設定

パケットフィルタの設定はVPSのコンソールで行います.

サーバーを設定した後パケットフィルタの欄から開きます.

その後,パケットフィルタ設定へというボタンを押し設定します.

今回はマイクラのサーバーとsshすることにしか使わないので,

ssh用のportの22番とminecraft用のportの25565番を解放し,ほかは使わないです.

sshの欄にチェックした後,カスタム接続許可port設定から25565番をTCPで設定します.

これでパケットフィルタの設定は完了です.ほかに使いたいportがあればここで許可してください.

DNS設定

これもさくらのDNSを使わせていただいたのでDNSのコンソールでゾーン設定から行えます.

dockerとdocker-composeのインストール

今回はminecraftのサーバーをdockerで立てようと思っています.

よってdockerをインストールします.

インストールは参考資料にある公式ドキュメントに従ってください.

minecraftサーバーのインストール

dockerを使って立てるのでDockerfileを書きます.

今回はk2wankoさんのminecraftサーバーを使うことにします.

まずminecraft関連のデータを入れるディレクトリを作りそこに移動します.

$mkdir minecraft
$cd minecraft
$vi minecraft

Dockerfile

FROM k2wanko/minecraft:forge-1.7.10

このファイルを作ったら

$docker build -t k2wanko/minecraft .

これでビルドが始まります. しばらく待ってビルドが終わったら,

$docker run -it -p 25565:25565 -e "EULA=true" k2wanko/minecraft

これでminecraftのサーバーが起動しますので設定したドメインminecraftでアクセスすれば入れるはずです.

参考文献

help.sakura.ad.jp

docs.docker.com

blog.adjust-work.com

カクヨムとスクレイピング

前書き

どうもなゆたです.

本記事はLOCAL学生部のAdvent Calendar 2019の15日目の記事です.

adventar.org

最近寒くて進捗も凍り付いております.

まぁそんなことも言ってられないので最近作ったツールの話をします.

作ったもの

kakuyomu_DL

カクヨムというサイトから小説のデータを保存するツールです.

カクヨムとは・・・カクヨムは、KADOKAWAが提供する小説投稿サイト。システム開発はてなが担当している。(wikipediaより)

なぜ作ったか

オンライン上の小説は読んでいてとても面白い分いつ消えてしまうかわからないという弱点もあります.

それをどうにかしたくて保存できるようにしました.

必要なもの

  • python3
  • requests

インストールの仕方は調べてください.

使い方

$ python3 main.py
DLしたいカクヨムのURLを入力してください
https://kakuyomu.jp/works/XXXXXXXXXXXXX

このような形で実行するとkakuyomu/ というディレクトリができるのでその中を確認するとそのタイトルの小説がDLされます.

やったこと

ほぼスクレイピングしてただけです.

HTML読みながらやってました.

多分正規表現使うともう少し楽に行うことができると思います.

あとがき

オブジェクト指向プログラミングのこころを読まないといけないと痛感してきています.

あと最近Webスクレイピングばかりしているのでもう少しいい感じのことをしたいですね.

課題とテストをこなしながら趣味のWeb小説漁りをしたいです.

次のアドベントカレンダーはことみんが担当みたいです.誕生日みたいです.おめでとうございます!

インフィニットループさんにインターンに行ってきました.

はじめに

どうも,最近ワールドトリガーとオタクに恋は難しいにはまっていたなゆたです.

同時並行で見てたんで話のノリが違いすぎて頭が混乱しました.

それはそれとしてインフィニットループさんにインターンに行ってきたのでまとめていこうかと思います.

インターンの内容

今回のインターンの内容は実戦スマホゲーム開発体験ということで実際に稼働していたゲームのサーバーサイドプログラムを読ませていただき,それを改造していくという内容でした.

www.infiniteloop.co.jp

実際に動いていたシステムを見させていただいたので勉強になった部分も非常に多かったのですが,PHPを書き始めたのがごく最近だったため,もっと勉強しておけばよかったと少し後悔しました.

インターンで得られた経験

今回のインターンは3日間という短い期間だったので言語の理解などよりも,実際に稼働していたプログラムを見てコメントの書き方,ログの吐き出し方などを学んだり,アイデアを出し合ってみんなで共同開発していくという経験をすることができました.また,Slackなどを使って開発していくやり方などにも慣れることができてとても勉強になりました.

また今回実際に動いていたプログラムを見せていただいたので,商業プログラムの分量であったり,クラスファイルの量などに衝撃を受けました.

まとめに

インターンシップ自体初めて行ったので緊張と不安がとてもありましたが,暖かく迎え入れてくれてとても楽しく勉強になる時間を過ごすことができました.

今回のインターンでサーバーサイドって面白いんだなって思いましたし,モチベーションがすごく上がったのでこれから色々開発していこうと思います.

インフィニットループさんに本当に感謝したいです.

おまけ

3日目のインターン終了後に部活動のボードゲームに参加させてもらいました.

ソクラテスラなどとても楽しかったのでまたやりたいです.

Dockerとembyを使ったストリーミングサービス構築

最初の経緯

お久しぶりです皆さん.

私事ですがさくらのクラウドさんでクラウドを借りました.

ただ何するかを全く決めないで借りてしまったのでとりあえずやってみようで借りました.

そしてググってたらミュージックストリーミングサービスを作れるとのことでやってみました.

必要なもの

  • クラウド(スペックは必要ないけど音楽入れるから容量は必要)

  • Dockerの環境

  • docker compose の環境

  • 強い意志

ディレクトリ構造

root/
┣reverse/
   ┣docker-compose.yml
┣emby/
   ┣docker-compose.yml
   ┣Music

別にrootからじゃなくても大丈夫です

docker-compose.ymlの書き方

reverseの方

version: '3'
services:
    proxy:
        image: jwilder/nginx-proxy
        container_name: nginx-proxy
        ports:
            - "80:80"
        volumes:
            - /var/run/docker.sock:/tmp/docker.sock:ro
        restart: always
    

networks:
    default:
        external:
            name: common_link

embyの方

version: '3'
services:
    emby:
        image: emby/embyserver
        container_name: emby
        volumes:
            - ./config:/config:z
            - ./Music:/mnt/Music:z
        environment:
            VIRTUAL_HOST: #自分のドメインを入力
            VIRTUAL_PORT: 8096
        ports:
            - "8096:8096"
            - "8920:8920"
            - "1900:1900/udp"
            - "7359:7359/udp"

        restart: always

networks:
    default:
        external:
            name: common_link

dockerの方でネットワークを作成します.

$ docker network create --driver bridge common_link

この後reverseとembyの両方で

$ docker-compose up

このあとVIRTUAL_HOSTで設定したドメインにアクセスするとembyの初期設定画面にアクセスできます.

構築まではこんな感じで行うことができます.

終わりに

こんな簡単にサービスを立ち上げることができるの本当にすごい・・・. Dockerとかコンテナ技術って本当にすごいんだなぁって実感してました.

参考文献

qiita.com

denor.daa.jp