Python mini hack-a-thon 雪山合宿 2018に参加した #pyhack

合宿としては4回目 Python mini hack-a-thon 雪山合宿 2018 - connpass にいってきました。過去の記録を辿ると夏、冬それぞれ2回ずつの参加だそうです。

今回やったこと

だいたいこんな感じです。それ以外にはtmuxとより仲良くなろうとしたり、UbuntuにKindle入らないなーと思ってうんうん唸ってたりしました。

1日目

会社のバターコーヒーエバンジェリストの影響で飲み始めた、バターコーヒーをお供に新幹線で出発。

恒例の刀屋

普通そうに見えますが、実はどんぶりにぎっちりとそばが敷き詰められており大変ボリュームがありました。満足。

2日目

2日目は昼間はほぼスノボして、一眠りしたら夜はボードゲームしてました。

雪山の様子

約1年ぶりのスノボしてきました。あんまり雪が積もってなかったこともあり、雪がカチコチですっ転ぶとヒッププロテクターをつけていても痛みで悶絶しましたが強い心で滑ってきました。

3日目

前日スノボですっ転んだときのダメージか、首筋が痛む3日目。朝昼と堪能し、それ以外は疲れて寝てた…

帰りの新幹線では何故か急にdotfilesのsetupスクリプトをPython化しようと思い立ってコーディングしてました。 結果はこんな感じ→ dotfiles/setup.py

またいくぞー。

Linuxデスクトップを半年ぶりに導入した

macOSからArchLinuxにしたが結局macOSに戻ってきた話 — kashew_nuts-blog 以来半年ぶりにLinuxデスクトップを導入しました。

多少の問題はありますが、今のところ快適です。安定して使えていますね。

動機

「メモリのゆとりは心のゆとり」と誰かがいってました。

これまでプライベートのPCは最大メモリが8GBだったのですが、PyCharmやVMを気兼ねなく使えるとはいえず、Dockerを使うにも快適とは言えませんでした。OS面で言ってもmacOSでがんばるのも、Windowsに適合するのもつらそうだなと思い、原点回帰してUbuntuをデスクトップで使うことにしました。

Ubuntuを初めて使ったのは大学生の頃、最初に入っていたWindowsXPをまるごと消し飛ばしたのが最初だったと記憶しています。バージョンも8.04LTSがでた頃でした。今回は最終的にUbuntu17.10を入れました。

PC事前準備

新しいPCを購入ました。

../../../_images/inspiron-laptop-13-7000-polaris_hero.jpg

macbookはハードウェア・ソフトウェアの両面から魅力を感じなくなってきたので、 Dellの Inspiron13 7370 という機種を購入しました。第8世代のCPUなのでCore i5でいいかなと思ったのですが、メーカーのサイトでマニュアルを見てみるとメモリの換装が困難(というか無理)そうだったので諦めてはじめからフルスペックモデルです。

Linuxデスクトップを導入するにあたり、気になっていたのは次のとおりです。

  • WiFiやBluetooth接続

  • サスペンドやハイバーネーションといった電源周り

  • HDMIなどの外部接続

  • Linuxデスクトップとして動いている実績があるか

PCメーカーとしてDellはUbuntuの対応も長く続けていますし、情報も多そうだったので問題ないと思い選択しました。キーボードの打鍵感や配列、トラックパッドの感触も確認して問題なさそうだったので購入。

ディストリビューション選び

Linuxデスクトップとしてはこれまで Ubuntu(数回) -> ArchLinux(Antelgos) ときたので再度 ArchLinux にしようかとも思いましたが、ここでは Ubuntu を導入することにしました。

../../../_images/ubuntu-logo.png

理由としては、次のとおりです。

  • 情報は少ないより多いほうがいい

    • Ubuntuの情報は多い

    • ArchLinuxのWikiも参考になることはわかっている

    • 両者をいいとこ取りしよう!

  • ローリング・リリースよりLTSも考慮に入れた運用を行いたい

    • ArchLinuxで常に最新が使える環境はよかったが、ドキドキすることも確かだった

    • Ubuntuは半年に一回、もしくはLTSで二年に一回に新しくできるので心の準備ができる

    • 「もしかしたら今日PCが起動しなくなるかも…」と考えるなら、最新より心の安定をとりたい

  • デスクトップ環境がUnityからGnomeに戻る!

    • これが一番大きかったかも(?)

