koogawa blog

iOS、Android、foursquareに関する話題

PHPカンファレンス福岡 2023 #phpconfuk に参加してきたよ

4年ぶりに開催されたPHPカンファレンス福岡に行ってきました。

phpcon.fukuoka.jp

今年で4回目の参加です。会場はもちろん福岡ファッションビル

オープニングトークには間に合わず!

今年もカンファレンスTシャツを頂きました。私が到着した頃にはもうMサイズしか残っていませんでした。大人気!

今年もこのTシャツを着てウロウロしていました

今年も素晴らしいセッションが盛り沢山でした。そのうちいくつかをピックアップしたいと思います。

福岡に来たらとりあえず食べる長浜ラーメン



伝えたい!オフラインのカンファレンスに参加するメリットと参加してから200%楽しむために実践してほしいこと

登壇者:kotomin_m さん

speakerdeck.com

ことみんさんによる発表です。カンファレンスに参加するメリットや、当日聞くセッションの選び方、カンファレンスで話しかけるときの鉄板フレーズ集など、初めてカンファレンスに参加する方にも優しいトークでした。私自身、コミュニケーションがあまり得意な方ではないので、具体的な会話例はとても参考になりました。

レガシー回避のPHP開発術:保守性の高いアプリケーションを作る方法

登壇者:hanhan1978 さん

speakerdeck.com

カオナビ富所さんによる発表です。

"レガシー回避のPHP開発術" というタイトルでしたが、技術的な内容というよりは、チームや組織の話が多かった印象です(個人的には良かった)。

45分のトークでしたが、スライドは200枚を超えており、富所さんの経験やノウハウが詰まった盛りだくさんの内容でした。

個人的に刺さったのは「改善しないと、改善されないんだよ?」 という耳が痛いワードや、「人間関係の再構築」に意外と時間がかかる、という内容でした。スライドが公開されたらぜひ読んでいただきたいです。(追記:スライド公開されました)

制約の力: 可能性を狭めるアプローチ

登壇者:shin1x1さん

speakerdeck.com

PHPの現場でおなじみの新原さんによる発表です。

  • 「可能性を狭める」つまり制約を与えることが、可読性やメンテナンス性の向上につながる
  • 制約を与えることで、ソフトウェア開発の複雑さを減らし、本質的な複雑さに立ち向かっていこう

という内容でした。

PHPといえば、次のような関数があった場合、

function add10($v) {
    return $v + 100
}

引数 $v には数値もBoolもセットできてしまいますが、「$v は数値である」という制約を与えるにはどうすればよいか?という具体例がわかりやすかったです。型宣言の無い時代のPHPしか触ったことのない自分にとっては、とても勉強になる内容でした。

型宣言の例以外にも、ライブラリの影響を限定する例など、まさにPHPの現場で活用できそうな内容でした。

さいごに

久々のオフラインイベント参加でしたが、会場の雰囲気やノベルティ配布など、やはり現地参加は良いもんだなーと改めて感じました

PHPカンファレンス関係者の皆様、今年も楽しいイベントをありがとうございました!

とても楽しかったよ!!

来年もまた会いましょう😄

はてなブックマークしたページをTwitterにシェアしてくれるアプレットを作りました

2023.4.26 追記:ブコメもツイートに含めることができるようになりました!すでにお使い頂いている方は、もう一度Connectから再設定してください🙇🏻

はてなブックマークTwitter連携が使えなくなってしまったので、IFTTTのアプレットを作りました。

使い方

ブックマーク時、コメントに「#tw」を入力することでTwitterにシェアしてくれます(#twは別のワードにカスタマイズ可能)

インストール

次のURLにアクセスし、Connectスイッチをオンにします。

ifttt.com

ツイートのトリガーとなる文字列 #tw は自由にカスタマイズできます。

Feed URLの (user_account) の部分を自分のアカウント名に書き換えてください。

デフォルトでは {コメント} / {ページのタイトル} {URL} という形式でツイートされますが、Tweet textを書き換えることで、ツイート本文をカスタマイズできます。

