GitHub ActionsのYAMLフォーマット、統一されてなくて困る

Twitterでも、社Slackでも度々愚痴を漏らしているのだけど、GitHub ActionsのYAMLフォーマットが統一されてなくて枕を濡らしている。

GitHub Actions カテゴリーの記事一覧 - がんばってなんか書く にも書いている通り、自分はいくつかのGitHub Actionsを細々と作っている。
しかし、プロジェクト毎に、さらにはプロジェクト内でも統一ができていなった。

自分はこういった細かいことを気にしてしまう性分なので、重い腰を上げて統一することにした。
熟考の末、自分の管理するGitHub Actionsでは、 kebab-case に統一した。
理由はいくつかあるけど、最終的には自分が見た時の見やすさが一番優先された形だ。

これまでに利用してくれている方にはお手数おかけしますが、変更お願いします。 *1

余談

ところで、actions/typescript-action をテンプレートとしてGitHub Actionsを作り始めると、 kebab-case の入力をテストできない問題が、かつて存在していた。
JavaScriptは得意ではないので後回しにしていたけれど、新たにテンプレートからGitHub Actionsを生成した時に、すでにあるプロジェクトとの差分を読んだことで解決方法に気づいた。

github.com

現在はテンプレートから新規作成すると、kebab-caseでもテストが実行できる。

*1:lintのGitHub Actionsには、これ以外にもBreaking Changeがあります。

action-github-pr-release を作った

github.com

これはご存知 x-motemen/git-pr-release の再発明だ。
まだまだ本家には機能が足りないけれど、簡単に使うには十分なものになったので公開。
こんな感じ になる。

特にTemplateの機能がないと置き換えれない利用ケースが多いと思うので、対応したいとは思っているが...

最小だとこれだけで動いて便利

name: github-pr-release
on:
  push:
    branches:
    - develop
jobs:
  github-pr-release:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - uses: yutailang0119/action-github-pr-release@v1
        with:
          token: ${{ github.token }}

余談

内部では GitHub GraphQL API を使って *1 いて、いろいろな学びがあった。
しばらく TypeScript を書いていなかったのと、体系的に学んでいないことで時間がかかってしまったので、ちゃんと時間を取って学ぼうと思った。

作ったGitHub Actionsもだいぶ増えてきた *2

SwiftUI.AsyncImageのBackportを作っている

github.com

iOS 15/macOS 12/tvOS 15/watchOS 8から使えるようになる予定の SwiftUI.AsyncImage が便利で早く使いたいので、SwiftUIが使えるプラットフォーム全てで使えるように、Backportライブラリを作ってみています。

はてなの同僚たちに協力してもらって、AsyncImageのインターフェースと動作をトレースできるようになってきました。
Xcode 13 RCがリリースされるまでに変更はあるかもしれないけれど、対応していくので、ぜひ使ってみて、フィードバック、スターをもらえるとうれしいです💪

PixelaUI 1.0.0 リリースのお知らせ #pixela #PixelaUI

本日、すばらしい発表をみなさんにできることを、大変嬉しく思っています。

v1.0.0

本日、PixelaUI 1.0.0 をリリースしました!
主なアップデートは以下です。

  • アイコンをPixelaUIオリジナルに
  • iOS/iPadOS 14からのWidgetをサポート
  • ログイン情報の取り扱いを調整

ログイン情報に関わる改修をしたため、ファーストリリース時にもお知らせしていた 非互換の変更 を行なっています。 アップデート後、初回は再ログインが必要になるため、ご注意ください。

PixelaUI

PixelaUI

  • Yutaro Muta
  • ユーティリティ
  • 無料
apps.apple.com

ファーストリリースが 2020/01/22 なので、1年半かかりましたが、ついに v1 を迎えることができました。
Pixela本体のAdminである id:a-know さんの協力なしには、実現できませんでした。
改めて、感謝です。

アイコンのリニューアルについて

Appleレビューで、サードパーティアプリとしてアプリ名、アイコンが相応しくないとのリジェクトとなりました。
アプリ名は PixelaUI を変更せずにいたいですが、バージョンを 1 とするいいタイミングなので、アイコンをオリジナルのものに変更することにしました。

PixelaUIの新アイコン
新アイコン

このすばらしいアイコンは、はてなで同僚の id:mazco さんにお願いしました。
Pixelaのオウムを意識しつつ、他の鳥類がいいなと思っていました。
自分のカメラロールを見返して、ペンギンの写真多いと気づいたので、 結構ペンギンが好きみたいです。*1
その中でも、かっこいい感じがいいなと思ったので、イワトビペンギンをモデルにしてもらいました。

yutailang0119が描いた構想
yutailang0119が描いた構想

ちなみに

