乙Py先生のプログラミング教室

乙Py先生のプログラミング教室
初学者のためのプログラミング学習サイト

今回はアプリをリリースしたので
そちらのご報告です。

解説動画はこちら



アプリについて


今回作成したアプリはこちらです

・チャンクde英会話

iOS
AppStore


Android
Googleplay

良かったら使ってみてください


アプリの作成方法

Flutterを用いて作成しました

Flutterにした理由は
 1.iOSとAndroid両対応であること
 2.学習コストが低い
 3.文献が豊富で有る

以上の理由からFlutterにしてみました。

それ以外にもアプリを作る方法は
いくらでもありますが、今回は
Flutterを使ってみました。

開発言語がDartになるので
1から勉強することになります。

また、コードやデータなどの大半は
ChatGPTを用いて作成していますので
実質ChatGPTに頼れば
アプリの開発は容易かと思います。

学習開発の期間で2ヶ月くらいでした。



リリースについて

コードを実装しシミュレータや
実機でのテストが終わったら
ビルドを行なってアプリを作り
リリース準備ができます。


その前にアプリストアのアカウントがないと
そもそもリリース出来ないので
アプリストアのアカウント取得が必要です。

これもそこそこ手間と時間が掛かります。

リリース登録をしたら審査が行われますが
審査に通らなければビルドからやり直し
審査に通るまでの繰り返しです。

審査に通ったらようやく
リリース、アプリ配信ができる様になります。

リリース作業を始めてから
アカウント登録とアプリリリースまでで
大体1ヶ月くらい掛かっています。



Flutterについて

動画の方では少しだけ解説していますが
FlutterはiOSとAndroidの両方のアプリを
作成する事ができる開発フレームワークです。

Flutterをインストールしたら
VSCodeなどでコードを書き進める事が
できる様になります。

テストやビルドなども
Flutterコマンドを用いて行う形になります。

この辺りも
VSCodeと合わせておくと
開発が楽になるかなと思います。

どんな感じなのかは
動画の方で解説していますので
参考にしていただければと思います。


最後に

これからアプリ開発を行いたい方にとっては
色々な選択肢があると思いますが
Flutterを使ってアプリを開発したい方が
増えていただけたら幸いです。

Python言語の解説と共に
アプリ開発の方も進めていきますので
要望などあれば是非コメントいただければと思います。

それでは。

プログラミング未経験の方のための
プログラミング学習講座を作成しました

その名も
「1時間で学べるPythonプログラミング」


講義動画はこちら




この講座は初学者の方が
短時間でPython言語を学ぶことのできる
プログラミング学習用の講座です

プログラミングが分からないない方は
Python言語を通じて
プログラミングの基礎を学習できます

講座は動画に加えてGoogle Colabを用いて
手元でコードを動かすことのできます
コードがどう動くのかを確認をしながら
進めていってください

資料はここ:
Google Colabの資料


00:00 1.はじめに
02:13 2.導入方法
02:55 3.GoogleColaboratoryの操作方法
06:19 4.Pythonの計算の基礎
27:27 5.Pythonの制御文
42:14 6.Pythonのクラス
49:11 7.Pythonのその他構文
64:30 8.まとめ

なおPythonチートシートを作成しています。

コーディングに迷った際に役に立ち

WEB検索する時間を無くして

作業時間を効率化できます。

note
Pythonチートシート


 


今回は円周率を計算するアルゴリズムを使って
馬鹿でかい円周率を行けるだけ求めてみました

解説動画はこちら





まず最初に問題ですが
円周率の小数点10000桁目の数値は
何になるでしょうか?

こんな問題を解く場合に
馬鹿でかい円周率を求める方法があります。



ガウス=ルジャンドルのアルゴリズム
(Gauss–Legendre algorithm)


円周率を計算する際に用いられる
数学の反復計算アルゴリズム(算術幾何平均法)

円周率計算のアルゴリズムの中でも
トップクラスの収束速度なので、精度が良いらしいです。

アルゴリズムは

スクリーンショット 2024-11-09 16.46.34

となります。


円周率を求める関数のコード

計算精度を設定して、その桁数までを求めていく感じになります。
例えば円周率の小数点100桁まで求めたかったら
計算精度を110-150 とかに設定します。

また反復計算の回数は
log2(x) 以上の回数が必要になるので
計算精度を上げる場合は、反復計算回数も
あわせて上げてください(ここでは20回にしてます)

from decimal import Decimal, getcontext

# 計算精度の設定(小数点以下1万桁以上の精度を確保)
getcontext().prec = 15000

# ガウス=ルジャンドルのアルゴリズムの実装
def gauss_legendre_pi():
    # 初期値設定
    a = Decimal(1)
    b = Decimal(1) / Decimal(2).sqrt()
    t = Decimal(1) / Decimal(4)
    p = Decimal(1)

    # 十分な収束回数で反復計算(math.ceil(math.log2(x))以上)
    for _ in range(20):
        a_next = (a + b) / 2
        b = (a * b).sqrt()
        t -= p * (a - a_next) ** 2
        a = a_next
        p *= 2

    pi_approx = ((a + b) ** 2) / (4 * t)
    return pi_approx

# 円周率の計算
pi_approx = gauss_legendre_pi()
pi_str = str(pi_approx)

# 1万桁目の数値を取得
k = 10000

# 結果を出力
print(f"円周率の小数点以下{k}桁目の数値: {pi_str[k+1]}")
9




まとめ

このPythonコードであれば小数点10万桁くらいまでは余裕です。

それ以上になるとハイスペックな計算資源が必要で
加えてもっと効率の良い高精度計算専用のライブラリを用いたり
並列分散処理などを実装する必要が出てくるかもしれません。

ちなみにこのアルゴリズムでは
2009年に筑波大学の高橋大介という方が
2兆5769億8037万桁
という記録を出しているので
そこから15年以上経った今なら
もっと馬鹿でかい桁まで計算が出来るかもしれません!!

デカいって、いいですよね
男のロマン

どなたか馬鹿でかい円周率の計算
挑戦してみませんか

今回はここまでです
それでは。

 

このページのトップヘ