0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

利用パッケージのGithub RepoでIssue作成、依存パッケージ対する理解不足を実感できた

Last updated at Posted at 2025-11-20

公開パッケージのリポジトリに対してIssue作成

私は普段の個人開発において、FlutterでAndroidアプリケーション開発を行っています。

どの言語・フレームワークにおいてもバージョンアップがあります。

今回の記事では、バージョンアップ時に発生して不具合について、RepositoryのIssueとして起票することで得られたことをまとめてみました。

公開リポジトリに対するIssue起票が気になる方へ

今回、Flutterが関係する内容にはなります。
Flutterの開発経験が多少でもある方が内容は入ってきやすいかと思いますが、
「公開リポジトリに対するIssue起票」という点では、言語・フレームワーク問わずある話なので、そういったことに興味がある方に読んでいただければ、嬉しいです。

Flutterのバージョンアップ対応

早速本題に入りますが、
ついこの前(2025/11/13)、リリースがあり、それぞれ以下のバージョンになりました。

  • Dart:3.10
  • Flutter:3.38

このアップデートにおいて、Dot shorthandsに関する対応が取り込まれました。

画面に表示する際のプロパティ値を簡潔に記載できる、というものです。
早速この話を自分のコードに導入しました。

導入前後で以下のように書き方が変わります。確かにスッキリしています。

// Without shorthands
Column(
  mainAxisAlignment: MainAxisAlignment.start,
  crossAxisAlignment: CrossAxisAlignment.center,
  children: [ /* … */ ],
),

// With shorthands
Column(
  mainAxisAlignment: .start,
  crossAxisAlignment: .center,
  children: [ /* ... */ ],
),

Issueを起票するまでの流れ

上述したFlutterのバージョンアップ、Dot shorthandsのコード実装を終え、
Androidアプリケーションで動かすために準備を進めていたところ、エラーが発生しました。

アプリ作成に利用しているパッケージがバージョンアップに対応できていないと思い、対象パッケージでIssueを起票しました。

ビルドは問題なし

以下のようにapkファイル作成のためにビルドを行いましたが、ここでは特に問題ありません。

flutter build apk --release

build_runnerでコード生成

build_runnerについて、ざっくりとした説明になりますが、自動でコード生成を行う際に必要となるbuilderの役割を担います。
(コード生成と記載しましたが、生成AIとは関係ありません。)

以下利用例の一部です。

  • Json Serialization機能
  • Data Class作成
  • Mock作成

コマンド実行でエラー発生

dart run build_runner build --delete-conflicting-outputs

実行すると、以下のようにエラーとなってしまいました。

image.png

E envied_generator:envied on lib/shared/widgets/dialogs/order_confirmation_dialog.dart:
63:37: This requires the 'dot-shorthands' language feature to be enabled.
85:40: This requires the 'dot-shorthands' language feature to be enabled.
0s envied_generator:envied on 188 inputs: 1 output, 187 no-op
0s source_gen:combining_builder on 188 inputs; integration_test/app_test.dart

今回私が作成するアプリにおいて、envied_generatorパッケージでエラーが発生しました。(環境変数読み込み関係のパッケージ)

requires the 'dot-shorthands' language feature to be enabled

と出力されているので、
run build_runner buildでオプションを設定すればいいようです。