アプリ名やPixelaの素材利用について、現在はPixelaに利用規約ガイドラインがなく、個別に許諾をもらっています。
DroidKaigi 2018 iOS appのApple審査が通るまで - Konifar's WIP の事例を記憶していたので、 id:konifar さんに相談し、協力していただきました。
ありがとうございました!

有料化について

メジャーバージョンを 1 とする時に、アプリを有料にするかは悩んでいました。
広く使ってもらいたいという気持ちが勝ったので、少なくとも v1 の間は無料アプリとして提供します。

もし、個別にサポートしたいという方がいましたら、以下から支援いただけると、とてもありがたいです。

One more thing...

PixelaUI 1.0.0では、ついに macOS Big Surをサポート しました!
これまで、PixelaUIはAppleSoCマシン向けに、iOS/iPadOS互換アプリとしての配信をしていました。*2
v1 からはmacOS App Storeにも配信を開始したことで、AppleSoCマシン以外 *3 でも、PixelaUIをご利用いただけます。
もちろん、今回のアップデートに含まれるWidgetも、macOSで利用可能です。

ただし、現在はMac CatalystによるiPadOS互換の仕組みを利用したものとなっています。
最適なmacOS UIとはできていません。
今後のアップデートにご期待ください。

今回のお知らせは以上です。
今後しばらくは細かい修正になる気もしますが、引き続きよろしくお願いします!

*1:関係ないけど、南極にいるから寒い場所のイメージのあるペンギンだけど、実はほぼ南半球にしかいないの意外じゃないですか?

*2:betaの位置付けとして告知なし

*3:いわゆるIntel Mac

WEB+DB PRESS Vol.121 特集2 「iOS 14最前線」に寄稿しました #wdpress

宣伝

2021/02/22 (月) に発売予定WEB+DB PRESS Vol.121 *1 に寄稿しました!
担当は、特集2「iOS 14最前線」で、はてなで同僚の id:cockscomb id:kouki_dan との共著です。
その中で、自分は2章「UIKit」と5章「ウィジェット」の2つを担当しています。

一部の大手書店様では、2/15 (月) から、先行販売もあるようです。
もし見かけたら、お手にとってご覧ください!
また、電子書籍版の販売もありますので、合わせてよろしくお願いします!

f:id:yutailang0119:20210204171843j:plain:w300
表紙
WEB+DB PRESS|gihyo.jp … 技術評論社

経緯

昨年の10月に編集長の 稲尾さん に別件にて連絡をした流れで、「iOS 14の特集記事どうですか?」と声をかけていただきました。
今回はiOSにフォーカスした特集だったので、はてな社内でやりたいなと思って話を持っていき、同僚のid:cockscomb id:kouki_dan と一緒に共著とすることにしました。

前回 から1年を待たずしての再登場となりました。

余談

1

リポジトリに紐づくまとまった文章を書く時にはVisual Studio Codeを使っていましたが、 M1 Macにはインストールしていない ので、GitHubCodespaces を使って作業を進めました。
サンプルコードはXcodeで動かす必要があるけれど、日本語を書くだけの時はどこからでも同じ環境を使うことができて便利でした。
Gitnpm をブラウザ上でも使えるので、ちょっとした変更にはiPadで楽に作業ができてよかったです。

2

前回の執筆時には、textlint/textlint が途中で導入され、これが便利だったので、今回は特集リポジトリを作った段階で、初手で導入しました。
せっかくなので、もっと進んだ使い方にしたいなと思って、GitHub Actions用の yutailang0119/action-textlint を作りました。

3

今回の執筆では、2回目にしてかなり正確に分量を調整できて、我ながら驚きました。
しかも、これは担当した2章分両方でのことです。

もちろん、この後にはレビューや校正を経て、リライトや分量調整は再度行っています。

謝辞

一緒に書いてくれた id:cockscomb id:kouki_dan のお二方、ありがとうございました!

編集長の 稲尾さん を始めとした編集部の皆様、今回もありがとうございました!

最後に

2021/2/22 (月) 発売 WEB+DB PRESS Vol.121 を、よろしくお願いします!

*1:URLはまだ404だけど、たぶんこれのはず

2021/01/19

大きな病気などなく、本日1月19日で28歳を迎えました。
もう若手とは言えなくなって参りました。

昨年は世界が大きく変わり、自分自身にも良いこと悪いこと、いろいろとありました。

28歳の抱負は「地道」にしました。
飛躍などの大きな目標からは一旦離れて、これからを考える時間に充てようと思います。

去年全く会わなかった方も多いですが、今年も1年よろしくお願いいたします。

恒例のWishlist です。
よろしければ、お待ちしております。

Apple SoC Mac (M1) に合わせて大掃除 🦜 #はてなエンジニアアドベントカレンダー

