LoginSignup
3
5

More than 5 years have passed since last update.

Pythonスクリプトの互換性改善だけでもオープンソースに寄与できる

Last updated at Posted at 2018-04-29

git からオープンソースのライブラリを見つけてgit clone (あるいはfork) する。
そのライブラリが役に立つと感じたら、ちょっとした貢献がしやすくなった。

以下、Pythonの例で述べる。

PEP8で推奨されている書き方にそろえていくこと

pylint の出力が減るようにスクリプトのフォーマットを改善する。
Spyder統合環境の場合:
[Source][Run static code analysis]を実行し
[Static code analysis]のtabに表示された"Convention"の指摘項目を減らしておく。
"=", "<" の前後の半角スペースの数をそろえておくといったことも、
そのソースコードのメンテナンスをしやすくすることにつながっていく。

Python2.7 固有の部分が多すぎてpython 3では動かないスクリプトを改善する

# Python 2/3 compatibility
from __future__ import print_function

print 文を
print() 関数の呼び出しに置き換える。

以下のコードをスクリプトの冒頭部分に書き加えます。
from __future__ import division

>>> 1/2
0

となることを期待して書いてあるコード(切り捨てが期待されているコード)は、
Python3では1/2 を 1//2 に書き換えます。
このようにしてPython3への移行がしやすくなるようにコードを直していきましょう。

Python3前提で書かれているスクリプトをpython2.7でも利用できるように改善する。

ここでも、次のようなささいな変更
(Python3に移行したいとは思っているが、あまり広範囲の部分でPython2.7が使われ過ぎているので、簡単にはPython3に移行できないことがあるのです。)

# Python 2/3 compatibility
from __future__ import print_function

fork したgit でcommit と push

そのような変更を加えたものが動作することを確認したあとで、fork したgithub上でcommit し、 push する。

pull requestを作る。

 オリジナルの作者の方が読める言語だけで書く。

pull requestが採用されるのを待つ

そのような改善が、git 以降の時代はとてもやりやすくなっている。

関心をもったスクリプトが、使い勝手がよくなってさらに普及するように、手助けすることができる時代になっている。

付記:

from __future__ import absolute_import
from __future__ import division

についても記述すべき。

>>> 1/2
0

となることを期待して書いてあるコードは、
Python3では

>>> 1/2
0.5

という値が返ってくるので、書き換えが必須になっています。
Python2.7, Python3に共通の書き方は'//' 演算子を使う書き方です。

>>> 1 // 2
0
3
5
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
3
5