制限事項

  • IFTTTの仕様により、ブックマーク時のコメントはツイート本文に含めることができません -> 2023.4.26 コメントにも対応しました!
  • IFTTTの無料プランではツイート送信までに最大1時間の遅延が発生します
  • Twitter APIの仕様変更により、本アプレットが動作しなくなる可能性があります

2022年を振り返る

今年も色々あったなぁ

門川神社からの景色
宮崎県 門川神社から

そんなわけで、2022年を振り返ってみたいと思います。

仕事・スキル面

ブロックチェーン分野へ

今年の大きな変化として、技術分野をブロックチェーン領域へシフトした、というのがあります。Ethereum等は全く未知の分野でしたが、半年間でなんとかSolidity でスマートコントラクトを書けるぐらいまでにはなりました。自分が書いたコードでトランザクションが動き、ブロックチェーンにデータが書き込まれる体験は本当に面白いです。

12月にはNFT関連のプロダクトである「dango」もベータリリースしました。dangoはgiveaway*1をかんたんにするサービスです。当選後のNFT譲渡(Transfer)までサポートしているので、ぜひ使ってみてください !

dango.ooo

web3ハッカソンにも参加

11月には日本最大級のweb3ハッカソンが開催されるということで、私も参加しました。NFT関連のプロダクトを1番乗りで提出しましたが、残念ながら決勝進出はならず。しかし、なにより「参加」することに意義があったので良しとします。

久しぶりに勉強会で発表

ちょこちょこweb3コミュニティにも顔を出すようになり、Solidity-jp さん主催の勉強会に登壇者として招いて頂きました。私以外の登壇者の面々が豪華で、発表内容も非常にレベルが高いイベントでした。著名な方々に混じって登壇側に立てたのはとても良い経験になりました。

solidity-jp.connpass.com

Next.js

今年使い始めた技術としてNext.jsがあります。Next.jsはReactをベースに開発されたフロントエンドフレームワークです。私はReact未経験でしたが、チュートリアルがしっかりしているため、スムーズに使い始めることができました。

nextjs.org

また、Next.jsに慣れるためには、ひとつ個人でアプリを作ることが手っ取り早いということで、ひとつプロダクトもリリースしました。

NFT Trade スクショ
NFT Trade

残念ながらまったく使われませんでしたが、それも含めて勉強になりました。

会社でMVPを頂いた

ありがたいことに今年は全社MVPを頂きました🎉

評価してもらえる環境に身を置けることを大変嬉しく思います。これからもやっていきます💪

プライベート

ご当地ヒーロー映画に出演が決定

ご当地ヒーロー作品が映画化されるということで、出演者を県民から募集していることを知りました。演技経験は問わないそうなので、私もオーディションに応募してみることに。

演技は全くの未経験でしたが、なんとか1次選考を通過。最終選考は人通りも多い宮崎駅前の特設ステージで行われました。寒さと緊張で終始震えていましたが、見事に合格を勝ち取ることができました🎉

  • 台詞をしっかり暗記してきたこと
  • 大勢のプレッシャーに負けず、台詞が飛ばなかったこと
  • どこにでもいるお父さんっぽいこと

が勝因だったようです。

集合写真
天尊降臨ヒムカイザー THE MOVIE

ついに 映画のエンドロールに自分の名前が載る、という夢が叶いそうです🌟

ミニ四駆大会で優勝

今年の目標に「ミニ四駆大会で優勝する」というのがありましたが、4月に開催されたミニ四駆大会でついに優勝できました🏆

優勝したときの顔
念願の初優勝

かなり運が左右するレースでしたが、それも勝負のうちということで、良しとします。

来年の目標

さて、最後に来年の目標を宣言して締めたいと思います。

皆さま良いお年をお迎えください🎍

*1:NFTを他の人に無料プレゼントすること

Visibility for constructor is ignored. If you want the contract to be non-deployable, making it "abstract" is sufficient