これは はてなエンジニア Advent Calendar 2020 25日のエントリーです。
昨日は id:hitode909 さんで、Perlアプリケーションの依存モジュールの更新についてWEB+DB PRESS vol.120のPerl Hackers Hubに寄稿しましたでした。
誕生日おめでとうございます🎉
最終日を担当するのは、アプリケーションエンジニアの id:yutailang0119 です、こんにちは。
クリスマスなど関係なく、掃除の話をします。

2020年は、Apple Silicon (以下、Apple SoC) Macが発売された歴史的な年になりました。
記念品なので、もちろん買いました。
10年ぶりにMacBook Airです。

f:id:yutailang0119:20201224230615j:plain

プログラミングを始めていない期間も含めると、MacがメインPCになってからの時間がWindowsよりも長くなっています。
プログラミングでの用途がメインになってからも、構成は変遷してきましたが、M1 Macでまた環境が変わったので、大掃除の状況をまとめようと思います。

ちなみに自分はMaciPhoneすべてで、前の端末からデータ移行せずに、更地からのセットアップする派です。

環境

掃除したもの

iTerm2

最初にRosetta 2の挙動確認のためにTerminal.appを使っていたところ、これでいいかという気持ちになって、Terminal.appで暮らしています。
iTerm 2の機能を使いこなせていたわけではなかった。
今の所の不満点は、開いたタブの縦配置ができない点くらい。
そのうち、他のマシンとの違いが気になってiTerm 2に揃えるかもしれません。

Rosetta 2で起動するかは、アプリ起動時のみ切り替わるので、 arm64x86_64 環境の切り替えのために、iTerm 2もインストールして使い分けるのはありかも。
↓はTerminal.appをちょっとハックして、2つを同時利用する例。

fish

はてなに入社したタイミングの環境見直しで、それまで使っていたzshからfishに移行しました。
正直なんとなくで、カラフルでオシャレだし使ってみよう、くらいの感覚でした。
fishには十分に満足しているのですが、みなさんご存知の通り、macOS Catalinaからデフォルトシェルがzshになったので、どこかで戻ろうかなと思っていました。
ちょうど、今秋に業務PCの変更もした *1 タイミングで、zshに戻ってみています。
Apple SoC関係なしにzshでいいやと思っているけど、見た目のカスタマイズが滞っていて、Intel Macではfishもたまに起動しています。

Karabiner-Elements

キーボード配列はUSを使っていて、左右の⌘キーにen/ja切り替えを割り当てていました。
(capas lockのオフも有効になっているが、こちらはついで)
今回のM1モデルのキーボードでは、左下のfnキーにグローバル記号も印字され、入力切り替えが割り当ててられているので、Karabiner-Elementsが不要になりました。
微妙なラグやたまにトグルが効かなくなって再起動してたりの不便さはあります...*2
iOS/iPadOSのソフトウェアキーボードやiPad用のMagic Keyboardでも、左下に入力切り替えが配置されているので、これに慣れたい。

これまでのIntel Macキーボードにはこの設定はないのかと思っていましたが、このエントリー書いている際に、キーボード設定の Press Fn key to に指定できることに気づきました。
Karabiner-Elementsから卒業できそうです。

Google IME (Google日本語入力)

いい機会なので、ついに卒業しました。
Appleのライブ変換に慣れなかったけど、流石に1ヶ月もすると慣れてきた。

Visual Studio Code (VS Code)

VS Codeをインストールせずに暮らせています。
これまでのVS Codeの用途の中で、小さい修正などはVimで完結できるので、まずは .vimrc を再整理しました。

プロジェクト全域を扱うために使っていたVS Code用途は、GitHubCodespaces でやってみています。
Codespcasesは、GitHubがホストするクラウド上でVS Codeの環境が使えるもので、ブラウザから利用できます。
たまに反応が悪いなと思うことはあったりするけれど、npm とか普通に動いているし、便利。
ここからローカルホスト立ち上げたりはできないだろうけど、TypeScriptでツール作ったり、日本語書く環境にしたりは問題ないです。

iPadからでも同じ環境が使えるので、かなりおすすめです。  

新たに入れたもの

iOSアプリを使えるようになって、いくつかのアプリを入れてみたけど、正直まだ使いこなせていないです。
自分が作ったアプリが動くのは感動しました

まとめ

年末とApple SoC Macということで、大掃除と称して、環境の整理をしました。
M2以降のMacBook Proをメイン機にするつもりでストレージは256GBのままにしたで、できるだけ最小構成にしているので、ストレージは増やしておけばよかった。
Apple SoCにおすすめのアプリやツールがあれば、ぜひ教えてください。

今年もお疲れさまでした。

*1:業務はまだ Intel CPU

*2:再現ケースが作れていないので、何が原因かわからない