投稿一覧

16-20件 / 78件

急がば回れ?

現在、投稿予定の記事があります。その中でまとめると記事の構成が複雑になってしまうので、別個一つの記事としてまとめてしまおうということで投稿したのが先程投稿した記事です。肝心の数値計算の記事が全然投稿できていませんが、そのうち投稿しますので・・・。 ところで、先程の記事は大体1時間強で執筆しました。個人的にはもう少し速く書き上げたいところです。一番何に時間がかかっているかというと、数式の入力です。 当サイトはMathJaxというJavaScriptのライブラリを組み込んでLaTeX形式で数式を入力・表示できるようにしてあるのですが、通常のLaTeXと微妙に書き方が違う。そのせいでエラーが頻発し、その修正作業に多くの時間がかかっています。数式の記述がもっと効率よくできればスムーズに投稿ができるはず。記事の投稿よりもいい感じの数式作成ツールを作ることを優先した方がいいのかもしれません。明日さっそく作ってみようかな…。 それでは本日はこの辺で。

pageview 198

個人HP開設!

2ヶ月半ほど当サイトを作り続け、やっと開設することができました!ここまで短かったようで長かった・・・。 日記記事はこれから毎日書いていく予定です。毎日更新がしたいのと、文章を書かないと作文力が落ちていくので・・・もちろん興味がない方は日記以外の記事だけ読んでいただければと思います。 私のことが知りたい方は当サイトの「自己紹介」を読んでください、いればですけど・・・。今後ともよろしくお願いします。 それでは本日はこの辺で。

pageview 175

【備忘録】uvによるpython実行環境の構築

uvとは? Pythonの開発環境を快適に整えるための新しいツールです。 これまでPythonでは、パッケージのインストールや環境の切り替えに複数のツール(pip、venv、poetry、pipxなど)を使い分ける必要がありました。uvはそれらの機能をひとつにまとめ、より速く、より簡単に、そして再現性の高い開発環境を作れるようにしてくれます。以下は主な特徴です。 とても速い動作:uvはRustという高速なプログラミング言語で作られており、従来のツールよりもパッケージのインストールや環境構築が圧倒的に速くなります。 環境の自動管理:プロジェクトごとに専用のPython環境を自動で作ってくれるので、他のプロジェクトと混ざる心配がありません。 わかりやすい依存関係の管理:「このプロジェクトには何のライブラリが必要か?」を記録する仕組みがあり、コマンドひとつで環境を再現できます。 ツールの安全な実行:コード整形ツールやテストツールなどを、他の環境に影響を与えずに使うことができます。 キャッシュによる効率化:一度ダウンロードしたライブラリは使い回せるので、複数のプロジェクトでも無駄がありません。 Windows・Mac・Linuxに対応:どのOSでも同じように使えるので、チーム開発にも向いています。 このように、uvはPythonを使った開発をより快適にしてくれるツールです。初心者にも扱いやすく、複雑な設定を減らしてくれるので、「環境構築でつまずきたくない」「もっとスムーズに開発したい」と感じている方には特におすすめです。 uvのインストール Python付属のパッケージ管理ツール、pipによるインストールができます。 copy_allpip install uv Python実行環境構築 Pythonのバージョン、環境名を指定して仮想環境を構築します。 copy_alluv venv -p <Pythonのバージョン> <実行環境名> 以下はPython3.12を利用して.venv312という仮想環境を構築する例です。 copy_alluv venv -p 3.12 .venv312 仮想環境を有効化する 構築した仮想環境で処理の実行やパッケージのインストールをするには、仮想環境を有効化する必要があります。 以下はLinux/Macの例です。 copy_allsource .venv312/bin/activate 続いてWindowsの例です。 copy_all.\.venv312\Scripts\activate 逆に、仮想環境を無効にするときは以下のコマンドです。 copy_alldeactivate パッケージのインストール 以下のコマンドで任意のパッケージがインストールできます。 copy_alluv pip install <パッケージ名> requirements.txtという、インストールするパッケージの(バージョンと)リストが記述されたファイルを元にインストールする場合は、以下のコマンドです。 copy_alluv pip sync requirements.txt

pageview 154

【Flutter】画面遷移の方法(go_router)