バージョン選びはLTS版のUbuntu16.04LTSを導入しようとしました。 しかし自分の環境では appstreamcli というのがエラーをはき、対応したかと思ったらそれ以降も定期的にエラーを吐くので「どうせUbuntu18.04LTSでGnomeになるのだから17.10にしよう」と思い、Ubuntu17.10を入れることにしました。

Ubuntu17.10はBIOS破壊のバグがあったりしたようなのですが、自分のマシンは対象じゃなかったことと、ちょうどBIOS破壊の対応をしたバージョンがリリースされたようだったので採用しました。

[参考] 「BIOS破壊バグ」を修正したUbuntu 17.10.1のISOイメージ公開。本家・日本語Remix・各フレーバーまとめ | Linux Fan

Windows側で事前準備

Ubuntuをインストールする前に、 Windowsは消さずにUbuntuとのデュアルブート構成にする ことにしました。

理由としては「出荷状態に戻す手段を確保しておきたかったから」です。 USBメモリをリカバリ用に設定・作成しておけたとして、USBを紛失するリスクはゼロじゃないですし、 0.1%くらいWindowsを使いたくなる機会があるかもしれないと考えました。

なのでWindows側で事前準備として以下を実施。

  • コンピュータの管理かUbuntu用のディスク空き領域を確保

    • Ubuntu: 350GB (メインで使うのでガッツリ確保)

    • Windows: 120GB (WindowsUpdateなどで40~60GBぐらいは使ってる記憶があったので余裕をもたせた)

    • 残: リカバリ領域など

  • 高速スタートアップとセキュアブート解除:

    • これらを設定しないとOSのインストールや起動、ファイルシステムのマウントに問題が発生しうるらしい

ディスクの空き領域は自分で決めましたが、Dellが公開している Dell PCでデュアルブートとしてUbuntuおよび最近のWindowsオペレーティングシステムをインストールする方法 | Dell 日本 のままに作業を進めました。

インストール自体はつつがなく終了。

Ubuntuの使用環境

../../../_images/ubuntu_desktop_image.png

使用環境を書いておくと次の通りです。

ログインプログラム

GDM

デスクトップ環境

Gnome

日本語入力

iBus + mozc

ターミナル

gnome-terminal

デフォルトのままですね。困ったことがでてくるまではこのままで行こうとおもってます。

Ubuntu側の設定

さて日本語Remix版ではない本家版のUbuntuを入れたので、日本語の言語設定がすんでいません。 それ以外にも必要なアプリケーションなどもあるので、何を行ったのかを書いておきます。

最新版にアップデート

ログイン後にアップデートを促されたので指示にしたがって実行

各種必要なツールをインストール

念のため最新化

$ sudo apt update -y & sudo apt upgrade -y

ビルドに必要なツール群導入

$ sudo apt -y install build-essential libsqlite3-dev libreadline6-dev libgdbm-dev zlib1g-dev libbz2-dev sqlite3 tk-dev zip libssl-dev

CLIツール導入

$ sudo apt install vim-gnome tree git curl python peco tig golang golang-go tmux jq

CapsLockキーをCtrlキーにする

$ gsettings set org.gnome.desktop.input-sources xkb-options "['ctrl:nocaps']"

ディレクトリ名を英語にする

ホームディレクトリにある「ダウンロード」や「デスクトップ」といったディレクトリ名を英語にする

$ LANG=C xdg-user-dirs-gtk-update

PyCharmインストール

deb を落としてこようとしたら、JetBrainsのサイトで「 snap を使え」とでてきたので指示にしたがって導入

$ sudo snap install pycharm-professional --classic

DLが必要だったものをインストール

  • GitHubのreleasesよりDLして導入

    • Ricty Diminied : 等幅フォント

    • ghq : リポジトリ操作用

    • pt : コード検索

    • hub : Gitのヘルパー

  • 各種Webサイトより deb をDLしてきてインストール

    • Dropbox: ファイル共有

    • Google Chrome: ブラウザ

    • Slack: チャットツール

    • VirtualBox: 仮想環境管理ツール

    • Vagrant: VirtualBoxのラッパー