SolidityとEthereumによる実践スマートコントラクト開発 ―Truffle Suiteを用いた開発の基礎からデプロイまで

👆こちらの本のサンプルを試していると大量に出てくる警告です。

constructor() public {
    _owner = msg.sender;
}

どうすればよい?

public を削除します。

constructor() {
    _owner = msg.sender;
}

solidity - Visibility for constructor is ignored. If you want the contract to be non-deployable, making it "abstract" is sufficient - Ethereum Stack Exchange

解説

Solidity 0.7.0からコンストラクターVisibility ( public / external ) は不要になりました。

Visibility (public / external) is not needed for constructors anymore:

Solidity v0.7.0 Breaking Changes — Solidity 0.7.0 documentation

本の執筆時点ではまだ必須だったのだと思われます。

Truffleで特定のファイルだけmigrateする

ethereum.stackexchange.com

Truffleのmigrationファイルは 2_wallet_factory.js のように数字が頭に付きます。例えば 2_ から始まるファイルだけmigrateするには以下のようにします。

truffle migrate -f 2 --to 2

If you intended this as a fallback function or a function to handle plain ether transactions, use the "fallback" keyword or the "receive" keyword instead.

SolidityとEthereumによる実践スマートコントラクト開発 ―Truffle Suiteを用いた開発の基礎からデプロイまで

👆こちらの本のサンプルを試しているとたまに出てくる警告です。

function () public payable {}

上記のようなフォールバック関数の定義箇所に原因がありそうです。

どうすればよい?

function() public payable {}

の代わりに

fallback() external payable {}

を使いましょう。

payable - Compiler solc expected a state variable declaration - Ethereum Stack Exchange

解説

Solidity v0.6.0からフォールバック関数の定義方法が変わったようです。

The unnamed function commonly referred to as “fallback function” was split up into a new fallback function that is defined using the fallback keyword and a receive ether function defined using the receive keyword.

Solidity v0.6.0 Breaking Changes — Solidity 0.7.4 documentation

夜9時には寝て朝5時に起きる生活を試してみてわかったこと

最近、夜9時には寝て朝5時に起きる、という生活を試している。なかなか良い感じなので、今回はその知見をメモしたいと思う。

そもそものきっかけは子供の寝かしつけ中に自分も寝落ちしてしまう問題が多発していたこと。やってみるとわかるが、暗い部屋で眠気に耐えながらじっと待つという行為は本当に疲れる。ひどい場合は1時間ぐらい寝てくれない日もざらにある。

・・・この時間、なんとかならないか?

そこで思いついたのが、それなら一緒に寝てしまおうというアイデアである。

実際に何度かこのスタイルを試してみてわかったメリットを挙げていく。

朝方はエアコンが要らない!

朝5時ぐらいの時間帯だと、ここ南国🌴宮崎でもエアコンが要らないぐらい涼しい。2〜3時間ぐらいだが、窓からの風だけで作業ができるのは身体にも環境にもよいのではないだろうか。

朝コーヒーを飲まなくなった

朝5時に起きるといっても夜9時には寝ているので、たっぷり8時間睡眠を取っているのである。そのため、眠気覚ましのコーヒーが不要になった。調子が良いときにはランチ後も眠くならないほどである。

作業の質が良くなった気がする

これはちゃんと計測したわけではないが、体感として深夜に頭を使うより、朝方に頭を使ったほうが効率が良い気がしている。眠っている間に頭が良い感じにリセットされているのかもしれない。

***

メリットばかりを挙げてきたが、もちろんデメリットもある。

例えば、夜9時以降に開催されるTwitterスペースでのイベントをリアルタイムで聴きたい場合は、どうしても起きている必要がある。私が大好きなF1なんかは夜11時スタートのレースもよくあるので、毎日この生活リズムを送るのは難しいのが現実である。

とはいえ、メリットが多いのは事実なので、夜9時に寝られる日は積極的に寝ていきたいと思っている😪