概要 パッケージ go_router を用いて画面遷移する方法を備忘録としてまとめます。ルビーdogさんの動画を参考にしています。 全体像 以下のような流れで画面遷移を作ることができます。 go_routerをインストールする 画面のクラスを定義する アプリ全体のクラスでgo_routerによる画面遷移のルールを定義する go_routerをインストールする Flutterプロジェクト直下にある pubspec.yaml を編集します。具体的には、以下の画像の赤線部分のように、dependencies に go_router を追加します。 図1. pubspec.yaml 画面のクラスを定義する 画面のクラスを定義します。main.dart と同じ階層に page1.dart, page2.dart を作成し、内容を以下のようにします。 copy_all page1.dartimport 'package:flutter/material.dart'; import 'package:go_router/go_router.dart'; class Page1 extends StatelessWidget { const Page1({super.key}); // 画面2に進む処理 void push(BuildContext context) { context.push('/2'); } @override Widget build(BuildContext context) { // 画面上部のバー部分 final appBar = AppBar( backgroundColor: Colors.yellow, title: const Text('画面1'), ); // 進むボタン final pushButton = ElevatedButton( onPressed: () => push(context), style: ElevatedButton.styleFrom(backgroundColor: Colors.yellow), child: const Text('進む'), ); return Scaffold( appBar: appBar, body: Center( child: Row( mainAxisAlignment: MainAxisAlignment.center, children: [ pushButton, ], ), ), ); } } copy_all page2.dartimport 'package:flutter/material.dart'; import 'package:go_router/go_router.dart'; class Page2 extends StatelessWidget { const Page2({super.key}); // 画面1に戻る処理 void back(BuildContext context) { context.pop(); } @override Widget build(BuildContext context) { // 画面上部のバー部分 final appBar = AppBar( backgroundColor: Colors.cyan, title: const Text('画面2'), ); // 戻るボタン final backButton = ElevatedButton( onPressed: () => back(context), style: ElevatedButton.styleFrom(backgroundColor: Colors.cyan), child: const Text('戻る'), ); return Scaffold( appBar: appBar, body: Center( child: Row( mainAxisAlignment: MainAxisAlignment.center, children: [ backButton, ], ), ), ); } } page1.dart では画面を進める処理として、context.push('$遷移先パス')が使われています。page2.dart では画面を戻す処理としてcontext.pop()が使われています。今は2画面のみの画面遷移を考えているので出てきていませんが、3画面以上の画面からなるアプリで、例えば「画面1から画面3に遷移する」といった画面遷移を考えるときにはcontext.go('$遷移先パス')が使えるとのことです。 それと、いずれのファイルでもimport 'package:go_router/go_router.dart';の一文を先頭に書き足すのを忘れないようにしましょう。 アプリ全体のクラスでgo_routerによる画面遷移のルールを定義する 先程作成した page1.dart, page2.dart と go_router のパッケージをインポートし、アプリ全体のクラス(ここではMyAppクラス)を次のように書きます。 copy_all main.dartimport 'package:flutter/material.dart'; import 'package:go_router/go_router.dart'; import 'package:test/page1.dart'; import 'package:test/page2.dart'; void main() { runApp(MyApp()); } class MyApp extends StatelessWidget { MyApp({super.key}); final router = GoRouter( // アプリ起動時の画面を指定するパス initialLocation: '/1', // パスと画面の組み合わせ routes: [ GoRoute( path: '/1', builder: (context, state) => Page1(), ), GoRoute( path: '/2', builder: (context, state) => Page2(), ), ]); @override Widget build(BuildContext context) { return MaterialApp.router( routeInformationProvider: router.routeInformationProvider, routeInformationParser: router.routeInformationParser, routerDelegate: router.routerDelegate, ); } } ポイントは2点です。1点目は、 copy_allfinal router = GoRouter( // アプリ起動時の画面を指定するパス initialLocation: '/1', // パスと画面の組み合わせ routes: [ GoRoute( path: '/1', builder: (context, state) => Page1(), ), GoRoute( path: '/2', builder: (context, state) => Page2(), ), ]); の部分。routes のリストの要素である GoRoute のそれぞれがパス(path)と画面(builder)の組み合わせの定義を表します。path では画面を表すパスを引数として書き、builder では(context, state) => Xxxx()の形でどのクラスによって画面を作るかを指定します(Xxxx は画面を定義するクラス)。2点目は copy_all return MaterialApp.router( routeInformationProvider: router.routeInformationProvider, routeInformationParser: router.routeInformationParser, routerDelegate: router.routerDelegate, ); の部分。go_router を使う場合、この部分は以上のような決まった書き方をするとのこと。コピペで使いまわせばいいですね。 まとめ go_router を用いた画面遷移について備忘録としてまとめました。

pageview 149

【謝罪】トラブル対応で当サイトのアクセスを禁止していました

当サイトのメンテナンスでトラブルが発生したため、2日ほど外部からのアクセスを遮断していました。当サイトの更新を毎日見に来てくださっていた方がいらっしゃったようなら、何も言わずに申し訳ありません。 当サイトはPythonのDjangoというフレームワークを用いて作成されています。投稿通知を外部サイトにPing通信する仕組みを追加したのですが、そこでかなり沼にハマりました。これ、記事にしようかな。。 ところで、ルヴァンカップ決勝のチケット、落選してしまいました…ショックです。リセールで購入できることを祈るしかないです。絶対に国立に行きたいんだぁ…お願いします…。 今後サイトのメンテナンスをする場合は情報共有をしようと思います。。当たり前ですね。。本当にすみませんでした。

pageview 147