室八フェリーハッカソンに参加した(かった)話
はじめに
この記事はLOCAL学生部アドベントカレンダー3日目の記事です.
こんにちは.
最近マイクラやGTA5などをやり続けているなゆたです.
この記事は室八フェリーハッカソンに参加した(かった)話を書いていこうと思います.
室八フェリーハッカソンとは
2018年、室蘭市と宮古市間にフェリー航路が就航したことを記念し、フェリー船内で観光アプリなどを開発するハッカソンが開催されました。以来、毎年開催されてきた「フェリーハッカソン」が今年も開催されます!!
室蘭・八戸航路をフェリーで旅行しながら、船内で楽しく過ごせるアプリを作成してみませんか? ご興味をお持ちの方は是非ご検討ください。
というような形で,要約すると,フェリーの中で,船内で楽しめるアプリの作成をするハッカソンです.
去年も私は参加していたのですが,とても楽しかったこと,そして友達に誘ってもらったこともあり,今年も参加しようと思い,申し込んでいました.
しかし,ちょうど北海道で新型コロナウイルスの感染者数が増え始めた時期で,拡大防止のため中止になってしまいました.
とても残念ですが,仕方がないこととあきらめるしかありませんでした.
準備してたこと
大枠としてはWebとARを使ったモバイルアプリを作ろうかという話をしていました.
具体的な部分はフェリーに乗ってから決める予定だったのであまり決まっていませんが,クイズや,ゲームなどを考えていました.
準備の時点で何してたか,そして何を苦労したか.
今回の私の役割が,結構あいまいで,技術的にはWebインフラ(raspberry pi)の設定などを友達と二人でやりながら,プロジェクトマネージャーちっくなこともしていました.
意見をまとめたり,実装の優先順位を決めたりなどをしていました.
またARはわからないものの,インフラと合わせて,webサーバーサイドもある程度は理解できるので,コードレビューも何となくしていました.(できていたとは言えませんが.)
まとめ
ちょうど準備始めたくらいで中止が決まってしまったので,実際の実装はあまりできていないのもあって少し悲しいですが,せっかくなので,きちんと作って
フェリーハッカソンの主催である,アーバンデータチャレンジのほうに応募しようという話をしていました.
完全に準備が止まっていますが.そろそろ作っていけたらいいなって思っています.
実際に参加して入ればもっと写真とかいろいろ付けれたんですが,これくらいで許して下さい(白目)
明日の学生部アドベントカレンダーはまだ埋まっていないようです.
せっかくなので誰か埋めてくれたらうれしいですね.
執筆時点では次は5日の榊 徹君が担当のようなのでわくわくしながら待ちましょう.
incoming webhooksを使ったslack送信ライブラリをcomposerで公開した話
はじめに
お久しぶりです.
この前発売したポケモンダンジョンをやりながらどうぶつの森を待ち続けているなゆたです.
最近incoming webhooksを使ってslackに送信する処理を書いていて,これライブラリにした方が簡単だなって気づいてライブラリにして公開しました.
ライブラリについて
nayuta1999/sendslackerという名前でライブラリを公開しました.
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に登録する.
このサイトからsign inします.githubのアカウント使うと楽ですね.
そのあとsubmitのところからリポジトリのURLを登録します.簡単ですね.
意識したポイント
- ライセンス
せっかくライブラリを作ったので使ってもらいたかったのでライセンスを設定しないのではなくMITライセンスを使いました.
他にも色々ライセンスがありましたが,GuzzleがMITライセンスを使ってたのでMITライセンスを使いました..
- READMEをちゃんと書く
他人に使ってもらえるライブラリを目指したので他の人のライブラリを見ながら使い方やinstall方法などを書きました.
もっとここを書くと良いなどを教えてもらえると嬉しです.
まとめ
今まであまり自分が作ったものを公開してこなかったので少し怖いですが少しずつ自分の進捗をこのように公開していきたいと思っています.
指摘・改善等ありましたらプルリクエストお待ちしていますのでお願いします.
LOCAL学生部総大会とお気持ち
なゆたです.
LOCAL学生部総大会に参加してきました!
楽しかったこととか色々まとめていけたらいいなと思います.
初日
オリエンテーション
今回の総大会はbitstarさんのラウンジを使わせていただきました.とても広くて心地よい空間ですごくいい空間でした.
部長の挨拶から始まりました.自己紹介などを行ったんですがみんなつよつよで内心かなり震えていました...
ですがみんないい人ばかりでいろんな人と交流して楽しかったです.
LOCAL学生部総大会2019 スタート!
— LOCAL (@local_hokkaido) 2020年1月18日
ビットスターさんのラウンジにて開催中
普段なかなか会えない仲間と、気軽にコミュニケーションをとりながらわいわい作業ができるのは楽しいですね。
今回の成果を、次の学生部同人誌でまとめる予定です。#local_do #localst19 pic.twitter.com/Ush2YNRElw
作業開始
今回私がやっていた作業は前のブログの記事に載っていますのでそちらを参照ください.
まぁ雑にいうとサーバーをその場で借りて,その場でドメインをとってマイクラのサーバーを立てるという行き当たりばったりのことしてました.
晩御飯
晩御飯はbitstarさんに美味しいご飯をご馳走していただきました!
とても美味しかったです.
LOCAL学生部総大会2019
— LOCAL (@local_hokkaido) 2020年1月19日
2020.01.18. 集合写真
夕食は、ビットスターさんがご馳走してくださいました。
ごちそうさまです!!ありがとうございます!#local_do #localst19 pic.twitter.com/pCWvkp8LMg
夜の作業
セミナーハウスに移動した後シャワーを浴びたりしたのち食堂でのんびり作業していました.
ここではほとんど試行錯誤していてあまり進捗は出ませんでした...
私は2時くらいには寝ましたが遅くまで起きている人もいて体力がある人は強いなぁって思いました...(もう若くない.)
2日目
朝起きる
8時過ぎに起きました.朝に弱いので寝坊しなくてよかった...
おきた #localst19
— 那由多 (@nayuta_1999) 2020年1月18日
LT
二日目の作業はLT資料を作っていました.
普通に資料作ろうと思ったらスライド作成ソフトが手元に全くインストールされていなかった...
なのでとりあえず手元にあったLaTeXで資料を作ることにしました.
普段の3倍くらい作業量があったと思います.
今回のスライドの内容は公開するつもりはあまりないんですが大雑把にいうと私の高専,私立高校,大学での経験をもとにどうしてこうなってどうしたらよかったかを雑にまとめたものです.特に高専と高校の比較を強めにやっていたので,何かしら思うことがあったら嬉しいなって思います.(俺のようにならないで欲しいので頑張って欲しい)
なゆたくんのLT#localst19
— がっちゃん@人間になりたかった (@gacchaaaaann) 2020年1月19日
”ネタ枠です”#localst19
— がっちゃん@人間になりたかった (@gacchaaaaann) 2020年1月19日
なゆたー#localst19
— さんたろ (@papyrustaro) 2020年1月19日
テトリスにハマっているらしい#localst19
— がっちゃん@人間になりたかった (@gacchaaaaann) 2020年1月19日
今日のしくじり先生:那由多先生#localst19
— がっちゃん@人間になりたかった (@gacchaaaaann) 2020年1月19日
高専でも副専門もちゃんとやらなきゃいけない#localst19
— がっちゃん@人間になりたかった (@gacchaaaaann) 2020年1月19日
LT会でしくじり先生始まってわろた
— たなか (@tanakarn98) 2020年1月19日
#localst19
わかりみがふかい#localst19
— 小玉 秀郎👁🗨 (@kodamanbou0424) 2020年1月19日
仲間がいるから何とかなると思っていたが,仲間みんなで落ちるだけだった#localst19
— がっちゃん@人間になりたかった (@gacchaaaaann) 2020年1月19日
教員免許持ってない先生もいたからなぁ#localst19
— 小玉 秀郎👁🗨 (@kodamanbou0424) 2020年1月19日
先人の教えがささりまくってる#localst19
— げんし (@genshi0916) 2020年1月19日
うまくやっていきましょう#localst19
— みやもっちゃん (@saberhanako) 2020年1月19日
技術の話ではなかったけど,結構大切な中身だった#localst19
— がっちゃん@人間になりたかった (@gacchaaaaann) 2020年1月19日
頑張れ高専生#localst19
— がっちゃん@人間になりたかった (@gacchaaaaann) 2020年1月19日
ばいばい高専#localst19
— げんし (@genshi0916) 2020年1月19日
環境を変える選択肢、アリだな#localst19
— 小玉 秀郎👁🗨 (@kodamanbou0424) 2020年1月19日
Q."最近起きれてるんですか"#localst19
— がっちゃん@人間になりたかった (@gacchaaaaann) 2020年1月19日
— げんし (@genshi0916) 2020年1月19日
まとめ
LOCAL学生部の総大会に初めて参加したので,最初は雰囲気をつかむのに苦戦しましたがとても楽しかったです.
また,いろんな人からいろんなやり方を吸収できて楽しかったですし,周りの進捗を見て自分も頑張らなきゃと思ったりととてもいい影響を受けることができました.
少しでもこのコミュニティに自分が貢献できたらいいなと思います.
来年の総大会も楽しみです.
二日間ありがとうございました!
サーバーを借りるところからminecraftサーバーを立てるところまで
前書き
みなさんこんにちは
理系が恋に落ちたので証明してみたのアニメを見て白衣着たことねぇなぁって思っているなゆたです.
このブログはLOCAL学生部総大会企画ブログリレーの記事となります.
とりあえずサーバーを借りるところから
総大会が始まってすぐさくらのVPSを借りてドメインを取得.さっそく1万2千円ほどお金を使う.
そして設定
サーバーの設定まとめ
- 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
します. これで公開鍵認証ができます.
その後,パスワード認証と管理者アカウントでのログインを禁止します.
設定ファイルが
このファイルを操作するには管理者権限が必要なので
$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でアクセスすれば入れるはずです.
参考文献
カクヨムとスクレイピング
前書き
どうもなゆたです.
本記事はLOCAL学生部のAdvent Calendar 2019の15日目の記事です.
最近寒くて進捗も凍り付いております.
まぁそんなことも言ってられないので最近作ったツールの話をします.
作ったもの
カクヨムというサイトから小説のデータを保存するツールです.
カクヨムとは・・・カクヨムは、KADOKAWAが提供する小説投稿サイト。システム開発ははてなが担当している。(wikipediaより)
なぜ作ったか
オンライン上の小説は読んでいてとても面白い分いつ消えてしまうかわからないという弱点もあります.
それをどうにかしたくて保存できるようにしました.
必要なもの
- python3
- requests
インストールの仕方は調べてください.
使い方
$ python3 main.py DLしたいカクヨムのURLを入力してください https://kakuyomu.jp/works/XXXXXXXXXXXXX
このような形で実行するとkakuyomu/ というディレクトリができるのでその中を確認するとそのタイトルの小説がDLされます.
やったこと
ほぼスクレイピングしてただけです.
HTML読みながらやってました.
多分正規表現使うともう少し楽に行うことができると思います.
あとがき
オブジェクト指向プログラミングのこころを読まないといけないと痛感してきています.
あと最近Webスクレイピングばかりしているのでもう少しいい感じのことをしたいですね.
課題とテストをこなしながら趣味のWeb小説漁りをしたいです.
次のアドベントカレンダーはことみんが担当みたいです.誕生日みたいです.おめでとうございます!
インフィニットループさんにインターンに行ってきました.
はじめに
どうも,最近ワールドトリガーとオタクに恋は難しいにはまっていたなゆたです.
同時並行で見てたんで話のノリが違いすぎて頭が混乱しました.
それはそれとしてインフィニットループさんにインターンに行ってきたのでまとめていこうかと思います.
インターンの内容
今回のインターンの内容は実戦スマホゲーム開発体験ということで実際に稼働していたゲームのサーバーサイドプログラムを読ませていただき,それを改造していくという内容でした.
実際に動いていたシステムを見させていただいたので勉強になった部分も非常に多かったのですが,PHPを書き始めたのがごく最近だったため,もっと勉強しておけばよかったと少し後悔しました.
インターンで得られた経験
今回のインターンは3日間という短い期間だったので言語の理解などよりも,実際に稼働していたプログラムを見てコメントの書き方,ログの吐き出し方などを学んだり,アイデアを出し合ってみんなで共同開発していくという経験をすることができました.また,Slackなどを使って開発していくやり方などにも慣れることができてとても勉強になりました.
また今回実際に動いていたプログラムを見せていただいたので,商業プログラムの分量であったり,クラスファイルの量などに衝撃を受けました.
まとめに
インターンシップ自体初めて行ったので緊張と不安がとてもありましたが,暖かく迎え入れてくれてとても楽しく勉強になる時間を過ごすことができました.
今回のインターンでサーバーサイドって面白いんだなって思いましたし,モチベーションがすごく上がったのでこれから色々開発していこうと思います.
インフィニットループさんに本当に感謝したいです.
おまけ
3日目のインターン終了後に部活動のボードゲームに参加させてもらいました.
ほんに...誰だお前!? pic.twitter.com/EN7WYb2OWc
— なゆたくん (@nayuta_1999game) 2019年8月30日
ソクラテスラなどとても楽しかったのでまたやりたいです.
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とかコンテナ技術って本当にすごいんだなぁって実感してました.