投稿

12月, 2018の投稿を表示しています

HyTouch - Pythonのローカルパッケージインストーラー作った

Pythonでもpackage.jsonがあってnpm iしたらローカルインストールしてくれる感じのものが欲しかった。これまで機械学習用の環境構築はDockerに閉じ込めていたのだけれど、必要なパッケージを追加して行った結果いい感じに熟成してしまったDockerfileを見てDockerfile以外の解決法が欲しくなった。

作ったもの HyTouch https://pypi.org/project/hytouch/
基本的な使い方などはGitHubで https://github.com/tackman/HyTouch

pip install hytouch でインストールできると思います。

概要 Python上で実行されるLisp方言、Hyを利用したPythonローカルパッケージインストーラ&タスクランナー。プロジェクトディレクトリにpackage.hyファイルを置いて

hytouch install

とすると、プロジェクトディレクトリ内の.hytouchにインストールしてくれる。

hytouch run task-name

でいろいろ実行可能。

検証環境 Arch Linux/ Python 3.7

Pythonバージョンに関しては3.7でハードコードしているので、これ以外では確定で動かないと思います。OSに関してはUNIX-likeなCLI上では多分動くはず。生のWindodwsは知らない子なので、WSL使ってください。
virtualenvについて Pythonで環境保持といえばvirtualenvが一番メジャーだけれど、毎回activateコマンド打つのはダルいしプロジェクト単位での依存性がプロジェクト内で閉じてくれない感じがしてイヤだった。あと手なりでやると環境構築がコード化されない(package.json相当の標準的なものがない)のがつらい。

オチ これでPythonの依存性管理もできるじゃん!わたし天才!と思ったけれど、ディープの環境構築で2番目に闇なCUDA導入まわりが全く解決しないことにHyTouchを作ってから気づいた(1番目はGPUのドライバ)。そもそもnvidia-docker利用をしている理由の95%くらいがCUDAまわりの環境汚染が嫌だったからなので、ここがなんともならない以上Dockerから離れられる理由がなかったのです。

百合紅のインストについての私見

初心者がいるときに百合紅拡張を入れていいのか問題。今日は3人が初心者だったから拡張を抜いたけどね。わからーん — yoshimuraspeed (@yoshimuraspeed) 2018年12月15日ちなみにですが、個人的には拡張入れた方がグッと楽しくなると思ってます。
なので、初プレイでも拡張入れて遊んで欲しいところもちょっとある。んだけど、ホントにインストすべき要素は(初プレイ時では顕著に)増えるんで、なかなか悶える。— もあいやん (@more_iyan) 2018年12月15日  というツイートを受けて、百合紅のインストについて考えた所見をまとめます。なお、本エントリの内容は公式見解でも要請でもなく、あくまで試論です。私自身は百合紅の作者ではありますが、百合紅を全く知らない人にインストした経験が特別多いわけではないので、どのようなインストが望ましいかという意見についてはプレイヤーの皆さんと平等な立場だと考えています。

全員未経験者、ルール読みから始める場合 拡張なしを強くおすすめします。百合紅のルールブックは現代ボードゲームの中では比較的厚い部類に入ります。かつ、メカニクスは元ネタにした「クレムリン」を別にすると類例があまりなく、他ゲームからの類推がやや効きづらいゲームになっています。これらの条件下では、ルールの複雑性が増す拡張要素は初ゲームでは入れない方がいいと考えています。


一部のプレイヤーが未経験者で、未経験者がゲーム慣れしていない場合  拡張なしをおすすめします。基本版のみのルールでも、消化するべき内容はそれなりにあるため初プレイでは複雑性の高い拡張は入れない方がいいと考えられます。

一部のプレイヤーが未経験者で、全プレイヤーがゲーム慣れしている場合 インストを行う人が「良いインストを行う人」の場合に限り、最初から拡張を入れても良いと思います。「全員がゲーム慣れしている」「プレイ経験のある人がいる」「良いインストを行う」、これら3つのうち1つでも満たされない場合、基本版でインストを行った方が無難だと思います。

3番目はエッジケースで、微妙な部分があるためもう少し詳しく解説します。

「全員がゲーム慣れしている」の目安 世間のボードゲームプレイヤーの中では、比較的高リテラシー層を想定しています。

・「正体隠匿」「バッティング」などの用語で「ああ…

行列のできるパスタ屋さんゲーム

バイトがゆで時間の違うパスタを渡してきてしまいます。客は病的な短気で、1分待つごとにお店の評価が下がります。バイトから受け取ったパスタのゆで時間を予想して、1分でも早くアルデンテを客に出しましょう!

ジャンル:協力型ゲーム

ターンごとのアクション バイト役プレイヤー 手札のパスタカードを鍋エリアに1枚伏せて入れる。
パスタカードはラウンド開始時に7枚配られる

シェフ役プレイヤー 鍋エリアにあるパスタを1枚選び、ソースと合わせて完成品にする

ホールスタッフ役プレイヤー お客カードを1枚めくって中身を確認する
お客カードの中身を他の店員に知らせてはいけない
完成品をお客に出す

店長役プレイヤー(GM、なくても可) お客カードを毎ターン2枚-2枚-2枚-1枚ずつ並べていく(合計7人)
ゲーム進行以外で店員プレイヤーと直接コミュニケーションを取ってはいけない
人間が店長役をやる場合、配布するお客カードを見てニヤニヤしたり店員がトチったら叱責したりしてみましょう


カードの中身 パスタカード それぞれ茹で上がり時間が違う
3分~12分、分布は二項分布

お客カード ・入店から待てる時間の上限 上限を越えると帰ってしまう(マイナスVP)
・麺の質に対するこだわりの有無(なし / アルデンテ / しっかりゆで)
 こだわり以外の麺を出すと帰ってしまう。海原雄山なので大きなマイナスVP

ゲーム終了と勝利点 最終的に獲得できるVPの最大化を目指します。獲得・マイナスVPはカードに記載されているものです。