class: middle, center # Julia 言語の普及の課題 `Satoshi Terasaki @ AtelierArith` --- # この資料について * この資料は何? * [数学と物理におけるJuliaの活用](https://akio-tomiya.github.io/julia_imi_workshop2023/) でのチュートリアル講演資料で書ききれなかった個人的ノートです. ``` 更新日: 2023-07-10T03:59:50.192 ``` お勉強会資料はこちら `TODO 後で追記` --- # Julia 言語の普及に関する国内の課題 * 基礎研究と応用研究の橋渡しをできる人的リソースの不足 * 計算機を取り扱う文化・環境 * 物理学、数学に関する教育文化・環境 * 当該の分野に習熟したソフトウェア開発者 * 書きっぱなしではなくソフトウェア財産を継続的する文化・環境 * チームによる開発経験 * 特定の知識をもった人が自然ニョキニョキと発生するものではないので各分野で人を育てていくしかない。育つ文化・環境を作るしかない。 * 単に使うだけでなく,使いこなす * 作る,造る,創る側の立場に移行できる仕組みが望まれる。 --- # 学習リソース * 公式ドキュメント * 技術投稿プラットフォーム * Qiita * Zenn * GitHub, GitLab * YouTube * 検索エンジンを使う `<調べたいこと> julia`, `<調べたいこと> .jl` * ブラウザの言語設定を英語にすると不要なノイズを取り除ける. --- # コミュニティ * [Community](https://julialang.org/community/) * 日本ユーザ * [JuliaTokai](https://juliatokai.connpass.com/) * [jl.dev](https://jldev.connpass.com/) * Twitter のハッシュタグ `#Julia言語`, `#JuliaLang`, コミュニティ --- # 質問・バグレポートのコツ (1) * 自分の置かれている状況を(その場にいるとは限らない)他者に必要かつ十分な情報を伝え共有する必要がある. * 自分の保有している計算機(パソコン)が相手が持っているものと一致しないかもしれない * A さん: 「macOS(M1) 上で動かしてるんだけれど (Julia 1.7 で) 動かない」 * B さん: 「macOS(Intel) 持ってるけれど(Julia 1.9.1 で)動くけど?」 * ↑ の カッコで囲まれた部分の差がエラーの理由になってるかもしれない * 対面でのコミュニケーションだと抜けている主語,状況が当事者の中で補えるかもしれない。見えない相手,特にインターネット上でテキストコミュニケーションをする際は相手が補完することを期待してはいけない。 * 特に専門に入った学生・大学院生の場合,必ずしも相手が自分と同じ専門分野とは限らないということを忘れてしまいがち。 --- # 質問・バグレポートのコツ (2) * 自然言語での質問は自然言語でのレベル・精度でしか解決できない * コードの疑問はコードを提示して解決を図るべき * 実装・ソースコードの解像度で議論しよう * エラーメッセージは読もう * プログラムは思った通りに動くのではなく書いた通りに動く. * 試行錯誤をサボらない * 文句を言うのは誰でもできる.手を動かせたものが強くなる. * 切り分けをする * このケースでは OK * このケースでエラーが起きる --- # 質問・バグレポートのコツ (3) * 頼むから MWE を出して!!! この部分を意識しないと助けたくても助けられない。 * [Please read: make it easier to help you](https://discourse.julialang.org/t/please-read-make-it-easier-to-help-you/14757) * Do your best to make your example self-contained (“minimal working example”, MWE), so that it runs (or gets to the error that you want help with) as is. * 加えて下記の状況は書いてほしい * 動作環境(例えば OS) * Julia のバージョン、ライブラリのバージョン * 期待される動作 * 現状起きている動作 (現状起きているエラー、スタックトレース全部) * エラーが起きる状態をまとめたリポジトリを共有するのもありかも? --- # 質問・バグレポートのコツ (4) * エラーメッセージを検索エンジンに入れる * 過去に議論された Issue を読む * 議論は当事者の良心・ボランティアベースで行われるものなので必ずしも満足する答えが得られない可能性がある.最終的には自分で頑張るしかない. * 長い時間相談に乗って欲しいのであればそれなりの対価(≒お金)を支払うことを検討するべき. * 質問者は困ってるのかもしれないが,回答者は答えなくても損をすることはないので. --- # 質問・バグレポートのコツ (5) * 無いならつくればいい * 使う側から作る側立場に立つと新しい世界が見えてくると思います * 作っている人の興味の範疇が利用者のそれと一致しているとは限らない * 自給率を上げていくと良いですね * つくる側に立たず「xxx はツールだ」と割り切るのもアリだが・・・ * 乱暴に使わず正しい使い方(ベストプラクティス)を習得してほしい * 開発者が舌を巻くぐらいに使い倒してほしい --- # 研究室単位でコミュニティの形成 * 教員(研究室の運営者)・先輩・後輩間で技術を教えあう仕組みがあるといいと思う * IT リテラシーの向上、ソフトウェア開発の文化の導入 * 学生の指導はちゃんとしたほうがいい。 * 学生は指導者が思っている以上に困っている * スーパーコンピュータの使用レクチャーの時にこういう質問があると本質的な議論ができない * `鍵作ってません` * `nano/vim/emacs ってなんですか?` * `cd <特定のパス>` の仕方がわからない * `git ってなんですか?` * ソフトウェア・技術を育む文化をつくる仕組みがあるといいと思う * 指導者が難しければ外部の人間を臨時で人を雇うなど対応すると良い --- # Python との連携 * 産業では良くも悪くも Python が普及している * Python で十分な運用もあるが Python/C++ の二つを運用する two-language problem を引き起こしている * とはいえいきなりスクラッチで Julia で実装するのもコストがかかる。 * Python の資源を使うのは PythonCall.jl/PyCall.jl などエコシステムが充実している * juliacall/pyjulia を使えば Python から Julia を使うこともできる * PyTorch の DataLoader 内部で Julia のロジックを入れる * FastAPI 上でレスポンスを返す際のロジックに Julia の資源を呼ぶ --- # 今までのトーク集 * このスライドを書いている人の [勉強会資料置き場](https://terasakisatoshi.github.io/MathSeminar.jl/slideshow/) * [PythonCall.jl 周りのお話](https://terasakisatoshi.github.io/Cerastes.jl/#1) --- class: middle, center # 以上