オプションを付けて実行(-enable-experiment=dot-shorthands

dart run build_runner build --delete-conflicting-outputs --enable-experiment=dot-shorthands

'dot-shorthands' is now enabled by default; this flag is no longer required.
5s riverpod_generator on 188 inputs: 1 output, 187 no-op; spent 4s analyzing, 1s resolving
0s envied_generator:envied on 188 inputs: 1 output, 187 no-op
0s source_gen:combining_builder on 188 inputs: 2 output, 186 no-op
8s mockito:mockBuilder on 10 inputs: 5 skipped, 1 output, 4 no-op; spent 7s analyzing, 1s resolving

成功しました。
しかし今度はthis flag is no longer required.と出力されました。

この段階で、今回のFlutterのバージョンアップによって、利用パッケージ側の対応が追いついていないのかな?と思っていました。


その流れで、状況を一通り整理して以下のIssueを起票しました。
以下Issueの最初のコメントが今回記載した内容です。

Issueに対するコメントがきた!

すごい方から返信

当日のうちに返信が届きました。

以下の方からメッセージをいただいたのですが、Github Statsがすごい。

analyzerが古いだけだった

Looks like you're using an old analyzer dart-lang/sdk#61281 (comment). Simply upgrade it and nuke the cache and dart build folders.

上記の通りコメントをもらいました。

私のローカルのanalyzerのバージョンに関して、
今回コードで導入したdot-shorthandsに対応できる(正しく解析可能な)バージョンのanalyzerではなかった、という内容でした。

analyzerパッケージを確認

この調べる作業を通じて、
依存パッケージに対する理解といいましょうか、トラブルシューティングのための確認観点が1つ増え、レベルアップにつながる体験となりました。0

パッケージの基本的な部分を理解

VsCodeで開発を進める場合には、以下の通り拡張機能を導入します。
この拡張機能とanalyzerが連携をとって、開発のサポートをしてくれています。

Dart 3.9から試験導入

experiments.g.dartというファイルの中で、以下のコードがあります。

experimentalReleaseVersionというプロパティに記載の通り、試験的な利用ケースであっても、Dart SDKのバージョンが3.9.0以降でなければ利用できません。

static final dot_shorthands = ExperimentalFeature(
  index: 9,
  enableString: EnableString.dot_shorthands,
  isEnabledByDefault: IsEnabledByDefault.dot_shorthands,
  isExpired: IsExpired.dot_shorthands,
  documentation: 'Shorter dot syntax for static accesses.',
  experimentalReleaseVersion: Version.parse('3.9.0'),
  releaseVersion: Version.parse('3.10.0'),
  channels: ["stable", "beta", "dev", "main"],
);

Versions一覧の確認

上記のバージョンに関するコードと以下バージョンページから抜粋画像で判断できますが、
整理すると以下のようになります。

  • analyzer 8.2.0+: Dart SDK 3.9.0以上を要求し、dot shorthands機能をサポート
  • analyzer 8.1.1: Dart SDK 3.7.xをサポートしており、dot shorthands機能は未サポート

image.png

plugins

Support for analyzer plugins was added in Dart 3.10.

Dart 3.10からサポートされるようになった機能です。
analyzerパッケージを拡張して、カスタムの静的解析ルールやリント、コード補完などを追加するための仕組みのようです。

Mediumでは1つ記事が挙がっていましたが、もう少し情報が集まってきてから、試してみようと思います。

対応を進めよう

プロジェクトのパッケージ依存関係を確認

以下コマンドでバージョン最新化を行います。
他パッケージとの依存関係を考慮の上、可能な範囲で最新化を行ってくれます。

flutter pub upgrade

Resolving dependencies... (6.6s)
Downloading packages... (5.0s)
_fe_analyzer_shared 88.0.0 (92.0.0 available)
analyzer 8.1.1 (9.0.0 available)
analyzer_plugin 0.13.7 (0.13.11 available)
・・・ 以下略

3行目にある通りですが、
analyzer 8.1.1でした。先ほどの画像でいえば、ギリギリdot shorthands機能は未サポートなバージョンです。

8.2.0以上にするために

行った対応は大きく2点です。
これらを行って、バージョンが8.2.0となるか確認をしました。

  • 試験的に導入していたパッケージ削除
  • コメント指摘通り、cacheのクリア
    flutter pub cache clean
    flutter pub upgrade
    

pub upgradeの結果

cacheをクリア後、パッケージの再upgradeを行った結果が以下の通りです。
image.png

analyzer 8.4.1 (9.0.0 available)に更新されたので、dot shorthands機能をサポートしているバージョンまでupgradeできました。

コマンド再実行

dart run build_runner build --delete-conflicting-outputs

エラーは表示されずに成功しました。
image.png

まとめ

今回はFlutterのバージョンアップ時に出会ったエラーについて、Github RepositoryにIssueを起票しました。

結果的には私の環境の問題で、タイトルの通り、自分の理解不足だった訳ですが、こういう経験もしないとスキルアップできないので、良い経験になりました。

夏ごろから上記のページをしばしば見るのですが、勉強になることがあるので、そこは継続していきたいと思います。

ありがとうございました。

参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?