各種設定を変更

  • 言語サポート: 言語->言語のインストールと削除: 日本語 にチェックをつけてインストール

  • 設定

    • デバイス->マウスとタッチパッド->ナチュナルスクロール: OFF

    • Dock->Dockを自動的に隠す: ON

    • サウンド->音響効果->警告音の音量: OFF

    • 電源管理->画面の明るさ: 最小

    • 電源管理->キーボードの明るさ: 真ん中

    • 詳細->ユーザー: アイコンを好みのものに変更

  • ibus-mozc: ツール->プロパティ->一般->キー設定->キー設定の選択: 以下の設定を追加

    • すべてのモード(直接入力、入力文字なし、変換前入力中、変換中、サジェスト表示中、サジェスト選択中)、入力キー「ESC」、「Ctrl+[」のコマンドを「キャンセル後IMEを無効化」にする

    • モード「直接入力」、入力キー「Henkan」のコマンドを「IMEを有効化」にする

    • モード「入力文字なし」、入力キー「Muhenkan」のコマンドを「IMEを無効化」にする

  • ログイン時: ログインボタンの左隣にある歯車を選択し WaylandXorg に変更

    • WaylandだとIMEで変換候補が明後日の場所にでる。

  • GnomeTerminal: 設定->プロファイル

    • 全般->常にメニューバーをデフォルトで表示する: OFF

    • プロファイル->編集:

      • 全般

        • 起動時の端末サイズ: 100 列, 50

        • 端末ベルを鳴らす: OFF

        • 文字の外観->フォントを指定する: Ricty Diminied Regular 14

        • 文字や背景の色->組み込みのスキーム: 黒背景に灰色文字

        • 文字や背景の色->透過の背景をON: 20%透過

        • バレッド->組み込みのスキーム: Linuxコンソール

  • GNOME Tweeks: GNOME3の高度な設定

  • ufw有効化

解決したこと

単に設定しておけばOKというものでもなかったものについてメモしておきます。

Bluetoothヘッドホンがぷちぷちいってる

プロファイルを変更して対応(HSP/HFP→A2DP)

gnome-terminalのタブが慣れない

gnome-terminalは背景の透過ができたけど、vimが透過されない

mozcの変換候補がGoogleIMEのと比べて弱い…

(若干)気になっていること

細かいことは必要になったときに対応するつもりですが、現状で気になっているのは次のとおりです。

外部ディスプレイの推奨解像度だと出力が認識されない

奮闘の記録としては以下のような感じ。 せっかくだから最大出力でやりたいところだが、今のところ対応策は検討がついてない…

  • Ubuntu側の設定をミスって、外部ディスプレイの方だけ移すようにしてしまったので余計に…

  • 電源をOFFにしてから接続しようとしてもNG

  • xrandrコマンドも試してみたがうまく行かず。

  • xrandrコマンドでうまくいった (ただ、PC側の最大解像度と同じところまでしか出力できないっぽい?)

    • HDMIケーブルで接続した状態で(PCの画面は黒いままだが)xrandrコマンドをやることで認識していることは確認

    • 試しにPC側と同じ解像度を選択したらいけた。

  • 外部ディスプレイは2560x1440が推奨だが、1920x1080までしか出力できていない(←いまココ)

(1/31追記)

  • Windows側でグラフィックス・ドライバー(と念のためモニタのドライバー)の更新を行った。 Windows側は2560x1440で識別できるようになったが、Ubuntu側は状況変わらず。

  • Ubuntu側でグラフィックス・ドライバーを更新するようにUpdateToolを導入して更新してみたが状況変わらず。

(3/7追記)

  • DisplayPortの出力ならいけるかもという情報を得た。

  • TypeC->DisplayPort の変換アダプターを購入したところ2560x1440(WQHD)の出力ができた!!!

  • HDMIでフルHDより大きい出力は鬼門らしい…

peco-historyでターミナルに実行するコマンドがでてこない

pecoでインタラクティブにヒストリを検索→実行するようにしていたが、何故か実行時に一度ターミナルに出力するようにしていた実行コマンドが出力されなくなってしまったので、デフォルトの挙動に戻した。けどmacOSでは動いてるので何か違うのだとは思う。

(1/30追記)

改めてLinux用に記述を書いたら動いた。macOS用の記述と分離してるので気が向いたら整備し直したい。

(1/30追記) WindowsとUbuntuを切り替えて起動するにはUFEIで設定の切り替えが必要

普通に起動時にUbuntuもWindowsも起動できそうな画面がでてきます。 しかしセキュアブートをOFFにした影響らしく、Windowsを起動しようとすると次のような画面が表示され、回復キーの入力が求められました。

回復キーを毎回入力する羽目になっても嫌なので入れずに済む手順を探すことにします。 「セキュアブートを再度有効にするか、BitLockerを中断してWindowsを起動する必要がある」と書いてあるので BitLockerを中断したらいけるかなと思って試しましたがダメでした。BitLockerをWindows側でOFFにすればいけるかなとも思ったのですが、面倒だったのでやめました。

結局Windowsを起動するときは次のような手順を踏むことにしました。

  • UFEIを起動する (自分のPCだとF12キー連打しながら電源ON)

  • セキュアブートを ON

  • ブートシーケンスの一覧にある Ubuntu のチェックボックスを OFF

  • 保存して終了するとWindows起動

Ubuntuに戻すときはON/OFFにしたものをもとに戻して対応します。 若干面倒ですがほぼWindowsは使わないので問題ないと判断。

まとめ的な

マシンパワーは申し分ないし、MackBook Proを使っていたときに困ったところも解消できてるしでほとんど言うことはないですね。(若干)気になっているところもありますが、全体的に快適な開発環境を作れた感じです。

Sphinx + 翻訳 Hack-a-thon 開発合宿に参加しました #sphinxjp

一泊二日で行ってきました。イベントのURLは次のとおり。

Sphinx + 翻訳 Hack-a-thon 開発合宿 - connpass

会場は 国立女性教育会館 という埼玉県比企郡嵐山町にある宿泊研修施設で行いました。新宿から1.5hでいけて値段も手頃だったので作業に集中できてよかったです。

1日目やったこと

13:00ぐらいに集合して、合宿スタートしました。やったことは次のとおりです。

Djangoの公式ドキュメント https://docs.djangoproject.com/ja/ を翻訳

8月に翻訳プロジェクトにJOINして、ちょっと間が空いていたのでこれを期に取り組みました。実施したのは次のとおりです。

Djangoフォームの進捗率を出すのに、Django documentationの Django を使う 全体、つまりモデルやURL、テンプレート、Class-based views、マイグレーションなど topics 全体を対象にTransifexが計算してるので、進んでる感じがあまりしない…

翻訳したのはいずれかのタイミングで反映されると思います。

Vim談義をした

夕飯→お風呂を堪能したあと軽くVim話をしたりしました。

  • clipboard オプションを題材にVimのバージョン情報の見方、ヘルプの引き方、設定してあるオプションの見方を話した。

  • 「デフォルトの動作を覚えるとプラグイン使わなくてもできますよ。」という話をした。

  • 「必要だったらVimはビルドすることもありますよ」と話したら、「Gentoo以外でビルドしたくない!」と言われそうゆうものかーと思った。

「Vimモヒカンがいる」とかいわれたけどそんなことないよ。ヘルプの引き方知ってるだけだよ。

PCどうしよう話をした

某社(っていっても2社だけど…)のPCを使うツラみを共有した後、DellやThinkPad使えばいいんじゃねという話をした。注文したDellのPCはやくこないかなー。

この日は日付変わる頃に部屋に戻って、1時前には寝てたと思います。はやい。

2日目やったこと

珍しく7時前に起きてゆるゆると朝食に。

朝ごはん食べてる時にちょっとアクシデントがあったけどごめんなさい。

ご飯を食べて作業場所に移動中、凍結していた池に突撃したりしました。

1日目につづき、Djangoフォームの翻訳を進めました。1日目に精根尽き果てたのか、この日はあまり捗らなかった… やること微妙に変えたりしてリフレッシュするのも大事ですね。

雑感

開発合宿は夏と冬に #pyhack でいったことしかなかったが、今回は場所も集中しやすい環境ができていたので作業が捗ったのはよかったです。 今後も無理にならないペースで翻訳とか携わっていけたらいいなと思います。